Bagikan melalui


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