struktur OBJECT_ATTRIBUTES (ntdef.h)

Struktur OBJECT_ATTRIBUTES menentukan atribut yang dapat diterapkan ke objek atau handel objek dengan rutinitas yang membuat objek dan/atau mengembalikan handel ke objek.

Sintaks

typedef struct _OBJECT_ATTRIBUTES {
  ULONG           Length;
  HANDLE          RootDirectory;
  PUNICODE_STRING ObjectName;
  ULONG           Attributes;
  PVOID           SecurityDescriptor;
  PVOID           SecurityQualityOfService;
} OBJECT_ATTRIBUTES;

Anggota

Length

Jumlah byte data yang terkandung dalam struktur ini. Makro InitializeObjectAttributes mengatur anggota ini ke sizeof(OBJECT_ATTRIBUTES).

RootDirectory

Handel opsional ke direktori objek akar untuk nama jalur yang ditentukan oleh anggota ObjectName . Jika RootDirectory adalah NULL, ObjectName harus menunjuk ke nama objek yang sepenuhnya memenuhi syarat yang menyertakan jalur lengkap ke objek target. Jika RootDirectory non-NULL, ObjectName menentukan nama objek relatif terhadap direktori RootDirectory . Handel RootDirectory dapat merujuk ke direktori sistem file atau direktori objek di namespace pengelola objek.

ObjectName

Penunjuk ke string Unicode yang berisi nama objek tempat handel akan dibuka. Ini harus berupa nama objek yang sepenuhnya memenuhi syarat, atau nama jalur relatif ke direktori yang ditentukan oleh anggota RootDirectory .

Attributes

Bitmask bendera yang menentukan atribut handle objek. Anggota ini bisa berisi satu atau beberapa bendera dalam tabel berikut.

Bendera Makna
OBJ_INHERIT Handel ini dapat diwariskan oleh proses turunan dari proses saat ini.
OBJ_PERMANENT Bendera ini hanya berlaku untuk objek yang diberi nama dalam manajer objek. Secara default, objek tersebut dihapus ketika semua handel terbuka ditutup. Jika bendera ini ditentukan, objek tidak dihapus ketika semua handel yang terbuka ditutup. Driver dapat menggunakan rutinitas ZwMakeTemporaryObject untuk membuat objek permanen tidak permanen.
OBJ_EXCLUSIVE Jika bendera ini diatur dan struktur OBJECT_ATTRIBUTES diteruskan ke rutinitas yang membuat objek, objek dapat diakses secara eksklusif. Artinya, setelah proses membuka handel seperti itu ke objek, tidak ada proses lain yang dapat membuka handel ke objek ini.

