ZwOpenDirectoryObject-Funktion (ntifs.h)

Die ZwOpenDirectoryObject-Routine öffnet ein vorhandenes Verzeichnisobjekt.

Syntax

NTSYSAPI NTSTATUS ZwOpenDirectoryObject(
  [out] PHANDLE            DirectoryHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

Parameter

[out] DirectoryHandle

Handle für das neu geöffnete Verzeichnisobjekt.

[in] DesiredAccess

Eine ACCESS_MASK-Struktur , die die angeforderten Zugriffstypen angibt, die für dieses Verzeichnisobjekt angefordert werden. Ein Aufrufer kann eine oder eine Kombination aus folgendem angeben.

DesiredAccess Flaggen Bedeutung
DIRECTORY_QUERY Abfragen des Zugriffs auf das Verzeichnisobjekt
DIRECTORY_TRAVERSE Name-Lookup-Zugriff auf das Verzeichnisobjekt
DIRECTORY_CREATE_OBJECT Nameerstellungszugriff auf das Verzeichnisobjekt
DIRECTORY_CREATE_SUBDIRECTORY Unterverzeichniserstellungszugriff auf das Verzeichnisobjekt
DIRECTORY_ALL_ACCESS Alle oben genannten Rechte plus STANDARD_RIGHTS_REQUIRED.
 

Diese angeforderten Zugriffstypen werden mit der dacl (Discretionary Access Control List) des Objekts verglichen, um zu bestimmen, welche Zugriffe gewährt oder verweigert werden.

[in] ObjectAttributes

Angegebene Attribute für das vom Aufrufer bereitgestellte Verzeichnisobjekt. Dieser Parameter wird durch Aufrufen des InitializeObjectAttributes-Makros initialisiert.

Rückgabewert

ZwOpenDirectoryObject gibt STATUS_SUCCESS oder einen geeigneten Fehler status zurück. Die häufigsten Fehler status Codes sind:

Rückgabecode Beschreibung
STATUS_INSUFFICIENT_RESOURCES
Ein temporärer Puffer, der für diese Routine erforderlich ist, konnte nicht zugeordnet werden.
STATUS_INVALID_PARAMETER
Der angegebene ObjectAttributes-Parameter war ein NULL-Zeiger , kein gültiger Zeiger auf eine OBJECT_ATTRIBUTES-Struktur , oder einige der in der OBJECT_ATTRIBUTES-Struktur angegebenen Felder waren ungültig.
STATUS_OBJECT_NAME_INVALID
Der ObjectAttributes-Parameter enthielt ein ObjectName-Feld in der OBJECT_ATTRIBUTES-Struktur , das ungültig war, da nach dem OBJECT_NAME_PATH_SEPARATOR Zeichen eine leere Zeichenfolge gefunden wurde.
STATUS_OBJECT_NAME_NOT_FOUND
Der Parameter ObjectAttributes enthielt ein ObjectName-Feld in der OBJECT_ATTRIBUTES-Struktur , das nicht gefunden werden konnte.
STATUS_OBJECT_PATH_NOT_FOUND
Der Parameter ObjectAttributes enthielt ein ObjectName-Feld in der OBJECT_ATTRIBUTES-Struktur mit einem Objektpfad, der nicht gefunden wurde.
STATUS_OBJECT_PATH_SYNTAX_BAD
Der Parameter ObjectAttributes enthielt kein RootDirectory-Feld , aber das ObjectName-Feld in der OBJECT_ATTRIBUTES-Struktur war eine leere Zeichenfolge oder enthielt kein OBJECT_NAME_PATH_SEPARATOR Zeichen. Dies weist auf eine falsche Syntax für den Objektpfad hin.
 

Die ZwOpenDirectoryObject-Routine löst eine Ausnahme aus, wenn der DirectoryHandle-Parameter ein unzulässiger Zeiger ist.

Hinweise

ZwOpenDirectoryObject öffnet ein vorhandenes Verzeichnisobjekt und gibt ein Handle an das Objekt zurück.

Die ZwOpenDirectoryObject-Routine wird aufgerufen, nachdem das InitializeObjectAttributes-Makro verwendet wurde, um bestimmte Attribute der OBJECT_ATTRIBUTES-Struktur für das zu öffnende Objekt zu initialisieren.

Ein Verzeichnisobjekt wird mithilfe der ZwCreateDirectoryObject-Routine erstellt. Jedes Handle, das durch den Aufruf von ZwOpenDirectoryObject abgerufen wird, muss schließlich durch Aufrufen von ZwClose freigegeben werden.

Weitere Informationen zur Sicherheit und Zugriffssteuerung finden Sie unter Windows-Sicherheitsmodell für Treiberentwickler und in der Dokumentation zu diesen Themen im Windows SDK.

Hinweis Wenn der Aufruf der ZwCreateDirectoryObject-Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtCreateDirectoryObject" anstelle von "ZwCreateDirectoryObject" verwenden.
 
Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP
Zielplattform Universell
Header ntifs.h (einschließen Ntdef.h, Ntifs.h, Fltkernel.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

ACCESS_MASK

ACL

InitializeObjectAttributes

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen

ZwClose

ZwCreateDirectoryObject