83 HaveBackupPriv =
TRUE;
116 HaveBackupPriv =
TRUE;
121 AccessState->RemainingDesiredAccess &= ~WriteAccess;
129 if (!HaveBackupPriv) *
CreateOptions &= ~FILE_OPEN_FOR_BACKUP_INTENT;
145 DPRINT1(
"\nYou are seeing this because the following ROS driver: %wZ\n"
146 "sucks. Please fix its AddDevice routine.\n",
152 !(OpenPacket->RelatedFileObject) &&
188 (DataBuffer->SymbolicLinkReparseBuffer.PrintNameLength +
189 DataBuffer->SymbolicLinkReparseBuffer.SubstituteNameLength +
200 DataBuffer->MountPointReparseBuffer.SubstituteNameOffset);
201 Length = DataBuffer->MountPointReparseBuffer.SubstituteNameLength;
222 if (NewBuffer ==
NULL)
234 if (DataBuffer->Reserved)
238 DataBuffer->Reserved);
309 if (OpenPacket->TraversedMountPoint)
311 OpenPacket->TraversedMountPoint =
FALSE;
342 BOOLEAN DirectOpen =
FALSE, OpenCancelled, UseDummyFile;
496 OriginalDeviceObject,
498 OriginalDeviceObject->SecurityDescriptor,
578 DPRINT1(
"Traverse access failed!\n");
628 if ((OriginalDeviceObject->Vpb) && !(DirectOpen))
632 OriginalDeviceObject,
722 OriginalDeviceObject->SecurityDescriptor,
764 Irp->Tail.Overlay.AuxiliaryBuffer =
NULL;
810 Irp->AssociatedIrp.SystemBuffer = OpenPacket->
EaBuffer;
919 FileObject->FileObjectExtension = FileObjectExtension;
944 FileObject->DeviceObject = OriginalDeviceObject;
1108 if (CompleteName->MaximumLength <
FileObject->FileName.Length)
1110 PWSTR NewCompleteName;
1114 if (NewCompleteName ==
NULL)
1121 if (CompleteName->Buffer !=
NULL)
1132 CompleteName->Buffer = NewCompleteName;
1133 CompleteName->MaximumLength =
FileObject->FileName.Length;
1186 KeBugCheckEx(DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN,
1400 Irp->UserIosb = &
Irp->IoStatus;
1426 DereferenceDone =
TRUE;
1473 if (!DereferenceDone)
1540 OldSecurityDescriptor =
DeviceObject->SecurityDescriptor;
1541 if (OldSecurityDescriptor !=
NULL)
1550 NewSecurityDescriptor = OldSecurityDescriptor;
1557 if (OldSecurityDescriptor !=
NULL)
1567 &CachedSecurityDescriptor, 1);
1578 if (
DeviceObject->SecurityDescriptor == OldSecurityDescriptor)
1581 DeviceObject->SecurityDescriptor = CachedSecurityDescriptor;
1628 if (CurrentDO == UpperDeviceObject)
1634 NextDevice = CurrentDO->AttachedDevice;
1642 CurrentDO = NextDevice;
1644 while (CurrentDO !=
NULL);
1702 if (OperationCode == QuerySecurityDescriptor)
1709 else if (OperationCode == DeleteSecurityDescriptor)
1714 else if (OperationCode == AssignSecurityDescriptor)
1731 DeviceObject->SecurityDescriptor = CachedSecurityDescriptor;
1741 else if (OperationCode == SetSecurityDescriptor)
1770 else if (OperationCode == DeleteSecurityDescriptor)
1814 Irp->Overlay.AsynchronousParameters.UserApcRoutine =
NULL;
1821 if (OperationCode == QuerySecurityDescriptor)
1886 if (OperationCode == QuerySecurityDescriptor)
1899 else if (OperationCode == QuerySecurityDescriptor)
1984 if (
Length < LocalReturnLength)
2012 &LocalReturnLength);
2027 p = (
PWCHAR)(ObjectNameInfo + 1);
2032 if (QueryDosName && NoObCall)
2053 (LocalReturnLength >
Length) ?
2054 Length : LocalReturnLength);
2058 ObjectNameInfo->Name.Buffer =
p;
2064 if (LocalReturnLength >
Length)
2069 LengthMismatch =
TRUE;
2089 &LocalReturnLength);
2097 &LocalReturnLength);
2162 ObjectNameInfo->Name.MaximumLength = (
USHORT)ObjectNameInfo->Name.Length +
2196 if ((
FileObject->LockOperation) && (SystemHandleCount != 1))
2230 Irp->UserIosb = &
Irp->IoStatus;
2235 Irp->Overlay.AsynchronousParameters.UserApcRoutine =
NULL;
2266 if (SystemHandleCount != 1)
return;
2299 Irp->UserIosb = &
Irp->IoStatus;
2302 Irp->Overlay.AsynchronousParameters.UserApcRoutine =
NULL;
2413 DPRINT(
"IopQueryAttributesFile failed for '%wZ' with 0x%lx\n",
2432 FileInformationSize);
2478 *LockFailed =
FALSE;
2500 FileObjectExtension =
FileObject->FileObjectExtension;
2521 FileObjectExtension =
FileObject->FileObjectExtension;
2575 ULONG EaErrorOffset;
2599 DPRINT1(
"File Create 'FileAttributes' Parameter contains invalid flags!\n");
2605 DPRINT1(
"File Create 'ShareAccess' Parameter contains invalid flags!\n");
2611 DPRINT1(
"File Create 'Disposition' Parameter is out of range!\n");
2617 DPRINT1(
"File Create 'CreateOptions' parameter contains invalid flags!\n");
2624 DPRINT1(
"File Create 'CreateOptions' parameter FILE_SYNCHRONOUS_IO_* requested, but 'DesiredAccess' does not have SYNCHRONIZE!\n");
2630 DPRINT1(
"File Create 'CreateOptions' parameter FILE_DELETE_ON_CLOSE requested, but 'DesiredAccess' does not have DELETE!\n");
2637 DPRINT1(
"File Create 'FileAttributes' parameter both FILE_SYNCHRONOUS_IO_NONALERT and FILE_SYNCHRONOUS_IO_ALERT specified!\n");
2654 DPRINT1(
"File Create 'CreateOptions' Parameter has flags incompatible with FILE_DIRECTORY_FILE!\n");
2661 DPRINT1(
"File Create 'CreateOptions' Parameter FILE_DIRECTORY_FILE requested, but 'Disposition' is not FILE_CREATE/FILE_OPEN/FILE_OPEN_IF!\n");
2667 DPRINT1(
"File Create 'CreateOptions' Parameter both FILE_COMPLETE_IF_OPLOCKED and FILE_RESERVE_OPFILTER specified!\n");
2673 DPRINT1(
"File Create 'CreateOptions' parameter FILE_NO_INTERMEDIATE_BUFFERING requested, but 'DesiredAccess' FILE_APPEND_DATA requires it!\n");
2681 if (!ExtraCreateParameters)
2683 DPRINT1(
"Invalid parameter: ExtraCreateParameters == 0!\n");
2688 NamedPipeCreateParameters = ExtraCreateParameters;
2697 DPRINT1(
"Invalid named pipe create\n");
2704 if (!ExtraCreateParameters)
2706 DPRINT1(
"Invalid parameter: ExtraCreateParameters == 0!\n");
2717 DPRINT1(
"Invalid mailslot create\n");
2748 if (SafeAllocationSize.
QuadPart < 0)
2773 DPRINT1(
"Invalid EA buffer\n");
2821 DPRINT1(
"Failed to allocate open packet EA buffer\n");
2836 DPRINT1(
"Invalid EA buffer\n");
2848 OpenPacket->
Size =
sizeof(*OpenPacket);
3037 ExtraCreateParameters,
3087 ExtraCreateParameters,
3125 (
PVOID*)&CreatedFileObject);
3148 (
PVOID*)&CreatedFileObject,
3177 return CreatedFileObject;
3222 (
PVOID*)&CreatedFileObject);
3257 return CreatedFileObject;
3621 Irp->UserIosb = &
Irp->IoStatus;
3622 Irp->Overlay.AsynchronousParameters.UserApcRoutine =
NULL;
3679 if (LocalInfo ==
NULL)
3731 if (Remote && !FlagSet)
3736 else if (!Remote && FlagSet)
3821 Buffer.ReadTimeout = *TimeOut;
3834 Buffer.MailslotQuota = MailslotQuota;
3835 Buffer.MaximumMessageSize = MaxMessageSize;
3897 Buffer.DefaultTimeout = *DefaultTimeout;
3910 Buffer.NamedPipeType = NamedPipeType;
3911 Buffer.ReadMode = ReadMode;
3912 Buffer.CompletionMode = CompletionMode;
3913 Buffer.MaximumInstances = MaximumInstances;
3914 Buffer.InboundQuota = InboundQuota;
3915 Buffer.OutboundQuota = OutboundQuota;
4069 NextEntry = ListHead->
Flink;
4070 while (ListHead != NextEntry)
4078 OurIrpsInList =
TRUE;
4082 NextEntry = NextEntry->
Flink;
4095 while (OurIrpsInList)
4099 OurIrpsInList =
FALSE;
4105 NextEntry = ListHead->
Flink;
4106 while (NextEntry != ListHead)
4113 OurIrpsInList =
TRUE;
4118 NextEntry = NextEntry->
Flink;
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG ReturnLength
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG _In_ KPROCESSOR_MODE PreviousMode
static GENERIC_MAPPING GenericMapping
BOOLEAN NTAPI SeAccessCheck(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext, _In_ BOOLEAN SubjectContextLocked, _In_ ACCESS_MASK DesiredAccess, _In_ ACCESS_MASK PreviouslyGrantedAccess, _Out_ PPRIVILEGE_SET *Privileges, _In_ PGENERIC_MAPPING GenericMapping, _In_ KPROCESSOR_MODE AccessMode, _Out_ PACCESS_MASK GrantedAccess, _Out_ PNTSTATUS AccessStatus)
Determines whether security access rights can be given to an object depending on the security descrip...
#define OBJ_NAME_PATH_SEPARATOR
#define InterlockedIncrement
#define InterlockedExchange
#define InterlockedDecrement
#define FILE_DIRECTORY_FILE
#define FILE_NON_DIRECTORY_FILE
#define FILE_OPEN_FOR_FREE_SPACE_QUERY
#define FILE_COMPLETE_IF_OPLOCKED
#define FILE_DELETE_ON_CLOSE
DECLSPEC_NORETURN VOID NTAPI KeBugCheckEx(IN ULONG BugCheckCode, IN ULONG_PTR BugCheckParameter1, IN ULONG_PTR BugCheckParameter2, IN ULONG_PTR BugCheckParameter3, IN ULONG_PTR BugCheckParameter4)
PDEVICE_OBJECT PhysicalDeviceObject
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
#define FILE_DEVICE_SECURE_OPEN
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define STATUS_NOT_IMPLEMENTED
#define STATUS_OBJECT_TYPE_MISMATCH
#define NT_SUCCESS(StatCode)
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK _In_ USHORT ShareAccess
#define ExAllocatePoolWithTag(hernya, size, tag)
#define PsGetCurrentThread()
#define KeRaiseIrql(irql, oldIrql)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
struct _DEVICE_OBJECT * PDEVICE_OBJECT
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define ExAcquireResourceExclusiveLite(res, wait)
#define DO_DEVICE_INITIALIZING
#define KeDelayExecutionThread(mode, foo, t)
#define DO_NEVER_LAST_DEVICE
#define ExAcquireResourceSharedLite(res, wait)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
#define ExGetPreviousMode
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define BooleanFlagOn(F, SF)
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
IN PVCB IN PDIRENT OUT PULONG EaLength
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
VOID NTAPI FsRtlPTeardownPerFileObjectContexts(IN PFILE_OBJECT FileObject)
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
#define FILE_OPEN_BY_FILE_ID
@ FileNetworkOpenInformation
#define FILE_MAXIMUM_DISPOSITION
#define FILE_NO_COMPRESSION
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
#define FILE_OPEN_REPARSE_POINT
#define FILE_RESERVE_OPFILTER
#define FILE_SYNCHRONOUS_IO_NONALERT
#define FILE_NO_INTERMEDIATE_BUFFERING
#define FILE_RANDOM_ACCESS
#define FILE_WRITE_THROUGH
#define FILE_SEQUENTIAL_ONLY
#define FILE_SYNCHRONOUS_IO_ALERT
#define FILE_OPEN_FOR_BACKUP_INTENT
_In_ PLIST_ENTRY _In_ PSTRING _In_ USHORT _In_opt_ PSTRING _In_opt_ PSTRING _In_ ULONG _In_ ULONG _In_opt_ PVOID _In_opt_ PVOID FilterContext
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
VOID NTAPI KeFlushWriteBuffer(VOID)
VOID FASTCALL KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, IN KIRQL OldIrql)
KIRQL FASTCALL KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber)
__in WDFOBJECT __in PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
HLOCAL NTAPI LocalHandle(LPCVOID pMem)
#define EXCEPTION_EXECUTE_HANDLER
#define InterlockedCompareExchangePointer
static __inline NTSTATUS IopLockFileObject(_In_ PFILE_OBJECT FileObject, _In_ KPROCESSOR_MODE WaitMode)
static __inline BOOLEAN IopValidateOpenPacket(IN POPEN_PACKET OpenPacket)
FORCEINLINE VOID IopQueueIrpToThread(IN PIRP Irp)
static __inline VOID IopUpdateOperationCount(IN IOP_TRANSFER_TYPE Type)
static __inline VOID IopUnlockFileObject(IN PFILE_OBJECT FileObject)
FORCEINLINE VOID IopUnQueueIrpFromThread(IN PIRP Irp)
NTSTATUS NTAPI IoQueryFileInformation(IN PFILE_OBJECT FileObject, IN FILE_INFORMATION_CLASS FileInformationClass, IN ULONG Length, OUT PVOID FileInformation, OUT PULONG ReturnedLength)
POBJECT_TYPE IoFileObjectType
#define KeLeaveCriticalRegion()
#define KeEnterCriticalRegion()
#define REPARSE_DATA_BUFFER_HEADER_SIZE
#define ExFreePoolWithTag(_P, _T)
#define FILE_BASIC_INFORMATION
#define InitializeObjectAttributes(p, n, a, r, s)
DWORD * PSECURITY_INFORMATION
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
_Out_ PNDIS_HANDLE _Out_ PUINT FileLength
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT _In_ UINT _In_ NDIS_HANDLE _In_ NDIS_HANDLE _In_ PNDIS_STRING _In_ UINT OpenOptions
#define KeGetPreviousMode()
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
_In_ PVOID _In_ BOOLEAN Alertable
#define DOE_DELETE_PENDING
#define FILE_PIPE_MESSAGE_TYPE
#define FO_FILE_OBJECT_HAS_EXTENSION
#define IO_ATTACH_DEVICE_API
#define DOE_REMOVE_PROCESSED
#define DOE_UNLOAD_PENDING
#define FILE_PIPE_COMPLETE_OPERATION
#define DOE_REMOVE_PENDING
#define FILE_PIPE_MESSAGE_MODE
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define OBJECT_TO_OBJECT_HEADER(o)
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
NTSYSAPI VOID NTAPI RtlMapGenericMask(PACCESS_MASK AccessMask, PGENERIC_MAPPING GenericMapping)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
#define FILE_ATTRIBUTE_VALID_FLAGS
#define ACCESS_SYSTEM_SECURITY
#define FILE_READ_ATTRIBUTES
#define FILE_VALID_PIPE_OPTION_FLAGS
struct _OBJECT_NAME_INFORMATION OBJECT_NAME_INFORMATION
#define FILE_SHARE_DELETE
#define FILE_SHARE_VALID_FLAGS
#define FILE_VALID_OPTION_FLAGS
#define FILE_ADD_SUBDIRECTORY
#define FILE_VALID_MAILSLOT_OPTION_FLAGS
NTSTATUS NTAPI NtCreateFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength)
#define FILE_GENERIC_READ
#define FILE_GENERIC_WRITE
_In_ ULONG _In_ ULONG _In_ ULONG Length
static OUT PIO_STATUS_BLOCK IoStatusBlock
static OUT PIO_STATUS_BLOCK OUT PVOID FileInformation
static OUT PIO_STATUS_BLOCK OUT PVOID IN ULONG IN FILE_INFORMATION_CLASS FileInformationClass
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
GENERIC_MAPPING IopFileMapping
#define IOP_USE_TOP_LEVEL_DEVICE_HINT
struct _OPEN_PACKET * POPEN_PACKET
PVPB NTAPI IopCheckVpbMounted(IN POPEN_PACKET OpenPacket, IN PDEVICE_OBJECT DeviceObject, IN PUNICODE_STRING RemainingName, OUT PNTSTATUS Status)
struct _FILE_OBJECT_EXTENSION FILE_OBJECT_EXTENSION
BOOLEAN NTAPI IopVerifyDeviceObjectOnStack(IN PDEVICE_OBJECT BaseDeviceObject, IN PDEVICE_OBJECT TopDeviceObjectHint)
VOID NTAPI IopDereferenceDeviceObject(IN PDEVICE_OBJECT DeviceObject, IN BOOLEAN ForceUnload)
NTSTATUS NTAPI IopCleanupFailedIrp(IN PFILE_OBJECT FileObject, IN PKEVENT EventObject, IN PVOID Buffer OPTIONAL)
PIRP NTAPI IopAllocateIrpMustSucceed(IN CCHAR StackSize)
#define IOP_CREATE_FILE_OBJECT_EXTENSION
#define IOP_MAX_REPARSE_TRAVERSAL
#define IOTRACE(x, fmt,...)
struct _FILE_OBJECT_EXTENSION * PFILE_OBJECT_EXTENSION
NTSTATUS NTAPI IopGetFileInformation(IN PFILE_OBJECT FileObject, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInfoClass, OUT PVOID Buffer, OUT PULONG ReturnedLength)
VOID NTAPI IopDereferenceVpbAndFree(IN PVPB Vpb)
struct _OPEN_PACKET OPEN_PACKET
#define IoGetDevObjExtension(DeviceObject)
const LUID SeBackupPrivilege
const LUID SeRestorePrivilege
NTSTATUS NTAPI SeSetWorldSecurityDescriptor(_In_ SECURITY_INFORMATION SecurityInformation, _In_ PISECURITY_DESCRIPTOR SecurityDescriptor, _In_ PULONG BufferLength)
Sets a "World" security descriptor.
BOOLEAN NTAPI SeFastTraverseCheck(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ PACCESS_STATE AccessState, _In_ ACCESS_MASK DesiredAccess, _In_ KPROCESSOR_MODE AccessMode)
Determines whether security access rights can be given to an object depending on the security descrip...
PDEVICE_OBJECT NTAPI IoGetRelatedDeviceObject(IN PFILE_OBJECT FileObject)
PDEVICE_OBJECT NTAPI IoGetAttachedDevice(PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IopQueryAttributesFile(IN POBJECT_ATTRIBUTES ObjectAttributes, IN FILE_INFORMATION_CLASS FileInformationClass, IN ULONG FileInformationSize, OUT PVOID FileInformation)
VOID NTAPI IoCancelFileOpen(IN PDEVICE_OBJECT DeviceObject, IN PFILE_OBJECT FileObject)
NTSTATUS NTAPI IoChangeFileObjectFilterContext(IN PFILE_OBJECT FileObject, IN PVOID FilterContext, IN BOOLEAN Define)
VOID NTAPI IoSetShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, OUT PSHARE_ACCESS ShareAccess)
NTSTATUS NTAPI NtQueryAttributesFile(IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PFILE_BASIC_INFORMATION FileInformation)
NTSTATUS NTAPI NtCancelIoFile(IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock)
NTSTATUS NTAPI IopSetDeviceSecurityDescriptor(IN PDEVICE_OBJECT DeviceObject, IN PSECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
NTSTATUS NTAPI IoSetFileOrigin(IN PFILE_OBJECT FileObject, IN BOOLEAN Remote)
NTSTATUS NTAPI IoCreateFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG Disposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength, IN CREATE_FILE_TYPE CreateFileType, IN PVOID ExtraCreateParameters OPTIONAL, IN ULONG Options)
ERESOURCE IopSecurityResource
BOOLEAN NTAPI IoFastQueryNetworkAttributes(IN POBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK DesiredAccess, IN ULONG OpenOptions, OUT PIO_STATUS_BLOCK IoStatus, OUT PFILE_NETWORK_OPEN_INFORMATION Buffer)
NTSTATUS NTAPI IoCheckQuotaBufferValidity(IN PFILE_QUOTA_INFORMATION QuotaBuffer, IN ULONG QuotaLength, OUT PULONG ErrorOffset)
NTSTATUS NTAPI IoCheckShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess, IN BOOLEAN Update)
NTSTATUS NTAPI IopAcquireFileObjectLock(_In_ PFILE_OBJECT FileObject, _In_ KPROCESSOR_MODE WaitMode, _In_ BOOLEAN Alertable, _Out_ PBOOLEAN LockFailed)
NTSTATUS NTAPI IopQueryNameInternal(IN PVOID ObjectBody, IN BOOLEAN HasName, IN BOOLEAN QueryDosName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE PreviousMode)
PDEVICE_OBJECT NTAPI IopGetDevicePDO(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoRemoveShareAccess(IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess)
NTSTATUS IopCheckTopDeviceHint(IN OUT PDEVICE_OBJECT *DeviceObject, IN POPEN_PACKET OpenPacket, BOOLEAN DirectOpen)
NTSTATUS NTAPI IopGetSetSecurityObject(IN PVOID ObjectBody, IN SECURITY_OPERATION_CODE OperationCode, IN PSECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG BufferLength, IN OUT PSECURITY_DESCRIPTOR *OldSecurityDescriptor, IN POOL_TYPE PoolType, IN OUT PGENERIC_MAPPING GenericMapping)
NTSTATUS NTAPI IoCheckQuerySetFileInformation(IN FILE_INFORMATION_CLASS FileInformationClass, IN ULONG Length, IN BOOLEAN SetOperation)
VOID NTAPI IopCheckBackupRestorePrivilege(IN PACCESS_STATE AccessState, IN OUT PULONG CreateOptions, IN KPROCESSOR_MODE PreviousMode, IN ULONG Disposition)
NTSTATUS NTAPI IopParseFile(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context OPTIONAL, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *Object)
NTSTATUS NTAPI IoQueryFileDosDeviceName(IN PFILE_OBJECT FileObject, OUT POBJECT_NAME_INFORMATION *ObjectNameInformation)
VOID NTAPI IopDoNameTransmogrify(IN PIRP Irp, IN PFILE_OBJECT FileObject, IN PREPARSE_DATA_BUFFER DataBuffer)
PFILE_OBJECT NTAPI IoCreateStreamFileObjectEx(IN PFILE_OBJECT FileObject OPTIONAL, IN PDEVICE_OBJECT DeviceObject OPTIONAL, OUT PHANDLE FileObjectHandle OPTIONAL)
VOID NTAPI IopCloseFile(IN PEPROCESS Process OPTIONAL, IN PVOID ObjectBody, IN ACCESS_MASK GrantedAccess, IN ULONG HandleCount, IN ULONG SystemHandleCount)
NTSTATUS NTAPI NtCreateMailslotFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG CreateOptions, IN ULONG MailslotQuota, IN ULONG MaxMessageSize, IN PLARGE_INTEGER TimeOut)
NTSTATUS NTAPI NtFlushWriteBuffer(VOID)
PVOID NTAPI IoGetFileObjectFilterContext(IN PFILE_OBJECT FileObject)
NTSTATUS NTAPI IopQueryName(IN PVOID ObjectBody, IN BOOLEAN HasName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE PreviousMode)
NTSTATUS NTAPI NtQueryFullAttributesFile(IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation)
NTSTATUS NTAPI IopCreateFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG Disposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength, IN CREATE_FILE_TYPE CreateFileType, IN PVOID ExtraCreateParameters OPTIONAL, IN ULONG Options, IN ULONG Flags, IN PDEVICE_OBJECT DeviceObject OPTIONAL)
PGENERIC_MAPPING NTAPI IoGetFileObjectGenericMapping(VOID)
PFILE_OBJECT NTAPI IoCreateStreamFileObject(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI NtDeleteFile(IN POBJECT_ATTRIBUTES ObjectAttributes)
NTSTATUS NTAPI IopCheckDeviceAndDriver(IN POPEN_PACKET OpenPacket, IN PDEVICE_OBJECT DeviceObject)
PDEVICE_OBJECT NTAPI IopGetDeviceAttachmentBase(IN PDEVICE_OBJECT DeviceObject)
PFILE_OBJECT NTAPI IoCreateStreamFileObjectLite(IN PFILE_OBJECT FileObject OPTIONAL, IN PDEVICE_OBJECT DeviceObject OPTIONAL)
BOOLEAN NTAPI IoIsFileOriginRemote(IN PFILE_OBJECT FileObject)
NTSTATUS NTAPI NtCreateNamedPipeFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN ULONG NamedPipeType, IN ULONG ReadMode, IN ULONG CompletionMode, IN ULONG MaximumInstances, IN ULONG InboundQuota, IN ULONG OutboundQuota, IN PLARGE_INTEGER DefaultTimeout)
VOID NTAPI IopDeleteFile(IN PVOID ObjectBody)
VOID NTAPI IoUpdateShareAccess(IN PFILE_OBJECT FileObject, OUT PSHARE_ACCESS ShareAccess)
NTSTATUS NTAPI IopParseDevice(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *Object)
NTSTATUS NTAPI IopSetDeviceSecurityDescriptors(IN PDEVICE_OBJECT UpperDeviceObject, IN PDEVICE_OBJECT PhysicalDeviceObject, IN PSECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
NTSTATUS NTAPI IoCreateFileSpecifyDeviceObjectHint(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG Disposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength, IN CREATE_FILE_TYPE CreateFileType, IN PVOID ExtraCreateParameters OPTIONAL, IN ULONG Options, IN PVOID DeviceObject)
PIRP NTAPI IoAllocateIrp(IN CCHAR StackSize, IN BOOLEAN ChargeQuota)
BOOLEAN NTAPI IoCancelIrp(IN PIRP Irp)
VOID NTAPI IoFreeIrp(IN PIRP Irp)
NTSTATUS NTAPI IoCheckEaBufferValidity(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
NTSTATUS NTAPI IoVolumeDeviceToDosName(_In_ PVOID VolumeDeviceObject, _Out_ _When_(return==0, _At_(DosName->Buffer, __drv_allocatesMem(Mem))) PUNICODE_STRING DosName)
VOID NTAPI SeSetAccessStateGenericMapping(_In_ PACCESS_STATE AccessState, _In_ PGENERIC_MAPPING GenericMapping)
Sets a new generic mapping for an allocated access state.
VOID NTAPI SeOpenObjectAuditAlarm(_In_ PUNICODE_STRING ObjectTypeName, _In_opt_ PVOID Object, _In_opt_ PUNICODE_STRING AbsoluteObjectName, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ PACCESS_STATE AccessState, _In_ BOOLEAN ObjectCreated, _In_ BOOLEAN AccessGranted, _In_ KPROCESSOR_MODE AccessMode, _Out_ PBOOLEAN GenerateOnClose)
Creates an audit with alarm notification of an object that is being opened.
BOOLEAN NTAPI SePrivilegeCheck(_In_ PPRIVILEGE_SET Privileges, _In_ PSECURITY_SUBJECT_CONTEXT SubjectContext, _In_ KPROCESSOR_MODE PreviousMode)
Checks if a set of privileges exist and match within a security subject context.
VOID NTAPI SeFreePrivileges(_In_ PPRIVILEGE_SET Privileges)
Frees a set of privileges.
NTSTATUS NTAPI SeAppendPrivileges(_Inout_ PACCESS_STATE AccessState, _In_ PPRIVILEGE_SET Privileges)
Appends additional privileges.
#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER
#define STATUS_MOUNT_POINT_NOT_RESOLVED
#define STATUS_INVALID_PARAMETER_MIX
#define STATUS_ALREADY_COMMITTED
#define STATUS_IO_REPARSE_DATA_INVALID
#define STATUS_OBJECT_PATH_INVALID
#define STATUS_INVALID_INFO_CLASS
VOID NTAPI ObFreeObjectCreateInfoBuffer(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
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)
NTSTATUS NTAPI ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN OUT PVOID ParseContext, OUT PHANDLE Handle)
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)
NTSTATUS NTAPI ObQueryNameString(IN PVOID Object, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength)
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
NTSTATUS NTAPI ObLogSecurityDescriptor(IN PSECURITY_DESCRIPTOR InputSecurityDescriptor, OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor, IN ULONG RefBias)
VOID NTAPI ObDereferenceSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN ULONG Count)
VOID NTAPI ObReferenceSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN ULONG Count)
#define FILE_DEVICE_FILE_SYSTEM
#define FILE_DEVICE_DISK_FILE_SYSTEM
#define FILE_DEVICE_TAPE_FILE_SYSTEM
#define FILE_DEVICE_CD_ROM
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM
#define FILE_DEVICE_NETWORK_FILE_SYSTEM
#define FILE_DEVICE_DFS_FILE_SYSTEM
#define FILE_DEVICE_VIRTUAL_DISK
#define OBJ_CASE_INSENSITIVE
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define IRP_MJ_LOCK_CONTROL
#define ProbeForWriteHandle(Ptr)
#define ProbeForWriteIoStatusBlock(Ptr)
#define ProbeForReadLargeInteger(Ptr)
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
struct _REPARSE_DATA_BUFFER * PREPARSE_DATA_BUFFER
PULONG MinorVersion OPTIONAL
OBJECT_HEADER ObjectHeader
PDEVICE_OBJECT TopDeviceObjectHint
PACCESS_STATE AccessState
PSECURITY_QUALITY_OF_SERVICE SecurityQos
ACCESS_MASK DesiredAccess
struct _IO_STACK_LOCATION::@4315::@4333 QuerySecurity
union _IO_STACK_LOCATION::@1670 Parameters
struct _IO_STACK_LOCATION::@4315::@4317 CreatePipe
struct _IO_STACK_LOCATION::@4315::@4334 SetSecurity
struct _IO_STACK_LOCATION::@4315::@4316 Create
struct _IO_STACK_LOCATION::@4315::@4318 CreateMailslot
struct _LIST_ENTRY * Flink
GENERIC_MAPPING GenericMapping
OBJECT_TYPE_INITIALIZER TypeInfo
LARGE_INTEGER AllocationSize
PFILE_BASIC_INFORMATION BasicInformation
PVOID ExtraCreateParameters
PFILE_NETWORK_OPEN_INFORMATION NetworkInformation
CREATE_FILE_TYPE CreateFileType
PDUMMY_FILE_OBJECT LocalFileObject
PDEVICE_OBJECT TopDeviceObjectHint
BOOLEAN TraversedMountPoint
PFILE_OBJECT RelatedFileObject
VOID NTAPI SeLockSubjectContext(_In_ PSECURITY_SUBJECT_CONTEXT SubjectContext)
Locks both the referenced primary and client access tokens of a security subject context.
VOID NTAPI SeUnlockSubjectContext(_In_ PSECURITY_SUBJECT_CONTEXT SubjectContext)
Unlocks both the referenced primary and client access tokens of a security subject context.
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_NO_SUCH_DEVICE
#define STATUS_UNSUCCESSFUL
#define STATUS_INFO_LENGTH_MISMATCH
#define STATUS_SHARING_VIOLATION
#define STATUS_INSUFFICIENT_RESOURCES
#define NT_WARNING(Status)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG _Out_opt_ PULONG CreateDisposition
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
struct _FILE_NAME_INFORMATION * PFILE_NAME_INFORMATION
_In_ ULONG _Out_opt_ PULONG RequiredLength
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
_Must_inspect_result_ _In_ ULONG Flags
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_opt_ PVOID EaBuffer
_In_opt_ PDEVICE_OBJECT _Out_opt_ PHANDLE FileObjectHandle
_In_ ULONG DesiredShareAccess
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_opt_ PVOID _In_ ULONG _In_ CREATE_FILE_TYPE CreateFileType
#define IRP_MN_UNLOCK_ALL
#define FO_FILE_OPEN_CANCELLED
#define IRP_DEALLOCATE_BUFFER
#define FO_SEQUENTIAL_ONLY
#define IRP_CLOSE_OPERATION
#define IRP_SYNCHRONOUS_API
#define IO_FORCE_ACCESS_CHECK
#define IRP_MJ_CREATE_NAMED_PIPE
#define IRP_MJ_CREATE_MAILSLOT
#define IO_NO_PARAMETER_CHECKING
#define IO_CHECK_CREATE_PARAMETERS
#define DO_BUS_ENUMERATED_DEVICE
#define FO_OPENED_CASE_SENSITIVE
#define FO_HANDLE_CREATED
#define IRP_CREATE_OPERATION
#define IRP_MJ_QUERY_SECURITY
#define IRP_DEFER_IO_COMPLETION
#define FO_DIRECT_DEVICE_OPEN
#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE
#define FO_NO_INTERMEDIATE_BUFFERING
@ CreateFileTypeNamedPipe
#define IO_REPARSE_TAG_MOUNT_POINT
#define FO_SYNCHRONOUS_IO
enum _CREATE_FILE_TYPE CREATE_FILE_TYPE
#define IO_TYPE_OPEN_PACKET
#define IRP_MJ_SET_SECURITY
#define SL_CASE_SENSITIVE
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
@ LockQueueIoDatabaseLock
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
#define ObDereferenceObject
#define ObReferenceObject
#define PsGetCurrentProcess
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET * Privileges
NTKERNELAPI NTSTATUS NTAPI SeSetSecurityDescriptorInfo(_In_opt_ PVOID Object, _In_ PSECURITY_INFORMATION SecurityInformation, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Inout_ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, _In_ POOL_TYPE PoolType, _In_ PGENERIC_MAPPING GenericMapping)
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE _In_ BOOLEAN _In_ BOOLEAN AccessGranted
NTKERNELAPI NTSTATUS NTAPI SeQuerySecurityDescriptorInfo(_In_ PSECURITY_INFORMATION SecurityInformation, _Out_writes_bytes_(*Length) PSECURITY_DESCRIPTOR SecurityDescriptor, _Inout_ PULONG Length, _Inout_ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor)
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
_In_ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess
#define TOKEN_HAS_TRAVERSE_PRIVILEGE
#define TOKEN_HAS_BACKUP_PRIVILEGE
#define TOKEN_HAS_RESTORE_PRIVILEGE
#define TOKEN_IS_RESTRICTED
#define PRIVILEGE_SET_ALL_NECESSARY
#define SE_BACKUP_PRIVILEGES_CHECKED