ZwCreateDirectoryObject function (wdm.h)

The ZwCreateDirectoryObject routine creates or opens an object-directory object.

Syntax

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

Parameters

[out] DirectoryHandle

Pointer to a HANDLE variable that receives a handle to the object directory.

[in] DesiredAccess

Specifies an ACCESS_MASK value that determines the requested access to the object. In addition to the access rights that are defined for all types of objects (see ACCESS_MASK), the caller can specify one or more of the following access rights, which are specific to object directories:

ACCESS_MASK flag Type of access
DIRECTORY_QUERY Query
DIRECTORY_TRAVERSE Name lookup
DIRECTORY_CREATE_OBJECT Name creation
DIRECTORY_CREATE_SUBDIRECTORY Subdirectory creation
DIRECTORY_ALL_ACCESS All of the preceding types

[in] ObjectAttributes

Pointer to an OBJECT_ATTRIBUTES structure that contains the object's attributes, which you must have already initialized by calling InitializeObjectAttributes.

Return value

ZwCreateDirectoryObject returns an NTSTATUS value. Possible return values include:

Remarks

Once the handle pointed to by DirectoryHandle is no longer in use, the driver must call ZwClose to close it.

If the caller is not running in a system thread context, it must ensure that any handles it creates are private handles. Otherwise, the handle can be accessed by the process in whose context the driver is running. For more information, see Object Handles.

The system uses object directories to organize other types of objects, such as device objects. For more information, see Object Directories.

The system does not use object directory objects to represent file-system directories, which are represented instead as file objects.

If the call to this function occurs in user mode, you should use the name "NtCreateDirectoryObject" instead of "ZwCreateDirectoryObject".

For calls from kernel-mode drivers, the NtXxx and ZwXxx versions of a Windows Native System Services routine can behave differently in the way that they handle and interpret input parameters. For more information about the relationship between the NtXxx and ZwXxx versions of a routine, see Using Nt and Zw Versions of the Native System Services Routines.

Requirements

Requirement Value
Target Platform Universal
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI compliance rules HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

See also

ACCESS_MASK

InitializeObjectAttributes

Using Nt and Zw Versions of the Native System Services Routines

ZwClose