ReactOS 0.4.16-dev-87-g3dfbe52
obfuncs.h File Reference
#include <umtypes.h>
#include <pstypes.h>
#include <obtypes.h>
Include dependency graph for obfuncs.h:

Go to the source code of this file.

Functions

NTKERNELAPI NTSTATUS NTAPI ObAssignSecurity (_In_ PACCESS_STATE AccessState, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ PVOID Object, _In_ POBJECT_TYPE Type)
 
NTKERNELAPI NTSTATUS NTAPI ObCloseHandle (_In_ HANDLE Handle, _In_ KPROCESSOR_MODE AccessMode)
 
NTKERNELAPI NTSTATUS NTAPI ObCreateObject (_In_opt_ KPROCESSOR_MODE ObjectAttributesAccessMode, _In_ POBJECT_TYPE ObjectType, _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ KPROCESSOR_MODE AccessMode, _Inout_opt_ PVOID ParseContext, _In_ ULONG ObjectSize, _In_opt_ ULONG PagedPoolCharge, _In_opt_ ULONG NonPagedPoolCharge, _Out_ PVOID *Object)
 
NTKERNELAPI NTSTATUS NTAPI ObCreateObjectType (_In_ PUNICODE_STRING TypeName, _In_ POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, _Reserved_ PVOID Reserved, _Out_ POBJECT_TYPE *ObjectType)
 
NTKERNELAPI VOID NTAPI ObDereferenceSecurityDescriptor (_Inout_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Count)
 
NTKERNELAPI ULONG NTAPI ObGetObjectPointerCount (_In_ PVOID Object)
 
NTKERNELAPI NTSTATUS NTAPI ObLogSecurityDescriptor (_In_ PSECURITY_DESCRIPTOR InputSecurityDescriptor, _Out_ PSECURITY_DESCRIPTOR *OutputSecurityDescriptor, _In_ ULONG RefBias)
 
NTKERNELAPI NTSTATUS NTAPI ObOpenObjectByName (_In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ POBJECT_TYPE ObjectType, _In_ KPROCESSOR_MODE AccessMode, _In_opt_ PACCESS_STATE PassedAccessState, _In_ ACCESS_MASK DesiredAccess, _Inout_opt_ PVOID ParseContext, _Out_ PHANDLE Handle)
 
NTKERNELAPI NTSTATUS NTAPI ObReferenceObjectByName (_In_ PUNICODE_STRING ObjectName, _In_ ULONG Attributes, _In_opt_ PACCESS_STATE PassedAccessState, _In_opt_ ACCESS_MASK DesiredAccess, _In_ POBJECT_TYPE ObjectType, _In_ KPROCESSOR_MODE AccessMode, _Inout_opt_ PVOID ParseContext, _Out_ PVOID *Object)
 
NTKERNELAPI VOID NTAPI ObReferenceSecurityDescriptor (_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Count)
 
NTKERNELAPI NTSTATUS NTAPI ObSetSecurityObjectByPointer (_In_ PVOID Object, _In_ SECURITY_INFORMATION SecurityInformation, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor)
 
NTKERNELAPI BOOLEAN NTAPI ObFindHandleForObject (_In_ PEPROCESS Process, _In_ PVOID Object, _In_ POBJECT_TYPE ObjectType, _In_opt_ POBJECT_HANDLE_INFORMATION HandleInformation, _Out_opt_ PHANDLE Handle)
 
NTKERNELAPI VOID NTAPI ObDereferenceObjectDeferDelete (_In_ PVOID Object)
 
NTSYSCALLAPI NTSTATUS NTAPI NtClose (_In_ HANDLE Handle)
 
__kernel_entry NTSYSCALLAPI NTSTATUS NTAPI NtCloseObjectAuditAlarm (_In_ PUNICODE_STRING SubsystemName, _In_opt_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose)
 
