C.1.1 Parameters
• hDevice
[in] Handle to the device that is to perform the operation. Call the Cre- ateFile function to obtain a device handle.
• dwIoControlCode
[in] Specifies the control code for the operation. This value identifies the specific operation to be performed and the type of device on which the operation is to be performed. No specific values are defined for the dwIoControlCode parameter. However, the writer of a custom device driver can define IOCTL_XXXX control codes, per the CTL_CODE macro. These control codes can then be advertised, and an application can use these control codes with DeviceIoControl to perform driver- specific functions.
• lpInBuffer
[in] Long pointer to a buffer that contains the data required to perform the operation. This parameter can be NULL if the dwIoControlCode parameter specifies an operation that does not require input data.
• nInBufferSize
[in] Size, in bytes, of the buffer pointed to by lpInBuffer.
• lpOutBuffer
[out] Long pointer to a buffer that receives the operation.s output data. This parameter can be NULL if the dwIoControlCode parameter speci- fies an operation that does not produce output data.
• nOutBufferSize
[in] Size, in bytes, of the buffer pointed to by lpOutBuffer.
• lpBytesReturned
[out] Long pointer to a variable that receives the size, in bytes, of the data stored into the buffer pointed to by lpOutBuffer. The lpBytesRe- turned parameter cannot be NULL. Even when an operation produces no output data, and lpOutBuffer can be NULL, the DeviceIoControl function makes use of the variable pointed to bylpBytesReturned. After such an operation, the value of the variable is without meaning.
• lpOverlapped
[in] Ignored; set to NULL.
• Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
59 | AppendixC |