Freigeben über


InitializeObjectAttributes-Makro (ntdef.h)

Das Makro "InitializeObjectAttributes " initialisiert die undurchsichtige OBJECT_ATTRIBUTES Struktur, die die Eigenschaften eines Objekthandles an Routinen angibt, die Handles öffnen.

Syntax

VOID InitializeObjectAttributes(
  [out]          POBJECT_ATTRIBUTES   p,
  [in]           PUNICODE_STRING      n,
  [in]           ULONG                a,
  [in]           HANDLE               r,
  [in, optional] PSECURITY_DESCRIPTOR s
);

Die Parameter

p

Ein Zeiger auf die zu initialisierende OBJECT_ATTRIBUTES-Struktur.

n

Ein Zeiger auf eine Unicode-Zeichenfolge, die den Namen des Objekts enthält, für das ein Handle geöffnet werden soll. Hierbei muss es sich entweder um einen vollqualifizierten Objektnamen oder um einen relativen Pfadnamen zum objektverzeichnis handeln, das durch den RootDirectory-Parameter angegeben wird.

a

Gibt mindestens eins der folgenden Flags an:

Flagge BESCHREIBUNG
OBJ_INHERIT Dieses Handle kann von untergeordneten Prozessen des aktuellen Prozesses geerbt werden.
OBJ_PERMANENT Dieses Kennzeichen gilt nur für Objekte, die im Objekt-Manager benannt sind. Standardmäßig werden solche Objekte gelöscht, wenn alle geöffneten Ziehpunkte geschlossen werden. Wenn dieses Kennzeichen angegeben ist, wird das Objekt nicht gelöscht, wenn alle geöffneten Ziehpunkte geschlossen werden. Treiber können ZwMakeTemporaryObject verwenden, um permanente Objekte zu löschen.
OBJ_EXCLUSIVE Für dieses Objekt kann nur ein einzelner Handle geöffnet werden.
OBJ_CASE_INSENSITIVE Wenn dieses Flag angegeben ist, wird beim Abgleichen des ObjectName-Parameters ein Vergleich zwischen Groß- und Kleinschreibung mit den Namen vorhandener Objekte verwendet. Andernfalls werden Objektnamen mit den Standardsystemeinstellungen verglichen.
OBJ_OPENIF Wenn diese Kennzeichnung für eine Routine angegeben ist, die Objekte erstellt, und dieses Objekt bereits vorhanden ist, sollte die Routine dieses Objekt öffnen. Andernfalls gibt die Routine zum Erstellen des Objekts einen NTSTATUS-Code von STATUS_OBJECT_NAME_COLLISION zurück.
OBJ_KERNEL_HANDLE Gibt an, dass nur im Kernelmodus auf das Handle zugegriffen werden kann.
OBJ_FORCE_ACCESS_CHECK Die Routine beim Öffnen des Handles sollte alle Zugriffsprüfungen für das Objekt erzwingen, auch wenn das Handle im Kernelmodus geöffnet wird.

r

Ein Handle für das Stammobjektverzeichnis für den im Parameter ObjectName angegebenen Pfadnamen. Wenn ObjectName ein vollqualifizierter Objektname ist, ist RootDirectory NULL. Verwenden Sie ZwCreateDirectoryObject , um ein Handle für ein Objektverzeichnis abzurufen.

s

Gibt einen Sicherheitsdeskriptor an, der beim Erstellen auf ein Objekt angewendet werden soll. Dieser Parameter ist optional. Treiber können NULL angeben, um die Standardsicherheit für das Objekt zu akzeptieren. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

Rückgabewert

Nichts

Bemerkungen

InitializeObjectAttributes initialisiert eine OBJECT_ATTRIBUTES Struktur, die die Eigenschaften eines zu öffnenden Objekthandles angibt. Der Aufrufer kann dann einen Zeiger auf diese Struktur an eine Routine übergeben, die den Handle tatsächlich öffnet.

Treiberroutinen, die in einem anderen Prozesskontext als dem des Systemprozesses ausgeführt werden, müssen das OBJ_KERNEL_HANDLE Flag für den Parameter Attributes festlegen. Dieses Flag schränkt die Verwendung eines für dieses Objekt geöffneten Handles auf Prozesse ein, die nur im Kernelmodus ausgeführt werden. Andernfalls kann über den Prozess, in dem der Treiber ausgeführt wird, auf das Handle zugegriffen werden kann.

Beachten Sie, dass InitializeObjectAttributes immer das SecurityQualityOfService-Element von OBJECT_ATTRIBUTES auf NULL festlegt. Treiber, die einen Wert ungleich NULL erfordern, können "SecurityQualityOfService " direkt festlegen.

Anforderungen

Anforderung Wert
Zielplattform Arbeitsfläche
Überschrift ntdef.h (include Wdm.h, Ntddk.h, Ntdef.h)

Siehe auch

ExCreateCallback-

IoCreateFile-

OBJECT_ATTRIBUTES

PsCreateSystemThread-

SECURITY_DESCRIPTOR

UNICODE_STRING

ZwCreateDirectoryObject

ZwCreateFile-

ZwCreateKey-

ZwMakeTemporaryObject

ZwOpenFile-

ZwOpenKey

ZwOpenSection-

ZwOpenSymbolicLinkObject