The xxx_IOControl function sends a command to the device.
BOOL xxx_IOControl( DWORD hOpenContext DWORD dwCode
PBYTE pBufIn DWORD dwLenIn PBYTE pBufOut DWORD dwLenOut PDWORD pdwActualOut );
Returns TRUE if the device successfully completed its specified I/O control operation, otherwise it returns FALSE.
An application uses DeviceIOControl to specify an operation to be performed. The operating system, in turn, invokes xxx_IOControl. The dwCode argument contains the input or output operation to be performed. I/O control codes are usually specific to each device driver, and are typically exposes to application programmers by means of a header file.
If the Ctrl registry value is defined for your device driver, the Device Manager calls xxx_IOControl right after it calls xxx_Init. It uses the value stored in the registry for the dwCode argument, and NULL for the pBufIn and pBufOut arguments. Your device might use this option to load other modules that require the basic device driver to be installed.