FSCTL_GET_WOF_VERSION控件程式代碼
FSCTL_GET_WOF_VERSION I/O 控制件程式代碼 (IOCTL) 可用來查詢用來支援特定提供者的驅動程式版本。
若要執行這項作業,請使用下列參數呼叫 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]: 重迭 結構的指標。
如果 已開啟 hDevice 而不指定 FILE_FLAG_OVERLAPPED,則會忽略 lpOverlapped 。
如果使用 FILE_FLAG_OVERLAPPED 旗標開啟 hDevice ,則會以重疊的 ( 異步) 作業來執行作業。 在此情況下, lpOverlapped 必須指向包含事件物件句柄的有效 OVERLAPPED 結構。 否則,函式會以無法預測的方式失敗。
對於重疊的作業, DeviceIoControl 會立即傳回,而且當作業完成時,事件對象會發出訊號。 否則,在作業完成或發生錯誤之前,函式不會傳回 。
狀態區塊
如果作業順利完成, DeviceIoControl 會傳回非零值。
如果作業失敗或擱置中, DeviceIoControl 會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
規格需求
需求類型 | 需求 |
---|---|
最低支援的用戶端 | Windows 10 |
標頭 | Ntifs.h (包含 Ntifs.h 或 Fltkernel.h) |