InitializeObjectAttributes-Makro (ntdef.h)
Das InitializeObjectAttributes-Makro initialisiert die undurchsichtige OBJECT_ATTRIBUTES Struktur, die die Eigenschaften eines Objekthandles für 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
);
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. Dies muss entweder ein vollqualifizierter Objektname oder ein relativer Pfadname zum Objektverzeichnis sein, das durch den RootDirectory-Parameter angegeben wird.
a
Gibt mindestens eins der folgenden Flags an:
Flag | Beschreibung |
---|---|
OBJ_INHERIT | Dieses Handle kann von untergeordneten Prozessen des aktuellen Prozesses geerbt werden. |
OBJ_PERMANENT | Dieses Flag gilt nur für Objekte, die innerhalb des Objekt-Managers benannt sind. Standardmäßig werden solche Objekte gelöscht, wenn alle geöffneten Handles für sie geschlossen sind. Wenn dieses Flag angegeben ist, wird das Objekt nicht gelöscht, wenn alle geöffneten Handles geschlossen werden. Treiber können ZwMakeTemporaryObject verwenden, um permanente Objekte zu löschen. |
OBJ_EXCLUSIVE | Für dieses Objekt kann nur ein einzelnes Handle geöffnet sein. |
OBJ_CASE_INSENSITIVE | Wenn dieses Flag angegeben ist, wird beim Abgleich des ObjectName-Parameters mit den Namen vorhandener Objekte ein Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung verwendet. Andernfalls werden Objektnamen mithilfe der Standardsystemeinstellungen verglichen. |
OBJ_OPENIF | Wenn dieses Flag für eine Routine angegeben wird, 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 zum Öffnen des Handles sollte alle Zugriffsprüfungen für das Objekt erzwingen, auch wenn das Handle im Kernelmodus geöffnet wird. |
r
Ein Handle zum Stammobjektverzeichnis für den pfadnamen, der im ObjectName-Parameter angegeben ist. Wenn ObjectName ein vollqualifizierter Objektname ist, ist RootDirectory NULL. Verwenden Sie ZwCreateDirectoryObject 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
Keine
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 das Handle tatsächlich öffnet.
Treiberroutinen, die in einem anderen Prozesskontext als dem des Systemprozesses ausgeführt werden, müssen das flag OBJ_KERNEL_HANDLE für den Attributes-Parameter 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 der Prozess, in dessen Kontext der Treiber ausgeführt wird, auf das Handle zugreifen.
Beachten Sie, dass InitializeObjectAttributes das SecurityQualityOfService-Element von OBJECT_ATTRIBUTES immer auf NULL festlegt. Treiber, die einen Wert ungleich NULL erfordern, können SecurityQualityOfService direkt festlegen.
Requirements (Anforderungen)
Zielplattform | Desktop |
Kopfzeile | ntdef.h (include Wdm.h, Ntddk.h, Ntdef.h) |