FSCTL_GET_WOF_VERSION控制代码
FSCTL_GET_WOF_VERSION IOCTL) (I/O 控制代码用于查询用于支持特定提供程序的驱动程序版本。
若要执行此操作,请使用以下参数调用 FltFsControlFile 或 ZwFsControlFile 。
BOOL
WINAPI
DeviceIoControl( (HANDLE) hDevice, // handle to device
(DWORD) FSCTL_GET_WOF_VERSION, // dwIoControlCode
(LPDWORD) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
(LPDWORD) lpOutBuffer, // output buffer
(DWORD) nOutBufferSize, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure
参数
hDevice [in]:设备的句柄。 若要获取设备句柄,请调用 CreateFile 函数或类似 API。
dwIoControlCode [in]:操作的控制代码。 对此操作使用 FSCTL_GET_WOF_VERSION 。
lpInBuffer:操作的输入缓冲区。 这是指向 WOF_EXTERNAL_INFO 结构的指针。
nInBufferSize [in]:输入缓冲区的大小(以字节为单位)。 此 大小 应为 (WOF_EXTERNAL_INFO) 。
lpOutBuffer [out]:操作的输出缓冲区。 这是指向 WOF_VERSION_INFO 结构的指针。
nOutBufferSize [in]:输出缓冲区的大小(以字节为单位)。 此大小应 为 (WOF_VERSION_INFO) 。
lpBytesReturned [out]:指向变量的指针,该变量接收存储在输出缓冲区中的数据的大小(以字节为单位)。
如果输出缓冲区太小,调用将失败,GetLastError 返回ERROR_INSUFFICIENT_BUFFER,lpBytesReturned 为零。
如果 lpOverlapped 为 NULL,则 lpBytesReturned 不能为 NULL。 即使操作不返回任何输出数据且 lpOutBuffer 为 NULL,DeviceIoControl 也会使用 lpBytesReturned。 执行此类操作后,lpBytesReturned 的值毫无意义。
如果 lpOverlapped 不为 NULL,则 lpBytesReturned 可以为 NULL。 如果此参数不为 NULL 且操作返回数据,则 lpBytesReturned 在重叠操作完成之前毫无意义。 若要检索返回的字节数,请调用 GetOverlappedResult。 如果 hDevice 参数与 I/O 完成端口相关联,则可以通过调用 GetQueuedCompletionStatus 检索返回的字节数。
lpOverlapped [in]:指向 OVERLAPPED 结构的指针。
如果在未指定 FILE_FLAG_OVERLAPPED 的情况下打开 hDevice,则忽略 lpOverlapped。
如果使用 FILE_FLAG_OVERLAPPED 标志打开 hDevice,则此操作将作为重叠(异步)操作执行。 在这种情况下,lpOverlapped 必须指向包含事件对象句柄的有效 OVERLAPPED 结构。 否则,函数会以不可预知的方式失败。
对于重叠操作,DeviceIoControl 会立即返回,并在操作完成时向事件对象发出信号。 否则,在操作完成或发生错误之前,函数不会返回。
状态块
如果操作成功完成,DeviceIoControl 将返回非零值。
如果操作失败或挂起,DeviceIoControl 将返回零。 要获得更多的错误信息,请调用 GetLastError。
要求
要求类型 | 要求 |
---|---|
最低受支持的客户端 | Windows 10 |
标头 | Ntifs.h (包括 Ntifs.h 或 Fltkernel.h) |