Fungsi NtOpenFile (winternl.h)
Membuka file, perangkat, direktori, atau volume yang ada, dan mengembalikan handel untuk objek file.
Fungsi ini setara dengan fungsi ZwOpenFile yang didokumenkan dalam Windows Driver Kit (WDK).
Sintaks
__kernel_entry NTSTATUS NtOpenFile(
[out] PHANDLE FileHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG ShareAccess,
[in] ULONG OpenOptions
);
Parameter
[out] FileHandle
Penunjuk ke handel untuk file yang dibuka. Driver harus menutup handel dengan ZwClose setelah handel tidak lagi digunakan.
[in] DesiredAccess
Nilai ACCESS_MASK yang mengekspresikan jenis akses file yang diinginkan oleh pemanggil. Untuk informasi tentang jenis akses yang dapat ditentukan, lihat ZwCreateFile di WDK.
[in] ObjectAttributes
Penunjuk ke struktur yang diinisialisasi pemanggil dengan InitializeObjectAttributes. Jika penelepon tidak berjalan dalam konteks proses sistem, pemanggil harus mengatur atribut OBJ_KERNEL_HANDLE untuk ObjectAttributes. Untuk informasi selengkapnya tentang menentukan atribut objek, lihat parameter CreateOptions dari ZwCreateFile di WDK.
[out] IoStatusBlock
Penunjuk ke struktur yang berisi informasi tentang operasi yang diminta dan status penyelesaian akhir.
[in] ShareAccess
Jenis akses berbagi untuk file. Untuk informasi selengkapnya, lihat ZwCreateFile di WDK.
[in] OpenOptions
Opsi yang akan diterapkan saat membuka file. Untuk informasi selengkapnya, lihat ZwCreateFile di WDK.
Mengembalikan nilai
NtOpenFile mengembalikan STATUS_SUCCESS atau status kesalahan yang sesuai. Jika mengembalikan status kesalahan, pemanggil dapat menemukan informasi tambahan tentang penyebab kegagalan dengan memeriksa IoStatusBlock.
Keterangan
Rutinitas driver yang berjalan dalam konteks proses selain proses sistem harus mengatur atribut OBJ_KERNEL_HANDLE untuk parameter ObjectAttributesZwOpenFile. Ini membatasi penggunaan handel yang dikembalikan oleh ZwOpenFile untuk memproses yang hanya berjalan dalam mode kernel. Jika tidak, handel dapat diakses oleh proses dalam konteks driver yang berjalan. Driver dapat memanggil InitializeObjectAttributes untuk mengatur atribut OBJ_KERNEL_HANDLE sebagai berikut.
InitializeObjectAttributes(&ObjectAddributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
Pemanggil ZwCreateFile harus berjalan di IRQL = PASSIVE_LEVEL.
Perhatikan bahwa file header WDK Ntdef.h diperlukan untuk banyak definisi konstan serta makro InitializeObjectAttributes . Anda juga dapat menggunakan fungsi LoadLibrary dan GetProcAddress untuk menautkan secara dinamis ke Ntdll.dll.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | winternl.h |
Pustaka | ntdll.lib |
DLL | ntdll.dll |