ioGetDeviceDirectory 函式 (wdm.h)

傳回磁碟上目錄的句柄,驅動程式可以在其中儲存盤案。 該目錄中的檔案會套用至特定的裝置實例。

語法

NTSTATUS IoGetDeviceDirectory(
  [_In_]  PDEVICE_OBJECT        PhysicalDeviceObject,
  [_In_]  DEVICE_DIRECTORY_TYPE DirectoryType,
  [_In_]  ULONG                 Flags,
  [_In_]  PVOID                 Reserved,
  [_Out_] PHANDLE               DeviceDirectoryHandle
);

參數

[_In_] PhysicalDeviceObject

在特定裝置實例的裝置堆疊中查詢 實體裝置物件的 指標。 不得為 NULL。

[_In_] DirectoryType

指出所要求目錄類型的 _DEVICE_DIRECTORY_TYPE型別值。

[_In_] Flags

必須是 0。

[_In_] Reserved

保留的。 必須是 Null。

[_Out_] DeviceDirectoryHandle

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

傳回值

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

錯誤碼 描述
STATUS_SUCCESS 呼叫已成功開啟所要求裝置目錄的句柄。
STATUS_INVALID_PARAMETER 此函式的輸入值無效。 例如, PhysicalDeviceObjectDeviceDirectoryHandle 為 NULL; 旗標 不是 0; 保留 不是 NULL。

備註

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

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

IoGetDeviceDirectory 呼叫成功之後,請使用收到的 HANDLE 作為您傳遞至 ZwOpenFileZwCreateFile之OBJECT_ATTRIBUTES中的根目錄。

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

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

規格需求

需求
最低支援的用戶端 Windows 10 (版本 1803)
標頭 wdm.h
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL

另請參閱

ZwOpenFile

ZwCreateFile

ZwClose

_DEVICE_DIRECTORY_TYPE

OBJECT_ATTRIBUTES

InitializeObjectAttributes