Fungsi IoGetDriverDirectory (wdm.h)
Mengembalikan handel ke direktori pada disk tempat driver dapat membaca dan menulis file. File dalam direktori tersebut berlaku untuk objek driver tertentu.
Sintaks
NTSTATUS IoGetDriverDirectory(
[_In_] PDRIVER_OBJECT DriverObject,
[_In_] DRIVER_DIRECTORY_TYPE DirectoryType,
[_In_] ULONG Flags,
[_Out_] PHANDLE DriverDirectoryHandle
);
Parameter
[_In_] DriverObject
Penunjuk ke objek driver (struktur DRIVER_OBJECT ) dari driver panggilan.
[_In_] DirectoryType
Nilai jenis _DRIVER_DIRECTORY_TYPE yang menunjukkan jenis direktori yang diminta.
[_In_] Flags
Harus 0.
[_Out_] DriverDirectoryHandle
Penunjuk ke variabel yang menerima HANDLE ke direktori driver yang diminta. Pemanggil tidak boleh melewati NULL.
Nilai kembali
Mengembalikan nilai NTSTATUS yang sesuai. Nilai yang mungkin termasuk:
Kode kesalahan | Deskripsi |
---|---|
STATUS_SUCCESS | Panggilan berhasil membuka handel ke direktori driver yang diminta. |
STATUS_INVALID_PARAMETER | Nilai input ke fungsi ini tidak valid. Misalnya, DriverObject atau DriverDirectoryHandle adalah NULL; Bendera bukan 0. |
Keterangan
Jika IoGetDriverDirectory dipanggil sebelum disk dan volume yang diperlukan dimulai, fungsi tidak membuka handel dan mengembalikan kesalahan.
Driver biasanya menggunakan ZwOpenFile dan ZwCreateFile untuk mengakses/membuat file. Salah satu parameter untuk fungsi tersebut adalah struktur OBJECT_ATTRIBUTES , yang berisi nama objek dan direktori akar. Jika direktori akar adalah NULL, maka nama objek harus merupakan jalur yang sepenuhnya memenuhi syarat. Namun, jika Anda memberikan handel untuk direktori akar, maka nama objek harus relatif terhadap objek (dalam kasus file, direktori), yang diwakili oleh handel.
Setelah panggilan IoGetDriverDirectory berhasil, gunakan HANDLE yang diterima sebagai direktori akar di OBJECT_ATTRIBUTES yang Anda berikan ke ZwOpenFile dan ZwCreateFile.
Driver harus memanggil ZwClose untuk menutup handel yang diterima ketika akses tidak lagi diperlukan.
Pemanggil IoGetDriverDirectory harus berjalan di IRQL = PASSIVE_LEVEL dalam konteks utas sistem.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10 versi 1803 |
Header | wdm.h |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |