Load one or more drivers, then initialize and link them.
Declaration:
Copy Code | |
---|---|
AT_ERRCOUNT ACCUAPI IG_ISIS_drv_load_init_pipe( LPSTR lpszRoot, LPSTR lpszName, LPHISISDRV lphDriver, AT_MODE nFlags ); |
Arguments:
lpszRoot | Reserved for future use. Currently lpszRoot must be (char FAR *) 0. Future implementations may allow an application to specify where to find a driver or other special information. | ||
lpszName | Driver name string. Multiple drivers are specified as a single string with each driver name separated by a pipe symbol (?|?). Under Microsoft Windows, the extension .PXW is added to the specified name(s) automatically. | ||
lphDriver | A pointer to a buffer to accept the handle to the head (first) driver, which is returned when the driver loads. This handle references the pipe until the pipe is removed from memory with IG_ISIS_drv_unload_pipe | ||
nFlags |
A bit field containing one or more of the following values. Currently, the following bits of nFlags are defined:
|
Return Value:
Returns the number of ImageGear errors that occurred during this function call. If there are no errors, the return value is IGE_SUCCESS.
Supported Raster Image Formats:
This function does not process image pixels.
Remarks:
IG_ISIS_drv_load_init_pipe loads one or more drivers into memory, initializes each driver, and then links them into an ISIS pipe according to the order in which they are specified. This function is functionally equivalent to using IG_ISIS_drv_load, IG_ISIS_drv_init, and IG_ISIS_drv_link multiple times to load, initialized, and link all drivers in a pipe.
IG_ISIS_drv_load_init_pipe automates the process of loading, initializing, and linking drivers to form an ISIS pipe. For applications that require simple linear ISIS pipes with no special processing or minidrivers, IG_ISIS_drv_load_init_pipe is the easiest way to set up a pipe. Keep in mind that you can only reference the entire pipe, because lphDriver is a handle to the head driver only. Also, if your application requires that a pipe's flow be split, or that a callback be used to create a minidriver, or that drivers that remain in memory be linked and unlinked on the fly, then you must use the separate three-step process of calling IG_ISIS_drv_load, IG_ISIS_drv_init, and IG_ISIS_drv_link (and IG_ISIS_drv_split).
Your application must check that the specified driver was indeed loaded by IG_ISIS_drv_load before performing any other operations. If, for example, IG_ISIS_drv_init (which should be the very next function call) tries to initialize a driver that is not loaded, unpredictable results will occur, possibly including system crashes. |
Once run, all drivers in the pipe can be used by IG_ISIS_run_zone to process pages as specified by each driver. For example, an application could load, initialize, and link a scanner driver, a file compression driver, and a file writing driver to scan, compress and save a file in one operation. In this scenario, all three drivers are loaded, initialized, and linked with one function call.
IG_ISIS_drv_load_init_pipe works equally well on single drivers and portions of a pipe. You can, for example, load all of a pipe except the scanner driver, then load the scanner driver separately (so that it can be kept in memory). |
The foundation of using ISIS is understanding ISIS pipes. An ISIS pipe is a linked set of drivers that is established prior to any scanning or image processing. Once all desired drivers are linked, IG_ISIS_run_zone is used to invoke the pipe, causing each driver to perform its intended operation in turn. This pipe structure requires that the desired functionality be implemented as drivers, and allows large image files to be processed without copying the image data from one full-page buffer to another. The result is much faster and more efficient than alternative image processing schemes.