Jika bendera ini diatur dan struktur OBJECT_ATTRIBUTES diteruskan ke rutinitas yang membuat handel objek, pemanggil meminta akses eksklusif ke objek untuk konteks proses tempat handel dibuat. Permintaan ini hanya dapat diberikan jika bendera OBJ_EXCLUSIVE diatur saat objek dibuat.
OBJ_CASE_INSENSITIVE Jika bendera ini ditentukan, perbandingan tidak peka huruf besar/kecil digunakan saat mencocokkan nama yang ditunjukkan oleh anggota ObjectName terhadap nama objek yang ada. Jika tidak, nama objek dibandingkan menggunakan pengaturan sistem default.
OBJ_OPENIF Jika bendera ini ditentukan, dengan menggunakan handel objek, ke rutinitas yang membuat objek dan jika objek tersebut sudah ada, rutinitas harus membuka objek tersebut. Jika tidak, rutinitas membuat objek mengembalikan kode NTSTATUS STATUS_OBJECT_NAME_COLLISION.
OBJ_OPENLINK Jika handel objek, dengan set bendera ini, diteruskan ke rutinitas yang membuka objek dan jika objek adalah objek tautan simbolis, rutinitas harus membuka objek tautan simbolis itu sendiri, bukan objek yang dirujuk tautan simbolis (yang merupakan perilaku default).
OBJ_KERNEL_HANDLE Handel dibuat dalam konteks proses sistem dan hanya dapat diakses dari mode kernel.
OBJ_FORCE_ACCESS_CHECK Rutinitas yang membuka handel harus memberlakukan semua pemeriksaan akses untuk objek, bahkan jika handel sedang dibuka dalam mode kernel.
OBJ_DONT_REPARSE Jika bendera ini diatur, tidak ada titik pemisahan ulang yang akan diikuti saat mengurai nama objek terkait. Jika ada pemilahan ulang yang terjadi, upaya akan gagal dan mengembalikan hasil STATUS_REPARSE_POINT_ENCOUNTERED . Ini dapat digunakan untuk menentukan apakah ada titik penguraian ulang di jalur objek, dalam skenario keamanan.
OBJ_IGNORE_IMPERSONATED_DEVICEMAP Peta perangkat adalah pemetaan antara nama perangkat DOS dan perangkat dalam sistem, dan digunakan saat menyelesaikan nama DOS. Peta perangkat terpisah ada untuk setiap pengguna dalam sistem, dan pengguna dapat mengelola peta perangkat mereka sendiri. Biasanya selama peniruan identitas, peta perangkat pengguna yang ditiru akan digunakan. Namun, ketika bendera ini diatur, peta perangkat pengguna proses digunakan sebagai gantinya.
OBJ_VALID_ATTRIBUTES Dicadangkan.

SecurityDescriptor

Menentukan deskriptor keamanan (SECURITY_DESCRIPTOR) untuk objek ketika objek dibuat. Jika SecurityDescriptor adalah NULL, objek akan menerima pengaturan keamanan default. Lihat DACL untuk Objek Baru.

SecurityQualityOfService

Kualitas layanan opsional yang akan diterapkan ke objek saat dibuat. Digunakan untuk menunjukkan tingkat peniruan keamanan dan mode pelacakan konteks (dinamis atau statis). Saat ini, makro InitializeObjectAttributes mengatur anggota ini ke NULL.

Keterangan

Gunakan makro InitializeObjectAttributes untuk menginisialisasi anggota struktur OBJECT_ATTRIBUTES . Perhatikan bahwa InitializeObjectAttributes menginisialisasi anggota SecurityQualityOfService ke NULL. Jika Anda harus menentukan non-nilaiNULL , atur anggota SecurityQualityOfService setelah inisialisasi.

Untuk menerapkan atribut yang terkandung dalam struktur ini ke objek atau handel objek, teruskan penunjuk ke struktur ini ke rutinitas yang mengakses objek atau mengembalikan handel objek, seperti ZwCreateFile atau ZwCreateDirectoryObject.

Semua anggota struktur ini bersifat baca-saja. Jika anggota struktur ini adalah penunjuk, objek yang dirujuk anggota ini juga bersifat baca-saja. Anggota dan objek baca-saja dapat digunakan untuk memperoleh informasi yang relevan tetapi tidak boleh dimodifikasi. Untuk mengatur anggota struktur ini, gunakan makro InitializeObjectAttributes .

Rutinitas driver yang berjalan dalam konteks proses selain proses sistem harus mengatur bendera OBJ_KERNEL_HANDLE untuk anggota Atribut (dengan menggunakan makro InitializeObjectAttributes ). Ini membatasi penggunaan handel yang dibuka untuk objek tersebut untuk memproses hanya berjalan dalam mode kernel. Jika tidak, handel dapat diakses oleh proses dalam konteks driver yang berjalan.

Persyaratan

Persyaratan Nilai
Header ntdef.h (termasuk D3dkmthk.h, Ntdef.h, Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h)

Lihat juga

FltCreateCommunicationPort

FltCreateFile

FltCreateFileEx

FltCreateFileEx2

InitializeObjectAttributes

IoCreateFile

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

ZwCreateDirectoryObject

ZwCreateFile

DACL untuk Objek Baru