IoGetDriverDirectory 函式 (wdm.h)

將句柄傳回磁碟上的目錄,驅動程式可以從中讀取和寫入檔案。 該目錄中的檔案會套用至特定的驅動程序物件。

語法

NTSTATUS IoGetDriverDirectory(
  [_In_]  PDRIVER_OBJECT        DriverObject,
  [_In_]  DRIVER_DIRECTORY_TYPE DirectoryType,
  [_In_]  ULONG                 Flags,
  [_Out_] PHANDLE               DriverDirectoryHandle
);

參數

[_In_] DriverObject

呼叫驅動程式之驅動程式物件的指標(DRIVER_OBJECT 結構)。

[_In_] DirectoryType

表示所要求目錄類型的 _DRIVER_DIRECTORY_TYPE型別值。

[_In_] Flags

必須是 0。

[_Out_] DriverDirectoryHandle

接收所要求驅動程序目錄句柄之變數的指標。 呼叫端不得傳遞 NULL。

傳回值

傳回適當的 NTSTATUS 值。 可能的值包括:

錯誤碼 描述
STATUS_SUCCESS 呼叫已成功開啟要求的驅動程序目錄句柄。
STATUS_INVALID_PARAMETER 此函式的輸入值無效。 例如,DriverObjectDriverDirectoryHandle 為 NULL;旗標 不是 0。

言論

如果在啟動必要的磁碟和磁碟區之前呼叫 IoGetDriverDirectory,則函式不會開啟句柄並傳回錯誤。

驅動程式通常會使用 ZwOpenFile ZwCreateFile 來存取/建立檔案。 這些函式的其中一個參數是 OBJECT_ATTRIBUTES 結構,其中包含物件名稱和根目錄。 如果根目錄為 NULL,則物件名稱必須是完整路徑。 不過,如果您提供根目錄的句柄,則物件名稱必須相對於物件(在檔案、目錄的情況下),句柄所代表。

IoGetDriverDirectory 呼叫成功之後,請使用接收的 HANDLE 作為您傳遞至 ZwOpenFileOBJECT_ATTRIBUTES 中的根目錄,ZwCreateFile

驅動程式必須呼叫 ZwClose,才能在不再需要存取時關閉收到的句柄。

IoGetDriverDirectory 的呼叫端必須在系統線程的內容中於 IRQL = PASSIVE_LEVEL執行。

要求

要求 價值
最低支援的用戶端 Windows 10 版本 1803
標頭 wdm.h
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

另請參閱

DRIVER_OBJECT

_DRIVER_DIRECTORY_TYPE

ZwOpenFile

ZwCreateFile

ZwClose

OBJECT_ATTRIBUTES

InitializeObjectAttributes