NTSYSCALLAPI NTSTATUS NTAPI NtCreateDirectoryObject (_Out_ PHANDLE DirectoryHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSYSCALLAPI NTSTATUS NTAPI NtCreateSymbolicLinkObject (_Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ PUNICODE_STRING Name)
 
__kernel_entry NTSYSCALLAPI NTSTATUS NTAPI NtDeleteObjectAuditAlarm (_In_ PUNICODE_STRING SubsystemName, _In_opt_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose)
 
NTSYSCALLAPI NTSTATUS NTAPI NtDuplicateObject (_In_ HANDLE SourceProcessHandle, _In_ HANDLE SourceHandle, _In_ HANDLE TargetProcessHandle, _Out_ PHANDLE TargetHandle, _In_ ACCESS_MASK DesiredAccess, _In_ ULONG HandleAttributes, _In_ ULONG Options)
 
NTSYSCALLAPI NTSTATUS NTAPI NtMakePermanentObject (_In_ HANDLE Object)
 
NTSYSCALLAPI NTSTATUS NTAPI NtMakeTemporaryObject (_In_ HANDLE Handle)
 
NTSYSCALLAPI NTSTATUS NTAPI NtOpenDirectoryObject (_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSYSCALLAPI NTSTATUS NTAPI NtOpenJobObject (_Out_ PHANDLE JobHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSYSCALLAPI NTSTATUS NTAPI NtOpenSymbolicLinkObject (_Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSYSCALLAPI NTSTATUS NTAPI NtQueryDirectoryObject (_In_ HANDLE DirectoryHandle, _Out_ PVOID Buffer, _In_ ULONG BufferLength, _In_ BOOLEAN ReturnSingleEntry, _In_ BOOLEAN RestartScan, _Inout_ PULONG Context, _Out_opt_ PULONG ReturnLength)
 
 _IRQL_requires_max_ (PASSIVE_LEVEL) __kernel_entry NTSYSCALLAPI NTSTATUS NTAPI NtQueryObject(_In_opt_ HANDLE Handle
 Queries information details about a security descriptor.
 
_In_ OBJECT_INFORMATION_CLASS _Out_writes_bytes_opt_ (ObjectInformationLength) PVOID ObjectInformation
 
_In_ SECURITY_INFORMATION _Out_writes_bytes_opt_ (Length) PSECURITY_DESCRIPTOR SecurityDescriptor
 
NTSYSCALLAPI NTSTATUS NTAPI NtQuerySymbolicLinkObject (_In_ HANDLE SymLinkObjHandle, _Out_ PUNICODE_STRING LinkTarget, _Out_opt_ PULONG DataWritten)
 
NTSYSCALLAPI NTSTATUS NTAPI NtSetInformationObject (_In_ HANDLE ObjectHandle, _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, _In_ PVOID ObjectInformation, _In_ ULONG Length)
 
NTSYSCALLAPI NTSTATUS NTAPI NtSetSecurityObject (_In_ HANDLE Handle, _In_ SECURITY_INFORMATION SecurityInformation, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor)
 
NTSYSCALLAPI NTSTATUS NTAPI NtSignalAndWaitForSingleObject (_In_ HANDLE SignalObject, _In_ HANDLE WaitObject, _In_ BOOLEAN Alertable, _In_ PLARGE_INTEGER Time)
 
NTSYSCALLAPI NTSTATUS NTAPI NtWaitForMultipleObjects (_In_ ULONG Count, _In_ HANDLE Object[], _In_ WAIT_TYPE WaitType, _In_ BOOLEAN Alertable, _In_ PLARGE_INTEGER Time)
 
NTSTATUS NTAPI NtWaitForMultipleObjects32 (_In_ ULONG ObjectCount, _In_ PLONG Handles, _In_ WAIT_TYPE WaitType, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER TimeOut)
 
NTSYSCALLAPI NTSTATUS NTAPI NtWaitForSingleObject (_In_ HANDLE Object, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER Timeout)
 
NTSYSAPI NTSTATUS NTAPI ZwClose (_In_ HANDLE Handle)
 
NTSYSAPI NTSTATUS NTAPI ZwCloseObjectAuditAlarm (_In_ PUNICODE_STRING SubsystemName, _In_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose)
 
NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject (_Out_ PHANDLE DirectoryHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSYSAPI NTSTATUS NTAPI ZwCreateSymbolicLinkObject (_Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ PUNICODE_STRING Name)
 
NTSYSAPI NTSTATUS NTAPI ZwDeleteObjectAuditAlarm (_In_ PUNICODE_STRING SubsystemName, _In_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose)
 
NTSYSAPI NTSTATUS NTAPI ZwMakePermanentObject (_In_ HANDLE Object)
 
NTSYSAPI NTSTATUS NTAPI ZwMakeTemporaryObject (_In_ HANDLE Handle)
 
NTSYSAPI NTSTATUS NTAPI ZwOpenDirectoryObject (_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSYSAPI NTSTATUS NTAPI ZwOpenJobObject (_Out_ PHANDLE JobHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSYSAPI NTSTATUS NTAPI ZwOpenSymbolicLinkObject (_Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSYSAPI NTSTATUS NTAPI ZwSetInformationObject (_In_ HANDLE ObjectHandle, _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, _In_ PVOID ObjectInformation, _In_ ULONG Length)
 
NTSYSAPI NTSTATUS NTAPI ZwSignalAndWaitForSingleObject (_In_ HANDLE SignalObject, _In_ HANDLE WaitObject, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER Time)
 
NTSYSAPI NTSTATUS NTAPI ZwWaitForMultipleObjects (_In_ ULONG Count, _In_ HANDLE Object[], _In_ WAIT_TYPE WaitType, _In_ BOOLEAN Alertable, _In_ PLARGE_INTEGER Time)
 

Variables

_In_ OBJECT_INFORMATION_CLASS ObjectInformationClass
 
_In_ OBJECT_INFORMATION_CLASS _In_ ULONG ObjectInformationLength
 
_In_ OBJECT_INFORMATION_CLASS _In_ ULONG _Out_opt_ PULONG ReturnLength
 
_In_ SECURITY_INFORMATION SecurityInformation
 
_In_ SECURITY_INFORMATION _In_ ULONG Length
 
_In_ SECURITY_INFORMATION _In_ ULONG _Out_ PULONG LengthNeeded
 
_In_ HANDLE SourceHandle
 
_In_ HANDLE _In_opt_ HANDLE TargetProcessHandle
 
_In_ HANDLE _In_opt_ HANDLE _Out_opt_ PHANDLE TargetHandle
 
_In_ HANDLE _In_opt_ HANDLE _Out_opt_ PHANDLE _In_ ACCESS_MASK DesiredAccess
 
_In_ HANDLE _In_opt_ HANDLE _Out_opt_ PHANDLE _In_ ACCESS_MASK _In_ ULONG HandleAttributes
 
_In_ HANDLE _In_opt_ HANDLE _Out_opt_ PHANDLE _In_ ACCESS_MASK _In_ ULONG _In_ ULONG Options
 
_Out_ PVOID Buffer
 
_Out_ PVOID _In_ ULONG BufferLength
 
_Out_ PVOID _In_ ULONG _In_ BOOLEAN ReturnSingleEntry
 
_Out_ PVOID _In_ ULONG _In_ BOOLEAN _In_ BOOLEAN RestartScan
 
_Out_ PVOID _In_ ULONG _In_ BOOLEAN _In_ BOOLEAN _Inout_ PULONG Context
 

Function Documentation

◆ _IRQL_requires_max_()

_IRQL_requires_max_ ( PASSIVE_LEVEL  )

Queries information details about a security descriptor.

Computes the quota size of a security descriptor.

Assigns a security descriptor for a new object.

An extended function that assigns a security descriptor for a new object.

Frees a security descriptor.

An extended function that sets new information data to a security descriptor.

Modifies some information data about a security descriptor.

Parameters
[in]SecurityInformationSecurity information details to be queried from a security descriptor.
[out]SecurityDescriptorThe returned security descriptor with security information data.
[in,out]LengthThe returned length of a security descriptor.
[in,out]ObjectsSecurityDescriptorThe returned object security descriptor.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the specific information about the security descriptor has been queried. STATUS_BUFFER_TOO_SMALL is returned if the buffer size is too small to contain the queried info about the security descriptor.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
See SeSetSecurityDescriptorInfoEx.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]AutoInheritFlagsFlags bitmask inheritation, influencing how the security descriptor can be inherited and if it can be in the first place.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
Returns STATUS_SUCCESS if the operations have been completed without problems and that new info has been set to the security descriptor. STATUS_NO_SECURITY_ON_OBJECT is returned if the object does not have a security descriptor. STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the new security descriptor with new info set has failed.
Parameters
[in]SecurityDescriptorA security descriptor to be freed from memory.
Returns
Returns STATUS_SUCCESS.
Parameters
[in]_ParentDescriptorA security descriptor of the parent object that is being created.
[in]_ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]ObjectTypeThe type of the new object.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]AutoInheritFlagsAutomatic inheritance flags that influence how access control entries within ACLs from security descriptors are inherited.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the security descriptor has been assigned to the new object. STATUS_NO_TOKEN is returned if the caller hasn't supplied a valid argument to a security subject context. STATUS_INVALID_OWNER is returned if the caller hasn't supplied a parent descriptor that belongs to the main user (owner). STATUS_INVALID_PRIMARY_GROUP is returned by the same reason as with the previous NTSTATUS code. The two NTSTATUS codes are returned if the calling thread stated that the owner and/or group is defaulted to the parent descriptor (SEF_DEFAULT_OWNER_FROM_PARENT and/or SEF_DEFAULT_GROUP_FROM_PARENT respectively). STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the descriptor buffer has failed. A failure NTSTATUS is returned otherwise.
Parameters
[in]ParentDescriptorA security descriptor of the parent object that is being created.
[in]ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
See SeAssignSecurityEx.
Parameters
[in]SecurityDescriptorA security descriptor.
[out]QuotaInfoSizeThe returned quota size of the given security descriptor to the caller. The function may return 0 to this parameter if the descriptor doesn't have a group or a discretionary access control list (DACL) even.
Returns
Returns STATUS_SUCCESS if the quota size of a security descriptor has been computed successfully. STATUS_UNKNOWN_REVISION is returned if the security descriptor has an invalid revision.

Definition at line 923 of file Messaging.c.

75{
76 PFLT_SERVER_PORT_OBJECT PortObject;
78
79 /* The caller must allow at least one connection */
80 if (MaxConnections == 0)
81 {
83 }
84
85 /* The request must be for a kernel handle */
86 if (!(ObjectAttributes->Attributes & OBJ_KERNEL_HANDLE))
87 {
89 }
90
91 /*
92 * Get rundown protection on the target to stop the owner
93 * from unloading whilst this port object is open. It gets
94 * removed in the FltpServerPortClose callback
95 */
97 if (!NT_SUCCESS(Status))
98 {
99 return Status;
100 }
101
102 /* Create the server port object for this filter */
107 NULL,
109 0,
110 0,
111 (PVOID *)&PortObject);
112 if (NT_SUCCESS(Status))
113 {
114 /* Zero out the struct */
115 RtlZeroMemory(PortObject, sizeof(FLT_SERVER_PORT_OBJECT));
116
117 /* Increment the ref count on the target filter */
119
120 /* Setup the filter port object */
121 PortObject->Filter = Filter;
125 PortObject->Cookie = ServerPortCookie;
126 PortObject->MaxConnections = MaxConnections;
127
128 /* Insert the object */
129 Status = ObInsertObject(PortObject,
130 NULL,
132 0,
133 NULL,
135 if (NT_SUCCESS(Status))
136 {
137 /* Lock the connection list */
139
140 /* Add the new port object to the connection list and increment the count */
143
144 /* Unlock the connection list*/
146 }
147 }
148
149 if (!NT_SUCCESS(Status))
150 {
151 /* Allow the filter to be cleaned up */
153 }
154
155 return Status;
156}
static const INTERNET_PORT ServerPort
Definition: CWebService.cpp:11
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
LONG NTSTATUS
Definition: precomp.h:26
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
Definition: fltkernel.h:1877
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1875
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1874
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1876
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
Status
Definition: gdiplustypes.h:25
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
static LONG MaxConnections
#define KernelMode
Definition: asm.h:34
#define FILE_READ_DATA
Definition: nt_native.h:628
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
Definition: obhandle.c:2935
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
Definition: oblife.c:1039
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121
LIST_ENTRY mList
Definition: fltmgrint.h:56
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

◆ _Out_writes_bytes_opt_() [1/2]

_In_ SECURITY_INFORMATION _Out_writes_bytes_opt_ ( Length  )

◆ _Out_writes_bytes_opt_() [2/2]

◆ NtClose()

NTSYSCALLAPI NTSTATUS NTAPI NtClose ( _In_ HANDLE  Handle)

◆ NtCloseObjectAuditAlarm()

__kernel_entry NTSYSCALLAPI NTSTATUS NTAPI NtCloseObjectAuditAlarm ( _In_ PUNICODE_STRING  SubsystemName,
_In_opt_ PVOID  HandleId,
_In_ BOOLEAN  GenerateOnClose 
)

◆ NtCreateDirectoryObject()

NTSYSCALLAPI NTSTATUS NTAPI NtCreateDirectoryObject ( _Out_ PHANDLE  DirectoryHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_ATTRIBUTES  ObjectAttributes 
)

◆ NtCreateSymbolicLinkObject()

NTSYSCALLAPI NTSTATUS NTAPI NtCreateSymbolicLinkObject ( _Out_ PHANDLE  SymbolicLinkHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_ATTRIBUTES  ObjectAttributes,
_In_ PUNICODE_STRING  Name 
)

◆ NtDeleteObjectAuditAlarm()

__kernel_entry NTSYSCALLAPI NTSTATUS NTAPI NtDeleteObjectAuditAlarm ( _In_ PUNICODE_STRING  SubsystemName,
_In_opt_ PVOID  HandleId,
_In_ BOOLEAN  GenerateOnClose 
)

◆ NtDuplicateObject()

NTSYSCALLAPI NTSTATUS NTAPI NtDuplicateObject ( _In_ HANDLE  SourceProcessHandle,
_In_ HANDLE  SourceHandle,
_In_ HANDLE  TargetProcessHandle,
_Out_ PHANDLE  TargetHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ ULONG  HandleAttributes,
_In_ ULONG  Options 
)

◆ NtMakePermanentObject()

NTSYSCALLAPI NTSTATUS NTAPI NtMakePermanentObject ( _In_ HANDLE  Object)

◆ NtMakeTemporaryObject()

NTSYSCALLAPI NTSTATUS NTAPI NtMakeTemporaryObject ( _In_ HANDLE  Handle)

◆ NtOpenDirectoryObject()

NTSYSCALLAPI NTSTATUS NTAPI NtOpenDirectoryObject ( _Out_ PHANDLE  FileHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_ATTRIBUTES  ObjectAttributes 
)

◆ NtOpenJobObject()

NTSYSCALLAPI NTSTATUS NTAPI NtOpenJobObject ( _Out_ PHANDLE  JobHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_ATTRIBUTES  ObjectAttributes 
)

◆ NtOpenSymbolicLinkObject()

NTSYSCALLAPI NTSTATUS NTAPI NtOpenSymbolicLinkObject ( _Out_ PHANDLE  SymbolicLinkHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_ATTRIBUTES  ObjectAttributes 
)

◆ NtQueryDirectoryObject()

NTSYSCALLAPI NTSTATUS NTAPI NtQueryDirectoryObject ( _In_ HANDLE  DirectoryHandle,
_Out_ PVOID  Buffer,
_In_ ULONG  BufferLength,
_In_ BOOLEAN  ReturnSingleEntry,
_In_ BOOLEAN  RestartScan,
_Inout_ PULONG  Context,
_Out_opt_ PULONG  ReturnLength 
)

◆ NtQuerySymbolicLinkObject()

NTSYSCALLAPI NTSTATUS NTAPI NtQuerySymbolicLinkObject ( _In_ HANDLE  SymLinkObjHandle,
_Out_ PUNICODE_STRING  LinkTarget,
_Out_opt_ PULONG  DataWritten 
)

◆ NtSetInformationObject()

NTSYSCALLAPI NTSTATUS NTAPI NtSetInformationObject ( _In_ HANDLE  ObjectHandle,
_In_ OBJECT_INFORMATION_CLASS  ObjectInformationClass,
_In_ PVOID  ObjectInformation,
_In_ ULONG  Length 
)

◆ NtSetSecurityObject()

NTSYSCALLAPI NTSTATUS NTAPI NtSetSecurityObject ( _In_ HANDLE  Handle,
_In_ SECURITY_INFORMATION  SecurityInformation,
_In_ PSECURITY_DESCRIPTOR  SecurityDescriptor 
)

◆ NtSignalAndWaitForSingleObject()

NTSYSCALLAPI NTSTATUS NTAPI NtSignalAndWaitForSingleObject ( _In_ HANDLE  SignalObject,
_In_ HANDLE  WaitObject,
_In_ BOOLEAN  Alertable,
_In_ PLARGE_INTEGER  Time 
)

◆ NtWaitForMultipleObjects()

NTSYSCALLAPI NTSTATUS NTAPI NtWaitForMultipleObjects ( _In_ ULONG  Count,
_In_ HANDLE  Object[],
_In_ WAIT_TYPE  WaitType,
_In_ BOOLEAN  Alertable,
_In_ PLARGE_INTEGER  Time 
)

◆ NtWaitForMultipleObjects32()

NTSTATUS NTAPI NtWaitForMultipleObjects32 ( _In_ ULONG  ObjectCount,
_In_ PLONG  Handles,
_In_ WAIT_TYPE  WaitType,
_In_ BOOLEAN  Alertable,
_In_opt_ PLARGE_INTEGER  TimeOut 
)

◆ NtWaitForSingleObject()

NTSYSCALLAPI NTSTATUS NTAPI NtWaitForSingleObject ( _In_ HANDLE  Object,
_In_ BOOLEAN  Alertable,
_In_opt_ PLARGE_INTEGER  Timeout 
)

◆ ObAssignSecurity()

NTKERNELAPI NTSTATUS NTAPI ObAssignSecurity ( _In_ PACCESS_STATE  AccessState,
_In_ PSECURITY_DESCRIPTOR  SecurityDescriptor,
_In_ PVOID  Object,
_In_ POBJECT_TYPE  Type 
)

◆ ObCloseHandle()

NTKERNELAPI NTSTATUS NTAPI ObCloseHandle ( _In_ HANDLE  Handle,
_In_ KPROCESSOR_MODE  AccessMode 
)

◆ ObCreateObject()

NTKERNELAPI NTSTATUS NTAPI ObCreateObject ( _In_opt_ KPROCESSOR_MODE  ObjectAttributesAccessMode,
_In_ POBJECT_TYPE  ObjectType,
_In_opt_ POBJECT_ATTRIBUTES  ObjectAttributes,
_In_ KPROCESSOR_MODE  AccessMode,
_Inout_opt_ PVOID  ParseContext,
_In_ ULONG  ObjectSize,
_In_opt_ ULONG  PagedPoolCharge,
_In_opt_ ULONG  NonPagedPoolCharge,
_Out_ PVOID Object 
)

◆ ObCreateObjectType()

NTKERNELAPI NTSTATUS NTAPI ObCreateObjectType ( _In_ PUNICODE_STRING  TypeName,
_In_ POBJECT_TYPE_INITIALIZER  ObjectTypeInitializer,
_Reserved_ PVOID  Reserved,
_Out_ POBJECT_TYPE ObjectType 
)

◆ ObDereferenceObjectDeferDelete()

NTKERNELAPI VOID NTAPI ObDereferenceObjectDeferDelete ( _In_ PVOID  Object)

◆ ObDereferenceSecurityDescriptor()

NTKERNELAPI VOID NTAPI ObDereferenceSecurityDescriptor ( _Inout_ PSECURITY_DESCRIPTOR  SecurityDescriptor,
_In_ ULONG  Count 
)

◆ ObFindHandleForObject()

NTKERNELAPI BOOLEAN NTAPI ObFindHandleForObject ( _In_ PEPROCESS  Process,
_In_ PVOID  Object,
_In_ POBJECT_TYPE  ObjectType,
_In_opt_ POBJECT_HANDLE_INFORMATION  HandleInformation,
_Out_opt_ PHANDLE  Handle 
)

◆ ObGetObjectPointerCount()

NTKERNELAPI ULONG NTAPI ObGetObjectPointerCount ( _In_ PVOID  Object)

◆ ObLogSecurityDescriptor()

NTKERNELAPI NTSTATUS NTAPI ObLogSecurityDescriptor ( _In_ PSECURITY_DESCRIPTOR  InputSecurityDescriptor,
_Out_ PSECURITY_DESCRIPTOR OutputSecurityDescriptor,
_In_ ULONG  RefBias 
)

◆ ObOpenObjectByName()

NTKERNELAPI NTSTATUS NTAPI ObOpenObjectByName ( _In_ POBJECT_ATTRIBUTES  ObjectAttributes,
_In_ POBJECT_TYPE  ObjectType,
_In_ KPROCESSOR_MODE  AccessMode,
_In_opt_ PACCESS_STATE  PassedAccessState,
_In_ ACCESS_MASK  DesiredAccess,
_Inout_opt_ PVOID  ParseContext,
_Out_ PHANDLE  Handle 
)

◆ ObReferenceObjectByName()

NTKERNELAPI NTSTATUS NTAPI ObReferenceObjectByName ( _In_ PUNICODE_STRING  ObjectName,
_In_ ULONG  Attributes,
_In_opt_ PACCESS_STATE  PassedAccessState,
_In_opt_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_TYPE  ObjectType,
_In_ KPROCESSOR_MODE  AccessMode,
_Inout_opt_ PVOID  ParseContext,
_Out_ PVOID Object 
)

◆ ObReferenceSecurityDescriptor()

NTKERNELAPI VOID NTAPI ObReferenceSecurityDescriptor ( _In_ PSECURITY_DESCRIPTOR  SecurityDescriptor,
_In_ ULONG  Count 
)

◆ ObSetSecurityObjectByPointer()

NTKERNELAPI NTSTATUS NTAPI ObSetSecurityObjectByPointer ( _In_ PVOID  Object,
_In_ SECURITY_INFORMATION  SecurityInformation,
_In_ PSECURITY_DESCRIPTOR  SecurityDescriptor 
)

◆ ZwClose()

NTSYSAPI NTSTATUS NTAPI ZwClose ( _In_ HANDLE  Handle)

Referenced by __drv_maxIRQL(), _Function_class_(), _IRQL_requires_max_(), _Success_(), acpi_create_registry_table(), acpi_create_volatile_registry_tables(), ACPIDispatchDeviceControl(), AcpiOsExecute(), AdvancedErrorChecks(), AfdCloseSocket(), allow_degraded_mount(), ApphelpCacheRead(), ApphelpCacheWrite(), BasicBehaviorChecks(), BehaviorChecks(), BroadcastOpen(), BuildWindowStationNameList(), CheckForDeviceDesc(), ClasspIsMediaChangeDisabledDueToHardwareLimitation(), ClasspIsMediaChangeDisabledForClass(), ClasspMediaChangeDeviceInstanceOverride(), ClassPnp(), ClasspScanForSpecialInRegistry(), Close(), CloseKey(), ClosePin(), CloseRemoteDatabase(), CmBattAddDevice(), CmBattCreateFdo(), CmLoadKey(), CmpCloseHiveFiles(), CmpCreateEvent(), CmpInitHiveFromFile(), CmpInitializeHiveList(), CmpInitializeMachineDependentConfiguration(), CmpLinkHiveToMaster(), CmpLinkKeyToHive(), CmpOpenHiveFiles(), CompBattGetDeviceObjectPointer(), CreateClientPort(), CreateDeviceFromRegistry(), CreateGreenFdo(), CreateMixerPinAndSetFormat(), CreatePinCallback(), CreateRemoteDatabaseWorker(), FxSystemThread::CreateThread(), DiskAddDevice(), DiskCreateFdo(), DiskRemoveDevice(), DriverEntry(), EngLoadModuleEx(), EngpGetDisplayDriverAccelerationLevel(), EngpGetDisplayDriverParameters(), EngpGetRegistryHandleFromDeviceMap(), EngpHasVgaDriver(), EngpUpdateGraphicsDeviceList(), EnumDeviceKeys(), EnumerateDevices(), EnumerateSoundDevices(), EnumerateSubkey(), ExCreateCallback(), ExpGetCurrentUserUILanguage(), ExpSetCurrentUserUILanguage(), ExpUuidLoadSequenceNumber(), ExpUuidSaveSequenceNumber(), ExpValidateNlsLocaleId(), Ext2StartReaper(), FatGetCompatibilityModeValue(), FatIsFujitsuFMR(), FdoCreateRawParallelPdo(), FdoRemoveAdapter(), FileSectionViewPermissionCheck(), FindDeviceDescForAdapter(), FindProductName(), FinishThread(), FontLink_Chain_LoadReg(), FontLink_LoadDefaultCharset(), FontLink_LoadDefaultFonts(), FontLink_LoadSettings(), FreeGlobalData(), fs_ignored(), FsRecRegisterFs(), FsRtlDeregisterUncProvider(), FsRtlGetTunnelParameterValue(), FsRtlInitializeWorkerThread(), FsRtlpIsDfsEnabled(), FsRtlRegisterUncProvider(), FsRtlTest_StartTest(), get_registry_value(), GetFilterAltitude(), GetObjectType(), GetProcessorInformation(), GetRegistryValueBuffer(), HalpDmaAllocateChildAdapter(), HalpGetChipHacks(), HalpGetNMICrashFlag(), HalpMarkAcpiHal(), HalpMarkChipsetDecode(), HalpQueryPciRegistryInfo(), HalpRegisterPciDebuggingDeviceInfo(), HalpReportSerialNumber(), i8042StoreSMBiosTables(), InitDisplayDriver(), InitializeProvider(), InitMetrics(), InitUserImpl(), InitVideo(), IntGdiAddFontResourceEx(), IntGetFullFileName(), IntLoadFontsInRegistry(), IntLoadFontSubstList(), IntLoadRegistryParameters(), IntLoadSystemFonts(), IntQueryUserSecurityIdentification(), IntVideoPortMapPhysicalMemory(), IoCreateDriver(), IoCreateSymbolicLink(), IoCreateUnprotectedSymbolicLink(), IoDeleteSymbolicLink(), IoGetDeviceInterfaces(), IoOpenDeviceInterfaceRegistryKey(), IoOpenDeviceRegistryKey(), IopBootLog(), IopCreateDeviceKeyPath(), IopCreateEvent(), IopCreateFile(), IopCreateLogFile(), IopCreateRegistryKeyEx(), IopEnumerateDetectedDevices(), IopGetDeviceObjectPointer(), IopGetParentIdPrefix(), IopInitializeBuiltinDriver(), IopInitializeDriverModule(), IopInitializePlugPlayServices(), IopInstallCriticalDevice(), IopIsFirmwareMapperDisabled(), IopLoadUnloadDriverWorker(), IopLogWorker(), IopOpenInterfaceKey(), IopQueryBusDescription(), IopQueryDeviceCapabilities(), IopQueryDeviceDescription(), IopSaveBootLogToFile(), IopSetDeviceInstanceData(), IopSetServiceEnumData(), IopShouldProcessDevice(), IopStartRamdisk(), IopUpdateControlKeyWithResources(), IopUpdateResourceMap(), IopUpdateRootKey(), IopWriteLogFile(), IoQueryDeviceDescription(), IoRegisterDeviceInterface(), IoReportDetectedDevice(), IoReportHalResourceUsage(), IoSetDeviceInterfaceState(), IoSetSystemPartition(), KdbpCliInit(), KdpDebugLogInit(), KeI386VdmInitialize(), KsCacheMedium(), KsFilterFactoryUpdateCacheData(), KsMapModuleName(), KspEnumerateBusRegistryKeys(), KspInstallInterface(), KspReadMediaCategory(), KspScanBus(), KsRegisterFilterWithNoKSPins(), LogMessage(), LsaDeregisterLogonProcess(), LsaRegisterLogonProcess(), main(), MiCreateMemoryEvent(), MiShutdownSystem(), MmCheckSystemImage(), MmInitBsmThread(), MmLoadSystemImage(), MountMgrMountedDeviceArrival(), MountMgrQuerySymbolicLink(), MountMgrValidateBackPointer(), MupCloseUncProvider(), MupGetProviderInformation(), MuppIsDfsEnabled(), Mx::MxClose(), ndisBindMiniportsToProtocol(), NdisCloseConfiguration(), NdisCloseFile(), NdisIPnPStartDevice(), NdisOpenConfiguration(), NdisOpenConfigurationKeyByIndex(), NdisOpenConfigurationKeyByName(), NdisOpenProtocolConfiguration(), nfs41_CreateConnection(), nfs41_DeleteConnection(), NtCreatePagingFile(), NtUserLoadKeyboardLayoutEx(), ObjectBasicInformationTests(), ObtClose(), ObtCreateObjectTypes(), OnlineMountedVolumes(), OpenDevice(), OpenRegistryHandlesFromSymbolicLink(), OpenSubkey(), PageFileBehaviorChecks(), PciAcpiFindRsdt(), PciAddDevice(), PciGetBiosConfig(), PciGetIrqRoutingTableFromRegistry(), PciGetRegistryValue(), PciIdeXCreateIdeDirectory(), PciSaveBiosConfig(), PcNewRegistryKey(), Phase1InitializationDiscard(), PiAttachFilterDriversCallback(), PiCallDriverAddDevice(), PiControlInitializeDevice(), PiGetDeviceRegistryProperty(), PiInitCacheGroupInformation(), PiInitializeDevNode(), Pin_fnClose(), PiStartDeviceFinal(), PnpDeviceObjectToDeviceInstance(), PopAddRemoveSysCapsCallback(), PopFlushVolumes(), PopFlushVolumeWorker(), PopReadShutdownPolicy(), ProcessorSetFriendlyName(), PsLocateSystemDll(), QueryVolumeName(), read_group_mappings(), read_mappings(), read_registry(), ReadIpConfiguration(), ReconcileThisDatabaseWithMasterWorker(), RegGetSectionDWORD(), registry_load_volume_options(), registry_mark_volume_mounted(), registry_mark_volume_unmounted_path(), RegistryInitAdapterKey(), RegistryInitLunKey(), RtlAcquirePrivilege(), RtlAdjustPrivilege(), RtlCheckRegistryKey(), RtlCreateBootStatusDataFile(), RtlCreateSystemVolumeInformationFolder(), RtlCreateUserProcess(), RtlFormatCurrentUserKeyPath(), RtlGetNtProductType(), RtlImpersonateSelf(), RtlpCloseRegistryHandle(), RtlpMapFile(), RtlpSysVolTakeOwnership(), RtlQueryRegistryValues(), RtlReleasePrivilege(), RtlUnlockBootStatusData(), RxGetRegistryParameters(), RxInitializeDispatcher(), RxReadRegistryParameters(), RxSpinUpWorkerThread(), ScsiPortInitialize(), SearchForLegacyDrivers(), SeGetLogonIdDeviceMap(), SepCleanupLUIDDeviceMapDirectory(), SepInitializationPhase1(), SepRegQueryHelper(), SerenumDetectLegacyDevice(), SerenumDetectPnpDevice(), SerialPnpStartDevice(), SermouseDetectLegacyDevice(), SetRegistryValue(), SharedMemoryFree(), SimpleErrorChecks(), SpiCreatePortConfig(), SpiInitOpenKeys(), START_TEST(), sys_shutdown(), SysAudio_Shutdown(), SystemProcessTest(), SystemProcessWorker(), TdiCloseDevice(), TdiOpenDevice(), TestCreateEvent(), TestEventConcurrent(), TestPhysicalMemorySection(), TestSymlinks(), TestTcpConnect(), UDFDismountDevice(), uninit(), USBAudioInitComponentId(), USBAudioRegCreateMediaCategoriesKey(), USBD_GetPdoRegistryParameter(), USBH_SetPdoRegistryParameter(), USBH_WriteFailReasonID(), USBPORT_GetRegistryKeyValueFullInfo(), USBPORT_SetRegistryKeyValue(), UserChangeDisplaySettings(), UserEnumDisplayDevices(), UserEnumRegistryDisplaySettings(), UserGetLanguageID(), UserLoadImage(), UserLoadKbdFile(), UserProcessDestroy(), VdmpInitialize(), VfatSetRenameInformation(), VfdCloseImage(), VfdCreateDevice(), VfdDeleteDevice(), VfdOpenImage(), ViCreateDriveLetter(), ViMountImage(), WdfDeleteKmdfVersionFromRegistry(), WdfWriteKmdfVersionToRegistry(), WdmAudCleanup(), WdmAudIoctlClose(), WdmAudOpenSysAudioDevices(), WorkerThread(), xHalIoAssignDriveLetters(), and CRegistryKey::~CRegistryKey().

◆ ZwCloseObjectAuditAlarm()

NTSYSAPI NTSTATUS NTAPI ZwCloseObjectAuditAlarm ( _In_ PUNICODE_STRING  SubsystemName,
_In_ PVOID  HandleId,
_In_ BOOLEAN  GenerateOnClose 
)

◆ ZwCreateDirectoryObject()

◆ ZwCreateSymbolicLinkObject()

NTSYSAPI NTSTATUS NTAPI ZwCreateSymbolicLinkObject ( _Out_ PHANDLE  SymbolicLinkHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_ATTRIBUTES  ObjectAttributes,
_In_ PUNICODE_STRING  Name 
)

◆ ZwDeleteObjectAuditAlarm()

NTSYSAPI NTSTATUS NTAPI ZwDeleteObjectAuditAlarm ( _In_ PUNICODE_STRING  SubsystemName,
_In_ PVOID  HandleId,
_In_ BOOLEAN  GenerateOnClose 
)

◆ ZwMakePermanentObject()

NTSYSAPI NTSTATUS NTAPI ZwMakePermanentObject ( _In_ HANDLE  Object)

◆ ZwMakeTemporaryObject()

◆ ZwOpenDirectoryObject()

◆ ZwOpenJobObject()

NTSYSAPI NTSTATUS NTAPI ZwOpenJobObject ( _Out_ PHANDLE  JobHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_ATTRIBUTES  ObjectAttributes 
)

◆ ZwOpenSymbolicLinkObject()

◆ ZwSetInformationObject()

NTSYSAPI NTSTATUS NTAPI ZwSetInformationObject ( _In_ HANDLE  ObjectHandle,
_In_ OBJECT_INFORMATION_CLASS  ObjectInformationClass,
_In_ PVOID  ObjectInformation,
_In_ ULONG  Length 
)

◆ ZwSignalAndWaitForSingleObject()

NTSYSAPI NTSTATUS NTAPI ZwSignalAndWaitForSingleObject ( _In_ HANDLE  SignalObject,
_In_ HANDLE  WaitObject,
_In_ BOOLEAN  Alertable,
_In_opt_ PLARGE_INTEGER  Time 
)

◆ ZwWaitForMultipleObjects()

NTSYSAPI NTSTATUS NTAPI ZwWaitForMultipleObjects ( _In_ ULONG  Count,
_In_ HANDLE  Object[],
_In_ WAIT_TYPE  WaitType,
_In_ BOOLEAN  Alertable,
_In_ PLARGE_INTEGER  Time 
)

Referenced by KernelModeTest().

Variable Documentation

◆ Buffer

Definition at line 484 of file obfuncs.h.

◆ BufferLength

Definition at line 485 of file obfuncs.h.

◆ Context

◆ DesiredAccess

◆ HandleAttributes

◆ Length

Definition at line 307 of file obfuncs.h.

◆ LengthNeeded

Definition at line 308 of file obfuncs.h.

◆ ObjectInformationClass

_In_ OBJECT_INFORMATION_CLASS ObjectInformationClass

Definition at line 292 of file obfuncs.h.

◆ ObjectInformationLength

_In_ OBJECT_INFORMATION_CLASS _In_ ULONG ObjectInformationLength

Definition at line 294 of file obfuncs.h.

◆ Options

◆ RestartScan

Definition at line 487 of file obfuncs.h.

◆ ReturnLength

Definition at line 295 of file obfuncs.h.

◆ ReturnSingleEntry

_Out_ PVOID _In_ ULONG _In_ BOOLEAN ReturnSingleEntry

Definition at line 486 of file obfuncs.h.

◆ SecurityInformation

_In_ SECURITY_INFORMATION SecurityInformation

Definition at line 305 of file obfuncs.h.

◆ SourceHandle

◆ TargetHandle

◆ TargetProcessHandle

_In_ HANDLE _In_opt_ HANDLE TargetProcessHandle

Definition at line 430 of file obfuncs.h.

Referenced by NtDuplicateObject().