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-type 値。
[_In_] Flags
0 にする必要があります。
[_Out_] DriverDirectoryHandle
要求されたドライバー ディレクトリへの HANDLE を受け取る変数へのポインター。 呼び出し元は NULL を渡してはなりません。
戻り値
NTSTATUS 値 適切なを返します。 使用可能な値は次のとおりです。
エラー コード | 形容 |
---|---|
STATUS_SUCCESS | 呼び出しによって、要求されたドライバー ディレクトリへのハンドルが正常に開かれました。 |
STATUS_INVALID_PARAMETER | この関数への入力値が無効です。 たとえば、DriverObject または DriverDirectoryHandle は NULL です。フラグ が 0 ではありません。 |
備考
必要 ディスクとボリュームが開始される前に IoGetDriverDirectory が呼び出された場合、関数はハンドルを開かないため、エラーを返します。
ドライバーは通常、ZwOpenFile使用し、ZwCreateFileをしてファイルにアクセス/作成します。 これらの関数のパラメーターの 1 つは、オブジェクト名とルート ディレクトリを含む OBJECT_ATTRIBUTES 構造です。 ルート ディレクトリが NULL の場合、オブジェクト名は完全修飾パスである必要があります。 ただし、ルート ディレクトリのハンドルを指定する場合、オブジェクト名は、ハンドルが表すオブジェクト (ファイルの場合はディレクトリ) に対して相対的である必要があります。
IoGetDriverDirectory 呼び出しが成功したら、受信した HANDLE を、ZwOpenFile に渡す OBJECT_ATTRIBUTES のルート ディレクトリとして使用し、ZwCreateFileをします。
ドライバーは、ZwCloseを呼び出して、アクセスが不要になったときに受信したハンドルを閉じる必要があります。
IoGetDriverDirectory の呼び出し元は、システム スレッドのコンテキストで IRQL = PASSIVE_LEVELで実行されている必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 バージョン 1803 |
ヘッダー | wdm.h |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
関連項目
InitializeObjectAttributesの