ReactOS  0.4.15-dev-2361-g32428a3
zwfuncs.h File Reference

Go to the source code of this file.

Macros

#define NtCurrentProcess()   ( (HANDLE)(LONG_PTR) -1 )
 
#define ZwCurrentProcess()   NtCurrentProcess()
 
#define NtCurrentThread()   ( (HANDLE)(LONG_PTR) -2 )
 
#define ZwCurrentThread()   NtCurrentThread()
 

Functions

 $if (_WDMDDK_) $endif(_WDMDDK_) $if(_NTDDK_) _IRQL_requires_max_(PASSIVE_LEVEL) NTSYSAPI NTSTATUS NTAPI ZwAllocateLocallyUniqueId(_Out_ PLUID Luid)
 
 _IRQL_requires_max_ (PASSIVE_LEVEL) NTSYSAPI NTSTATUS NTAPI ZwTerminateProcess(_In_opt_ HANDLE ProcessHandle
 
 $endif (_NTDDK_) $if(_NTIFS_) _IRQL_requires_max_(PASSIVE_LEVEL) NTSYSAPI NTSTATUS NTAPI ZwQueryEaFile(_In_ HANDLE FileHandle
 
_Out_ PIO_STATUS_BLOCK _Out_writes_bytes_ (Length) PVOID Buffer
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_reads_bytes_opt_ (EaListLength) PVOID EaList
 
_Out_ PIO_STATUS_BLOCK _In_reads_bytes_ (Length) PVOID Buffer
 
 $endif (_NTIFS_) $if(_WDMDDK_) _IRQL_requires_max_(PASSIVE_LEVEL) NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_reads_bytes_opt_ (EaLength) PVOID EaBuffer
 
 _IRQL_requires_max_ (APC_LEVEL) NTSYSAPI NTSTATUS NTAPI ZwCreateSection(_Out_ PHANDLE SectionHandle
 
 _Post_satisfies_ (return< 0)) _When_(Length > 0
 
 _Post_satisfies_ (return<=0)) NTSYSAPI NTSTATUS NTAPI ZwEnumerateKey(_In_ HANDLE KeyHandle
 
_In_ ULONG _In_ KEY_INFORMATION_CLASS _Out_writes_bytes_opt_ (Length) PVOID KeyInformation
 
_In_ PUNICODE_STRING _In_opt_ ULONG _In_ ULONG _In_reads_bytes_opt_ (DataSize) PVOID Data
 
 $endif (_WDMDDK_) $if(_NTDDK_) _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS NTAPI ZwCancelTimer(_In_ HANDLE TimerHandle
 
 __drv_allocatesMem (TimerObject)) NTSTATUS NTAPI ZwCreateTimer(_Out_ PHANDLE TimerHandle
 
_In_ THREADINFOCLASS _In_reads_bytes_ (ThreadInformationLength) PVOID ThreadInformation
 
 _In_reads_bytes_opt_ (InputBufferLength) PVOID InputBuffer
 
_In_ ULONG _Out_writes_bytes_opt_ (OutputBufferLength) PVOID OutputBuffer
 
_In_ OBJECT_INFORMATION_CLASS _Out_writes_bytes_opt_ (ObjectInformationLength) PVOID ObjectInformation
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _Out_writes_bytes_opt_ (BufferLength) PVOID Buffer
 
_Must_inspect_result_ _At_BaseAddress (Mem)) __kernel_entryNTSYSAPINTSTATUSNTAPIZwAllocateVirtualMemory(_In_ HANDLE ProcessHandle, _Inout_ _Outptr_result_buffer_(*RegionSize) PVOID *BaseAddress, _In_ ULONG_PTR ZeroBits, _Inout_ PSIZE_T RegionSize, _In_ ULONG AllocationType, _In_ ULONG Protect
 
_Inout_ __drv_freesMem (Mem) PVOID *BaseAddress
 
 _When_ (Timeout==NULL, _IRQL_requires_max_(APC_LEVEL)) _When_(Timeout -> QuadPart !=0
 
 _IRQL_requires_max_ (DISPATCH_LEVEL)) NTSYSAPI NTSTATUS NTAPI ZwWaitForSingleObject(_In_ HANDLE Handle
 
_In_ TOKEN_INFORMATION_CLASS _Out_writes_bytes_to_opt_ (Length, *ResultLength) PVOID TokenInformation
 
_In_ SECURITY_INFORMATION _Out_writes_bytes_to_ (Length, *ResultLength) PSECURITY_DESCRIPTOR SecurityDescriptor
 
_In_ TRANSACTIONMANAGER_INFORMATION_CLASS _Out_writes_bytes_ (TransactionManagerInformationLength) PVOID TransactionManagerInformation
 
_In_ KTMOBJECT_TYPE _Inout_updates_bytes_ (ObjectCursorLength) PKTMOBJECT_CURSOR ObjectCursor
 
_In_ TRANSACTION_INFORMATION_CLASS _Out_writes_bytes_ (TransactionInformationLength) PVOID TransactionInformation
 
_In_ RESOURCEMANAGER_INFORMATION_CLASS _Out_writes_bytes_ (ResourceManagerInformationLength) PVOID ResourceManagerInformation
 
_In_ RESOURCEMANAGER_INFORMATION_CLASS _In_reads_bytes_ (ResourceManagerInformationLength) PVOID ResourceManagerInformation
 
_In_ ENLISTMENT_INFORMATION_CLASS _Out_writes_bytes_ (EnlistmentInformationLength) PVOID EnlistmentInformation
 
_In_ ENLISTMENT_INFORMATION_CLASS _In_reads_bytes_ (EnlistmentInformationLength) PVOID EnlistmentInformation
 
NTSYSCALLAPI NTSTATUS NTAPI ZwRollbackComplete (_In_ HANDLE EnlistmentHandle, _In_opt_ PLARGE_INTEGER TmVirtualClock)
 
NTSYSCALLAPI NTSTATUS NTAPI ZwSinglePhaseReject (_In_ HANDLE EnlistmentHandle, _In_opt_ PLARGE_INTEGER TmVirtualClock)
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_reads_bytes_opt_ (SidListLength) PVOID SidList
 
NTSYSAPI NTSTATUS NTAPI ZwNotifyChangeMultipleKeys (_In_ HANDLE MasterKeyHandle, _In_opt_ ULONG Count, _In_opt_ OBJECT_ATTRIBUTES SubordinateObjects[], _In_opt_ HANDLE Event, _In_opt_ PIO_APC_ROUTINE ApcRoutine, _In_opt_ PVOID ApcContext, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG CompletionFilter, _In_ BOOLEAN WatchTree, _Out_opt_ PVOID Buffer, _In_ ULONG BufferSize, _In_ BOOLEAN Asynchronous)
 
NTSYSAPI NTSTATUS NTAPI ZwQueryMultipleValueKey (_In_ HANDLE KeyHandle, _Inout_ PKEY_VALUE_ENTRY ValueEntries, _In_ ULONG EntryCount, _Out_ PVOID ValueBuffer, _Inout_ PULONG BufferLength, _Out_opt_ PULONG RequiredBufferLength)
 
_In_ __drv_strictTypeMatch (__drv_typeConst) KEY_SET_INFORMATION_CLASS KeySetInformationClass
 
_In_ _In_reads_bytes_ (KeySetInformationLength) PVOID KeySetInformation
 
_In_ TIMER_SET_INFORMATION_CLASS _Inout_updates_bytes_opt_ (TimerSetInformationLength) PVOID TimerSetInformation
 
_In_ TOKEN_INFORMATION_CLASS _In_reads_bytes_ (TokenInformationLength) PVOID TokenInformation
 
NTSYSAPI NTSTATUS NTAPI ZwAlertThread (_In_ HANDLE ThreadHandle)
 
NTSYSAPI NTSTATUS NTAPI ZwAccessCheckAndAuditAlarm (_In_ PUNICODE_STRING SubsystemName, _In_ PVOID HandleId, _In_ PUNICODE_STRING ObjectTypeName, _In_ PUNICODE_STRING ObjectName, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ACCESS_MASK DesiredAccess, _In_ PGENERIC_MAPPING GenericMapping, _In_ BOOLEAN ObjectCreation, _Out_ PACCESS_MASK GrantedAccess, _Out_ PBOOLEAN AccessStatus, _Out_ PBOOLEAN GenerateOnClose)
 
NTSYSAPI NTSTATUS NTAPI ZwClearEvent (_In_ HANDLE EventHandle)
 
NTSYSAPI NTSTATUS NTAPI ZwCloseObjectAuditAlarm (_In_ PUNICODE_STRING SubsystemName, _In_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose)
 
NTSYSAPI NTSTATUS NTAPI ZwCreateSymbolicLinkObject (_Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ PUNICODE_STRING TargetName)
 
NTSYSAPI NTSTATUS NTAPI ZwFlushInstructionCache (_In_ HANDLE ProcessHandle, _In_opt_ PVOID BaseAddress, _In_ ULONG FlushSize)
 
NTSYSAPI NTSTATUS NTAPI ZwFlushBuffersFile (_In_ HANDLE FileHandle, _Out_ PIO_STATUS_BLOCK IoStatusBlock)
 
NTSYSAPI NTSTATUS NTAPI ZwLoadKey (_In_ POBJECT_ATTRIBUTES KeyObjectAttributes, _In_ POBJECT_ATTRIBUTES FileObjectAttributes)
 
NTSYSAPI NTSTATUS NTAPI ZwOpenProcessToken (_In_ HANDLE ProcessHandle, _In_ ACCESS_MASK DesiredAccess, _Out_ PHANDLE TokenHandle)
 
NTSYSAPI NTSTATUS NTAPI ZwOpenThread (_Out_ PHANDLE ThreadHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ PCLIENT_ID ClientId)
 
NTSYSAPI NTSTATUS NTAPI ZwOpenThreadToken (_In_ HANDLE ThreadHandle, _In_ ACCESS_MASK DesiredAccess, _In_ BOOLEAN OpenAsSelf, _Out_ PHANDLE TokenHandle)
 
NTSYSAPI NTSTATUS NTAPI ZwPulseEvent (_In_ HANDLE EventHandle, _In_opt_ PLONG PulseCount)
 
NTSYSAPI NTSTATUS NTAPI ZwQueryDefaultLocale (_In_ BOOLEAN UserProfile, _Out_ PLCID DefaultLocaleId)
 
NTSYSAPI NTSTATUS NTAPI ZwReplaceKey (_In_ POBJECT_ATTRIBUTES NewFileObjectAttributes, _In_ HANDLE KeyHandle, _In_ POBJECT_ATTRIBUTES OldFileObjectAttributes)
 
NTSYSAPI NTSTATUS NTAPI ZwResetEvent (_In_ HANDLE EventHandle, _Out_opt_ PLONG NumberOfWaitingThreads)
 
NTSYSAPI NTSTATUS NTAPI ZwSaveKey (_In_ HANDLE KeyHandle, _In_ HANDLE FileHandle)
 
NTSYSAPI NTSTATUS NTAPI ZwSetDefaultLocale (_In_ BOOLEAN UserProfile, _In_ LCID DefaultLocaleId)
 
NTSYSAPI NTSTATUS NTAPI ZwSetInformationProcess (_In_ HANDLE ProcessHandle, _In_ PROCESSINFOCLASS ProcessInformationClass, _In_ PVOID ProcessInformation, _In_ ULONG ProcessInformationLength)
 
NTSYSAPI NTSTATUS NTAPI ZwSetSystemTime (_In_ PLARGE_INTEGER NewTime, _Out_opt_ PLARGE_INTEGER OldTime)
 
NTSYSAPI NTSTATUS NTAPI ZwUnloadKey (_In_ POBJECT_ATTRIBUTES KeyObjectAttributes)
 
NTSYSAPI NTSTATUS NTAPI ZwWaitForMultipleObjects (_In_ ULONG HandleCount, _In_ PHANDLE Handles, _In_ WAIT_TYPE WaitType, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER Timeout)
 
NTSYSAPI NTSTATUS NTAPI ZwYieldExecution (VOID)
 

Variables

_In_ NTSTATUS ExitStatus
 
_In_ ACCESS_MASK DesiredAccess
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES ObjectAttributes
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _In_opt_ PCLIENT_ID ClientId
 
_Out_ PIO_STATUS_BLOCK IoStatusBlock
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG Length
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN ReturnSingleEntry
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_ ULONG EaListLength
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_opt_ PULONG EaIndex
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_opt_ PULONG _In_ BOOLEAN RestartScan
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ BOOLEAN EffectiveOnly
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ BOOLEAN _In_ TOKEN_TYPE TokenType
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ BOOLEAN _In_ TOKEN_TYPE _Out_ PHANDLE NewTokenHandle
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER AllocationSize
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG ShareAccess
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG CreateDisposition
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG CreateOptions
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG EaLength
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG TitleIndex
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING Class
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER MaximumSize
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG SectionPageProtection
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG AllocationAttributes
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_opt_ HANDLE FileHandle
 
_In_ PUNICODE_STRING ValueName
 
_In_ ULONG Index
 
_In_ ULONG _In_ KEY_INFORMATION_CLASS KeyInformationClass
 
_In_ ULONG _In_ KEY_INFORMATION_CLASS _In_ ULONG _Out_ PULONG ResultLength
 
_In_ ULONG _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
 
_In_ HANDLE ProcessHandle
 
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOIDBaseAddress
 
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR ZeroBits
 
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T CommitSize
 
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER SectionOffset
 
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
 
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT InheritDisposition
 
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG AllocationType
 
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG _In_ ULONG Protect
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ ULONG OpenOptions
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ FILE_INFORMATION_CLASS FileInformationClass
 
_Inout_ PUNICODE_STRING LinkTarget
 
_Inout_ PUNICODE_STRING _Out_opt_ PULONG ReturnedLength
 
_In_opt_ HANDLE Event
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE ApcRoutine
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID ApcContext
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG _In_opt_ PLARGE_INTEGER ByteOffset
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG _In_opt_ PLARGE_INTEGER _In_opt_ PULONG Key
 
_In_ PUNICODE_STRING _In_opt_ ULONG _In_ ULONG Type
 
_In_ PUNICODE_STRING _In_opt_ ULONG _In_ ULONG _In_ ULONG DataSize
 
_Out_ PFILE_NETWORK_OPEN_INFORMATION FileInformation
 
_Out_opt_ PBOOLEAN CurrentState
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ TIMER_TYPE TimerType
 
_In_ THREADINFOCLASS ThreadInformationClass
 
_In_ THREADINFOCLASS _In_ ULONG ThreadInformationLength
 
_In_ PLARGE_INTEGER DueTime
 
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE TimerApcRoutine
 
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID TimerContext
 
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID _In_ BOOLEAN ResumeTimer
 
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_opt_ LONG Period
 
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_opt_ LONG _Out_opt_ PBOOLEAN PreviousState
 
_In_ ULONG InputBufferLength
 
_In_ ULONG _In_ ULONG OutputBufferLength
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ FS_INFORMATION_CLASS FsInformationClass
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG IoControlCode
 
_In_ OBJECT_INFORMATION_CLASS ObjectInformationClass
 
_In_ OBJECT_INFORMATION_CLASS _In_ ULONG ObjectInformationLength
 
_In_ OBJECT_INFORMATION_CLASS _In_ ULONG _Out_opt_ PULONG ReturnLength
 
_In_opt_ HANDLE EventHandle
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG NotifyFilter
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN WatchSubtree
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_ ULONG BufferLength
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ BOOLEAN Asynchronous
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE EventType
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE _In_ BOOLEAN InitialState
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ FILE_INFORMATION_CLASS _In_ BOOLEAN _In_opt_ PUNICODE_STRING FileName
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG FsControlCode
 
_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 _In_ ULONG HandleAttributes
 
_In_ HANDLE _In_opt_ HANDLE _Out_opt_ PHANDLE _In_ ACCESS_MASK _In_ ULONG _In_ ULONG Options
 
_Inout_ _Inout_ PSIZE_T RegionSize
 
_Inout_ _Inout_ PSIZE_T _In_ ULONG FreeType
 
_In_ BOOLEAN Alertable
 
_In_ BOOLEAN _In_opt_ PLARGE_INTEGER Timeout
 
_In_ TOKEN_INFORMATION_CLASS TokenInformationClass
 
_In_ SECURITY_INFORMATION SecurityInformation
 
_In_ SECURITY_INFORMATION _In_ PSECURITY_DESCRIPTOR SecurityDescriptor
 
_In_ ACCESS_MASK _In_ ULONG _Out_ PHANDLE TokenHandle
 
_In_ ACCESS_MASK _In_ BOOLEAN OpenAsSelf
 
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _In_ HANDLE TransactionHandle
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PUNICODE_STRING LogFileName
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PUNICODE_STRING _In_opt_ ULONG _In_opt_ ULONG CommitStrength
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PUNICODE_STRING _In_opt_ LPGUID TmIdentity
 
_In_opt_ PLARGE_INTEGER TmVirtualClock
 
_In_ TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass
 
_In_ TRANSACTIONMANAGER_INFORMATION_CLASS _In_ ULONG TransactionManagerInformationLength
 
_In_ TRANSACTIONMANAGER_INFORMATION_CLASS _In_ PVOID TransactionManagerInformation
 
_In_ KTMOBJECT_TYPE QueryType
 
_In_ KTMOBJECT_TYPE _In_ ULONG ObjectCursorLength
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ LPGUID Uow
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ LPGUID _In_opt_ HANDLE TmHandle
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ LPGUID _In_opt_ HANDLE _In_opt_ ULONG _In_opt_ ULONG IsolationLevel
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ LPGUID _In_opt_ HANDLE _In_opt_ ULONG _In_opt_ ULONG _In_opt_ ULONG IsolationFlags
 
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ LPGUID _In_opt_ HANDLE _In_opt_ ULONG _In_opt_ ULONG _In_opt_ ULONG _In_opt_ PLARGE_INTEGER _In_opt_ PUNICODE_STRING Description
 
_In_ TRANSACTION_INFORMATION_CLASS TransactionInformationClass
 
_In_ TRANSACTION_INFORMATION_CLASS _In_ ULONG TransactionInformationLength
 
_In_ TRANSACTION_INFORMATION_CLASS _In_ PVOID TransactionInformation
 
_In_ BOOLEAN Wait
 
_In_ ACCESS_MASK _In_ HANDLE _In_opt_ LPGUID ResourceManagerGuid
 
_Out_ PTRANSACTION_NOTIFICATION TransactionNotification
 
_Out_ PTRANSACTION_NOTIFICATION _In_ ULONG NotificationLength
 
_Out_ PTRANSACTION_NOTIFICATION _In_ ULONG _In_ PLARGE_INTEGER _Out_opt_ PULONG _In_ ULONG _In_opt_ ULONG_PTR AsynchronousContext
 
_In_ RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass
 
_In_ RESOURCEMANAGER_INFORMATION_CLASS _In_ ULONG ResourceManagerInformationLength
 
_In_ ACCESS_MASK _In_ HANDLE ResourceManagerHandle
 
_In_ ACCESS_MASK _In_ HANDLE _In_ HANDLE _In_opt_ POBJECT_ATTRIBUTES _In_opt_ ULONG _In_ NOTIFICATION_MASK NotificationMask
 
_In_ ACCESS_MASK _In_ HANDLE _In_ HANDLE _In_opt_ POBJECT_ATTRIBUTES _In_opt_ ULONG _In_ NOTIFICATION_MASK _In_opt_ PVOID EnlistmentKey
 
_In_ ACCESS_MASK _In_ HANDLE RmHandle
 
_In_ ACCESS_MASK _In_ HANDLE _In_ LPGUID EnlistmentGuid
 
_In_ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass
 
_In_ ENLISTMENT_INFORMATION_CLASS _In_ ULONG EnlistmentInformationLength
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ BOOLEAN FailImmediately
 
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ BOOLEAN _In_ BOOLEAN ExclusiveLock
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_ ULONG SidListLength
 
_Out_ PIO_STATUS_BLOCK _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_opt_ PSID StartSid
 
_In_ PUNICODE_STRING NewName
 
_In_ _In_ ULONG KeySetInformationLength
 
_In_ TIMER_SET_INFORMATION_CLASS TimerSetInformationClass
 
_In_ TIMER_SET_INFORMATION_CLASS _In_ ULONG TimerSetInformationLength
 
_In_ TOKEN_INFORMATION_CLASS _In_ ULONG TokenInformationLength
 

Macro Definition Documentation

◆ NtCurrentProcess

#define NtCurrentProcess ( )    ( (HANDLE)(LONG_PTR) -1 )

◆ NtCurrentThread

#define NtCurrentThread ( )    ( (HANDLE)(LONG_PTR) -2 )

◆ ZwCurrentProcess

#define ZwCurrentProcess ( )    NtCurrentProcess()

◆ ZwCurrentThread

#define ZwCurrentThread ( )    NtCurrentThread()

Function Documentation

◆ $endif() [1/3]

$endif ( _NTDDK_  )

Definition at line 2490 of file iofuncs.h.

2498 {
2499  PriorityInfo->Size = sizeof(IO_PRIORITY_INFO);
2500  PriorityInfo->ThreadPriority = 0xffff;
2501  PriorityInfo->IoPriority = IoPriorityNormal;
2502  PriorityInfo->PagePriority = 0;
2503 }
struct _IO_PRIORITY_INFO IO_PRIORITY_INFO
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD _Inout_ PIO_PRIORITY_INFO PriorityInfo
Definition: fltkernel.h:2653

◆ $endif() [2/3]

$endif ( _NTIFS_  )

Definition at line 2827 of file rtlfuncs.h.

2841 {
2843  ret.QuadPart = SignedInteger;
2844  return ret;
2845 }
return ret
Definition: rtlfuncs.h:3092

◆ $endif() [3/3]

$endif ( _WDMDDK_  )

Definition at line 202 of file ke.h.

226 {
227  ULONGLONG Low;
228  LONGLONG High;
229 } NEON128, *PNEON128;
Definition: strmini.h:380
int64_t LONGLONG
Definition: typedefs.h:68
uint64_t ULONGLONG
Definition: typedefs.h:67
Definition: strmini.h:378
NEON128
Definition: ke.h:229
* PNEON128
Definition: ke.h:229

◆ $if()

$if ( _WDMDDK_  )

Kernel definitions for AMD64

Kernel definitions for ARM

Kernel definitions for AMD64

Kernel definitions for ARM

Kernel definitions for x86

Definition at line 1 of file ke.h.

31 {
32  ULONG Dummy;
struct _KFLOATING_SAVE KFLOATING_SAVE
struct _KFLOATING_SAVE * PKFLOATING_SAVE
unsigned int ULONG
Definition: retypes.h:1

◆ __drv_allocatesMem()

__drv_allocatesMem ( TimerObject  )

◆ __drv_freesMem()

_Inout_ __drv_freesMem ( Mem  )

Definition at line 1523 of file exfuncs.h.

1524 {
1525  Lookaside->L.TotalFrees++;
1526 #ifdef NONAMELESSUNION
1527  if (ExQueryDepthSList(&Lookaside->L.u.ListHead) >= Lookaside->L.Depth) {
1528  Lookaside->L.u3.FreeMisses++;
1529  (Lookaside->L.u5.Free)(Entry);
1530  } else {
1531 #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
1532  ExInterlockedPushEntrySList(&Lookaside->L.u.ListHead,
1534  &Lookaside->Lock__ObsoleteButDoNotDelete);
1535 #else
1537 #endif
1538  }
1539 #else /* NONAMELESSUNION */
1540  if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
1541  Lookaside->L.FreeMisses++;
1542  (Lookaside->L.Free)(Entry);
1543  } else {
1544 #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
1547  &Lookaside->Lock__ObsoleteButDoNotDelete);
1548 #else
1550 #endif
1551  }
1552 #endif /* NONAMELESSUNION */
1553 }
#define ExInterlockedPushEntrySList(SListHead, SListEntry, Lock)
Definition: exfuncs.h:163
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_opt_ ULONG _Out_ WDFLOOKASIDE * Lookaside
Definition: wdfmemory.h:407
#define PSLIST_ENTRY
Definition: rtltypes.h:134
FORCEINLINE USHORT ExQueryDepthSList(_In_ PSLIST_HEADER SListHead)
Definition: exfuncs.h:153
NTKERNELAPI PSLIST_ENTRY FASTCALL InterlockedPushEntrySList(IN PSLIST_HEADER ListHead, IN PSLIST_ENTRY ListEntry)
Definition: interlocked.c:82
base of all file and directory entries
Definition: entries.h:82

◆ __drv_strictTypeMatch()

__in WDFIOTARGET __in __drv_strictTypeMatch ( __drv_typeConst  )

Definition at line 140 of file fxiotargetapi.cpp.

159 {
160  DDI_ENTRY();
161 
165 
167  IoTarget,
169  (PVOID*) &pTarget,
171 
175  "Action %d undefined or out of range", Action);
176  return;
177  }
178 
181  if (!NT_SUCCESS(status)) {
182  return;
183  }
184  }
185 
186  pTarget->Purge(Action);
187 }
#define DDI_ENTRY()
Definition: fxglobalskm.h:56
NTSTATUS status
LONG NTSTATUS
Definition: precomp.h:26
DriverGlobals
FxObjectHandleGetPtrAndGlobals(GetFxDriverGlobals(DriverGlobals), Device, FX_TYPE_DEVICE_BASE,(PWDFOBJECT) &pDevice, &pFxDriverGlobals)
__inline NTSTATUS FxVerifierCheckIrqlLevel(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in KIRQL Irql)
Definition: fxverifier.h:158
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
virtual VOID Purge(__in WDF_IO_TARGET_PURGE_IO_ACTION Action)
Definition: fxiotarget.cpp:918
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
Definition: wdfiotarget.h:506
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGIOTARGET, "WDFDEVICE 0x%p", Device)
PFX_DRIVER_GLOBALS pFxDriverGlobals
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIOTARGET * IoTarget
Definition: wdfiotarget.h:363
__inline PFX_DRIVER_GLOBALS GetFxDriverGlobals(__in PWDF_DRIVER_GLOBALS DriverGlobals)
Definition: fxglobals.h:597
FxIoTarget * pTarget
#define TRACINGIOTARGET
Definition: dbgtrace.h:72
Definition: ps.c:97

◆ _In_reads_bytes_() [1/6]

_Out_ PIO_STATUS_BLOCK _In_reads_bytes_ ( Length  )

◆ _In_reads_bytes_() [2/6]

◆ _In_reads_bytes_() [3/6]

◆ _In_reads_bytes_() [4/6]

◆ _In_reads_bytes_() [5/6]

_In_ _In_reads_bytes_ ( KeySetInformationLength  )

◆ _In_reads_bytes_() [6/6]

◆ _In_reads_bytes_opt_() [1/5]

◆ _In_reads_bytes_opt_() [2/5]

◆ _In_reads_bytes_opt_() [3/5]

_In_ PUNICODE_STRING _In_opt_ ULONG _In_ ULONG _In_reads_bytes_opt_ ( DataSize  )

◆ _In_reads_bytes_opt_() [4/5]

_In_reads_bytes_opt_ ( InputBufferLength  )

◆ _In_reads_bytes_opt_() [5/5]

◆ _Inout_updates_bytes_()

_In_ KTMOBJECT_TYPE _Inout_updates_bytes_ ( ObjectCursorLength  )

◆ _Inout_updates_bytes_opt_()

◆ _IRQL_requires_max_() [1/3]

_IRQL_requires_max_ ( PASSIVE_LEVEL  )

Definition at line 64 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 */
106  KernelMode,
107  NULL,
108  sizeof(FLT_SERVER_PORT_OBJECT),
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;
122  PortObject->ConnectNotify = ConnectNotifyCallback;
124  PortObject->MessageNotify = MessageNotifyCallback;
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 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
_Must_inspect_result_ _Outptr_ PFLT_PORT * ServerPort
Definition: fltkernel.h:1873
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
LONG NTSTATUS
Definition: precomp.h:26
#define InsertTailList(ListHead, Entry)
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
LIST_ENTRY mList
Definition: fltmgrint.h:56
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
#define FILE_READ_DATA
Definition: nt_native.h:628
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:952
Status
Definition: gdiplustypes.h:24
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1873
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:454
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1873
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:2932
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1873
#define NULL
Definition: types.h:112
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
_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 _In_ LONG MaxConnections
Definition: fltkernel.h:1873
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
_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:1873
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121

◆ _IRQL_requires_max_() [2/3]

_IRQL_requires_max_ ( APC_LEVEL  )

Definition at line 197 of file cddata.c.

254 {
255  THREAD_CONTEXT ThreadContext = {0};
256  PIRP_CONTEXT IrpContext = NULL;
257  BOOLEAN Wait;
258 
259 #ifdef CD_SANITY
260  PVOID PreviousTopLevel;
261 #endif
262 
264 
265 #if DBG
266 
267  KIRQL SaveIrql = KeGetCurrentIrql();
268 
269 #endif
270 
272 
274 
276 
277 #ifdef CD_SANITY
278  PreviousTopLevel = IoGetTopLevelIrp();
279 #endif
280 
281  //
282  // Loop until this request has been completed or posted.
283  //
284 
285  do {
286 
287  //
288  // Use a try-except to handle the exception cases.
289  //
290 
291  _SEH2_TRY {
292 
293  //
294  // If the IrpContext is NULL then this is the first pass through
295  // this loop.
296  //
297 
298  if (IrpContext == NULL) {
299 
300  //
301  // Decide if this request is waitable an allocate the IrpContext.
302  // If the file object in the stack location is NULL then this
303  // is a mount which is always waitable. Otherwise we look at
304  // the file object flags.
305  //
306 
308 
309  Wait = TRUE;
310 
311  } else {
312 
313  Wait = CanFsdWait( Irp );
314  }
315 
316  IrpContext = CdCreateIrpContext( Irp, Wait );
317 
318  //
319  // Update the thread context information.
320  //
321 
322  CdSetThreadContext( IrpContext, &ThreadContext );
323 
324 #ifdef CD_SANITY
325  NT_ASSERT( !CdTestTopLevel ||
326  SafeNodeType( IrpContext->TopLevel ) == CDFS_NTC_IRP_CONTEXT );
327 #endif
328 
329  //
330  // Otherwise cleanup the IrpContext for the retry.
331  //
332 
333  } else {
334 
335  //
336  // Set the MORE_PROCESSING flag to make sure the IrpContext
337  // isn't inadvertently deleted here. Then cleanup the
338  // IrpContext to perform the retry.
339  //
340 
341  SetFlag( IrpContext->Flags, IRP_CONTEXT_FLAG_MORE_PROCESSING );
342  CdCleanupIrpContext( IrpContext, FALSE );
343  }
344 
345  //
346  // Case on the major irp code.
347  //
348 
349  switch (IrpContext->MajorFunction) {
350 
351  case IRP_MJ_CREATE :
352 
353  Status = CdCommonCreate( IrpContext, Irp );
354  break;
355 
356  case IRP_MJ_CLOSE :
357 
358  Status = CdCommonClose( IrpContext, Irp );
359  break;
360 
361  case IRP_MJ_READ :
362 
363  //
364  // If this is an Mdl complete request, don't go through
365  // common read.
366  //
367 
368  if (FlagOn( IrpContext->MinorFunction, IRP_MN_COMPLETE )) {
369 
370  Status = CdCompleteMdl( IrpContext, Irp );
371 
372  } else {
373 
374  Status = CdCommonRead( IrpContext, Irp );
375  }
376 
377  break;
378 
379  case IRP_MJ_WRITE :
380 
381  Status = CdCommonWrite( IrpContext, Irp );
382  break;
383 
385 
386  Status = CdCommonQueryInfo( IrpContext, Irp );
387  break;
388 
390 
391  Status = CdCommonSetInfo( IrpContext, Irp );
392  break;
393 
395 
396  Status = CdCommonQueryVolInfo( IrpContext, Irp );
397  break;
398 
400 
401  Status = CdCommonDirControl( IrpContext, Irp );
402  break;
403 
405 
406  Status = CdCommonFsControl( IrpContext, Irp );
407  break;
408 
409  case IRP_MJ_DEVICE_CONTROL :
410 
411  Status = CdCommonDevControl( IrpContext, Irp );
412  break;
413 
414  case IRP_MJ_LOCK_CONTROL :
415 
416  Status = CdCommonLockControl( IrpContext, Irp );
417  break;
418 
419  case IRP_MJ_CLEANUP :
420 
421  Status = CdCommonCleanup( IrpContext, Irp );
422  break;
423 
424  case IRP_MJ_PNP :
425 
426  Status = CdCommonPnp( IrpContext, Irp );
427  break;
428 
429  case IRP_MJ_SHUTDOWN :
430 
431  Status = CdCommonShutdown( IrpContext, Irp );
432  break;
433 
434  default :
435 
437  CdCompleteRequest( IrpContext, Irp, Status );
438  }
439 
441 
442  Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
443  } _SEH2_END;
444 
445  } while (Status == STATUS_CANT_WAIT);
446 
447 #ifdef CD_SANITY
448  NT_ASSERT( !CdTestTopLevel ||
449  (PreviousTopLevel == IoGetTopLevelIrp()) );
450 #endif
451 
453 
454  NT_ASSERT( SaveIrql == KeGetCurrentIrql( ));
455 
456  return Status;
457 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
VOID CdSetThreadContext(_Inout_ PIRP_CONTEXT IrpContext, _In_ PTHREAD_CONTEXT ThreadContext)
Definition: cddata.c:981
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define IRP_MJ_SHUTDOWN
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
Definition: cdstruc.h:1214
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:167
#define SafeNodeType(Ptr)
Definition: nodetype.h:54
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
_SEH2_TRY
Definition: create.c:4226
#define IRP_MN_COMPLETE
Definition: iotypes.h:4419
UCHAR KIRQL
Definition: env_spec_w32.h:591
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
#define FALSE
Definition: types.h:117
_In_ PIRP Irp
Definition: csq.h:116
VOID CdCompleteRequest(_Inout_opt_ PIRP_CONTEXT IrpContext, _Inout_opt_ PIRP Irp, _In_ NTSTATUS Status)
Definition: cddata.c:914
#define _SEH2_GetExceptionInformation()
Definition: pseh2_64.h:11
unsigned char BOOLEAN
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:547
Status
Definition: gdiplustypes.h:24
#define IRP_MJ_FILE_SYSTEM_CONTROL
PIRP NTAPI IoGetTopLevelIrp(VOID)
Definition: irp.c:1843
#define CanFsdWait(I)
Definition: cdprocs.h:2001
NTSTATUS CdCompleteMdl(_In_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: cachesup.c:411
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
NTSTATUS CdCommonDevControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: devctrl.c:46
#define FlagOn(_F, _SF)
Definition: ext2fs.h:179
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2789
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
_SEH2_END
Definition: create.c:4400
LONG CdExceptionFilter(_Inout_ PIRP_CONTEXT IrpContext, _In_ PEXCEPTION_POINTERS ExceptionPointer)
Definition: cddata.c:525
#define ASSERT_OPTIONAL_IRP(I)
Definition: cddata.h:251
#define NULL
Definition: types.h:112
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
Definition: strucsup.c:1733
NTSTATUS CdCommonLockControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: lockctrl.c:35
#define CDFS_NTC_IRP_CONTEXT
Definition: nodetype.h:34
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_CLEANUP
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:12
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
Definition: strucsup.c:1573
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define STATUS_CANT_WAIT
Definition: ntstatus.h:452
#define NT_ASSERT
Definition: rtlfuncs.h:3312

◆ _IRQL_requires_max_() [3/3]

_IRQL_requires_max_ ( DISPATCH_LEVEL  )

Definition at line 3557 of file common.c.

3587 {
3588  NTSTATUS status;
3589  BOOLEAN requestSent = FALSE;
3590 
3591  BOOLEAN shouldRetry = TRUE;
3592  PCDB cdb = (PCDB)DeviceExtension->PowerContext.Srb.Cdb;
3593  ULONG timeoutValue = DeviceExtension->TimeOutValue;
3594  ULONG retryCount = 1;
3595 
3596  // reset some fields.
3597  DeviceExtension->PowerContext.RetryIntervalIn100ns = 0;
3598  status = PowerContextReuseRequest(DeviceExtension);
3599  RequestClearSendTime(DeviceExtension->PowerContext.PowerRequest);
3600 
3601  if (!NT_SUCCESS(status))
3602  {
3603  return status;
3604  }
3605 
3606  // set proper timeout value and max retry count.
3607  switch(DeviceExtension->PowerContext.PowerChangeState.PowerDown)
3608  {
3612  break;
3613 
3614  case PowerDownDeviceLocked:
3615  // Case of issuing SYNC CACHE command. Do not use power irp timeout remaining time in this case
3616  // as we want to give best try on SYNC CACHE command.
3617  retryCount = MAXIMUM_RETRIES;
3618  timeoutValue = DeviceExtension->TimeOutValue;
3619  break;
3620 
3622  {
3623  // Case of issuing STOP UNIT command
3624  // As "Imme" bit is set to '1', this command should be completed in short time.
3625  // This command is at low importance, failure of this command has very small impact.
3626  ULONG secondsRemaining = 0;
3627 
3628 #if (WINVER >= 0x0601)
3629  // this API is introduced in Windows7
3630  PoQueryWatchdogTime(DeviceExtension->LowerPdo, &secondsRemaining);
3631 #endif
3632 
3633  if (secondsRemaining == 0)
3634  {
3635  // not able to retrieve remaining time from PoQueryWatchdogTime API, use default values.
3636  retryCount = MAXIMUM_RETRIES;
3637  timeoutValue = SCSI_CDROM_TIMEOUT;
3638  }
3639  else
3640  {
3641  // plan to leave about 30 seconds to lower level drivers if possible.
3642  if (secondsRemaining >= 32)
3643  {
3644  retryCount = (secondsRemaining - 30)/SCSI_CDROM_TIMEOUT + 1;
3645  timeoutValue = SCSI_CDROM_TIMEOUT;
3646 
3647  if (retryCount > MAXIMUM_RETRIES)
3648  {
3649  retryCount = MAXIMUM_RETRIES;
3650  }
3651 
3652  if (retryCount == 1)
3653  {
3654  timeoutValue = secondsRemaining - 30;
3655  }
3656  }
3657  else
3658  {
3659  // issue the command with minimal timeout value and do not retry on it.
3660  retryCount = 1;
3661  timeoutValue = 2;
3662  }
3663  }
3664  }
3665  break;
3666  default:
3667  NT_ASSERT( FALSE );
3669  return status;
3670  }
3671 
3672  DeviceExtension->PowerContext.RetryCount = retryCount;
3673 
3674  // issue command.
3675  while (shouldRetry)
3676  {
3677 
3678  // set SRB fields.
3679  DeviceExtension->PowerContext.Srb.SrbFlags = SRB_FLAGS_NO_DATA_TRANSFER |
3684 
3685  DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
3686  DeviceExtension->PowerContext.Srb.TimeOutValue = timeoutValue;
3687 
3688  if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceInitial)
3689  {
3690  DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_LOCK_QUEUE;
3691  }
3692  else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceLocked)
3693  {
3694  DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_QUIESCE_DEVICE;
3695  }
3696  else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced)
3697  {
3698  // Case of issuing SYNC CACHE command.
3699  DeviceExtension->PowerContext.Srb.CdbLength = 10;
3700  cdb->SYNCHRONIZE_CACHE10.OperationCode = SCSIOP_SYNCHRONIZE_CACHE;
3701  }
3702  else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceFlushed)
3703  {
3704  // Case of issuing STOP UNIT command.
3705  DeviceExtension->PowerContext.Srb.CdbLength = 6;
3706  cdb->START_STOP.OperationCode = SCSIOP_START_STOP_UNIT;
3707  cdb->START_STOP.Start = 0;
3708  cdb->START_STOP.Immediate = 1;
3709  }
3710  else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceStopped)
3711  {
3712  DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_UNLOCK_QUEUE;
3713  }
3714 
3715  // Set up completion routine and context if requested
3716  if (CompletionRoutine)
3717  {
3718  WdfRequestSetCompletionRoutine(DeviceExtension->PowerContext.PowerRequest,
3720  Context);
3721  }
3722 
3723  status = RequestSend(DeviceExtension,
3724  DeviceExtension->PowerContext.PowerRequest,
3725  DeviceExtension->IoTarget,
3727  &requestSent);
3728 
3729  if (requestSent)
3730  {
3731  if ((CompletionRoutine == NULL) &&
3732  (SRB_STATUS(DeviceExtension->PowerContext.Srb.SrbStatus) != SRB_STATUS_SUCCESS))
3733  {
3734  TracePrint((TRACE_LEVEL_ERROR,
3735  TRACE_FLAG_POWER,
3736  "%p\tError occured when issuing %s command to device. Srb %p, Status %x\n",
3737  DeviceExtension->PowerContext.PowerRequest,
3738  (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced) ? "SYNC CACHE" : "STOP UNIT",
3739  &DeviceExtension->PowerContext.Srb,
3740  DeviceExtension->PowerContext.Srb.SrbStatus));
3741 
3742  NT_ASSERT(!(TEST_FLAG(DeviceExtension->PowerContext.Srb.SrbStatus, SRB_STATUS_QUEUE_FROZEN)));
3743 
3744  shouldRetry = RequestSenseInfoInterpret(DeviceExtension,
3745  DeviceExtension->PowerContext.PowerRequest,
3746  &(DeviceExtension->PowerContext.Srb),
3747  retryCount - DeviceExtension->PowerContext.RetryCount,
3748  &status,
3749  &(DeviceExtension->PowerContext.RetryIntervalIn100ns));
3750 
3751  if (shouldRetry && (DeviceExtension->PowerContext.RetryCount-- == 0))
3752  {
3753  shouldRetry = FALSE;
3754  }
3755  }
3756  else
3757  {
3758  // succeeded, do not need to retry.
3759  shouldRetry = FALSE;
3760  }
3761 
3762  }
3763  else
3764  {
3765  // request failed to be sent
3766  shouldRetry = FALSE;
3767  }
3768 
3769  if (shouldRetry)
3770  {
3771  LARGE_INTEGER t;
3772  t.QuadPart = -DeviceExtension->PowerContext.RetryIntervalIn100ns;
3774 
3775  status = PowerContextReuseRequest(DeviceExtension);
3776  if (!NT_SUCCESS(status))
3777  {
3778  shouldRetry = FALSE;
3779  }
3780  }
3781  }
3782 
3783  if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced)
3784  {
3785  // record SYNC CACHE command completion time stamp.
3786  KeQueryTickCount(&DeviceExtension->PowerContext.Step1CompleteTime);
3787  }
3788 
3789  return status;
3790 }
#define SRB_FUNCTION_UNLOCK_QUEUE
Definition: srb.h:325
#define SCSIOP_SYNCHRONIZE_CACHE
Definition: cdrw_hw.h:918
#define SRB_FUNCTION_QUIESCE_DEVICE
Definition: srb.h:90
#define SRB_FLAGS_NO_QUEUE_FREEZE
Definition: srb.h:396
#define TRUE
Definition: types.h:120
Definition: cdrw_hw.h:28
LONG NTSTATUS
Definition: precomp.h:26
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
GLdouble GLdouble t
Definition: gl.h:2047
#define SRB_STATUS(Status)
Definition: srb.h:381
VOID RequestClearSendTime(_In_ WDFREQUEST Request)
Definition: common.c:111
#define MAXIMUM_RETRIES
Definition: cdrom.h:124
return STATUS_NOT_IMPLEMENTED
#define SCSI_CDROM_TIMEOUT
Definition: cdrom.c:170
#define FALSE
Definition: types.h:117
NTSTATUS NTAPI KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval OPTIONAL)
Definition: wait.c:283
#define SRB_FLAGS_BYPASS_LOCKED_QUEUE
Definition: srb.h:402
unsigned char BOOLEAN
union _CDB * PCDB
struct _CDB::_START_STOP START_STOP
VOID NTAPI KeQueryTickCount(IN PLARGE_INTEGER TickCount)
Definition: clock.c:165
#define TEST_FLAG(Flags, Bit)
Definition: cdrom.h:1495
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER
Definition: srb.h:389
#define SRB_FLAGS_NO_DATA_TRANSFER
Definition: srb.h:394
BOOLEAN RequestSenseInfoInterpret(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb, _In_ ULONG RetriedCount, _Out_ NTSTATUS *Status, _Out_opt_ _Deref_out_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIntervalIn100ns)
Definition: sense.c:2467
#define SRB_STATUS_QUEUE_FROZEN
Definition: srb.h:378
NTSTATUS RequestSend(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDFIOTARGET IoTarget, _In_ ULONG Flags, _Out_opt_ PBOOLEAN RequestSent)
Definition: common.c:3793
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:893
#define NULL
Definition: types.h:112
#define SRB_FUNCTION_EXECUTE_SCSI
Definition: srb.h:307
unsigned int ULONG
Definition: retypes.h:1
#define SRB_STATUS_SUCCESS
Definition: srb.h:333
#define SRB_FLAGS_D3_PROCESSING
Definition: srb.h:156
static SERVICE_STATUS status
Definition: service.c:31
#define SCSIOP_START_STOP_UNIT
Definition: cdrw_hw.h:897
#define SRB_FUNCTION_LOCK_QUEUE
Definition: srb.h:324
#define NT_ASSERT
Definition: rtlfuncs.h:3312
Definition: ps.c:97

◆ _Out_writes_bytes_() [1/5]

_Out_ PIO_STATUS_BLOCK _Out_writes_bytes_ ( Length  )

◆ _Out_writes_bytes_() [2/5]

◆ _Out_writes_bytes_() [3/5]

◆ _Out_writes_bytes_() [4/5]

◆ _Out_writes_bytes_() [5/5]

◆ _Out_writes_bytes_opt_() [1/4]

_In_ ULONG _In_ KEY_INFORMATION_CLASS _Out_writes_bytes_opt_ ( Length  )

◆ _Out_writes_bytes_opt_() [2/4]

_In_ ULONG _Out_writes_bytes_opt_ ( OutputBufferLength  )

◆ _Out_writes_bytes_opt_() [3/4]

◆ _Out_writes_bytes_opt_() [4/4]

◆ _Out_writes_bytes_to_()

_In_ SECURITY_INFORMATION _Out_writes_bytes_to_ ( Length  ,
ResultLength 
)

◆ _Out_writes_bytes_to_opt_()

_In_ TOKEN_INFORMATION_CLASS _Out_writes_bytes_to_opt_ ( Length  ,
ResultLength 
)

◆ _Post_satisfies_() [1/2]

_Post_satisfies_ ( )

◆ _Post_satisfies_() [2/2]

_Post_satisfies_ ( return<=  0)

◆ _When_()

_When_ ( Timeout  = NULL,
_IRQL_requires_max_(APC_LEVEL  
) -> QuadPart !
pure virtual

◆ BaseAddress()

_Must_inspect_result_ _At_* BaseAddress ( Mem  )

◆ ZwAccessCheckAndAuditAlarm()

NTSYSAPI NTSTATUS NTAPI ZwAccessCheckAndAuditAlarm ( _In_ PUNICODE_STRING  SubsystemName,
_In_ PVOID  HandleId,
_In_ PUNICODE_STRING  ObjectTypeName,
_In_ PUNICODE_STRING  ObjectName,
_In_ PSECURITY_DESCRIPTOR  SecurityDescriptor,
_In_ ACCESS_MASK  DesiredAccess,
_In_ PGENERIC_MAPPING  GenericMapping,
_In_ BOOLEAN  ObjectCreation,
_Out_ PACCESS_MASK  GrantedAccess,
_Out_ PBOOLEAN  AccessStatus,
_Out_ PBOOLEAN  GenerateOnClose 
)

◆ ZwAlertThread()

NTSYSAPI NTSTATUS NTAPI ZwAlertThread ( _In_ HANDLE  ThreadHandle)

◆ ZwClearEvent()

NTSYSAPI NTSTATUS NTAPI ZwClearEvent ( _In_ HANDLE  EventHandle)

◆ ZwCloseObjectAuditAlarm()

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

◆ ZwCreateSymbolicLinkObject()

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

◆ ZwFlushBuffersFile()

NTSYSAPI NTSTATUS NTAPI ZwFlushBuffersFile ( _In_ HANDLE  FileHandle,
_Out_ PIO_STATUS_BLOCK  IoStatusBlock 
)

◆ ZwFlushInstructionCache()

NTSYSAPI NTSTATUS NTAPI ZwFlushInstructionCache ( _In_ HANDLE  ProcessHandle,
_In_opt_ PVOID  BaseAddress,
_In_ ULONG  FlushSize 
)

◆ ZwLoadKey()

NTSYSAPI NTSTATUS NTAPI ZwLoadKey ( _In_ POBJECT_ATTRIBUTES  KeyObjectAttributes,
_In_ POBJECT_ATTRIBUTES  FileObjectAttributes 
)

◆ ZwNotifyChangeMultipleKeys()

NTSYSAPI NTSTATUS NTAPI ZwNotifyChangeMultipleKeys ( _In_ HANDLE  MasterKeyHandle,
_In_opt_ ULONG  Count,
_In_opt_ OBJECT_ATTRIBUTES  SubordinateObjects[],
_In_opt_ HANDLE  Event,
_In_opt_ PIO_APC_ROUTINE  ApcRoutine,
_In_opt_ PVOID  ApcContext,
_Out_ PIO_STATUS_BLOCK  IoStatusBlock,
_In_ ULONG  CompletionFilter,
_In_ BOOLEAN  WatchTree,
_Out_opt_ PVOID  Buffer,
_In_ ULONG  BufferSize,
_In_ BOOLEAN  Asynchronous 
)

◆ ZwOpenProcessToken()

NTSYSAPI NTSTATUS NTAPI ZwOpenProcessToken ( _In_ HANDLE  ProcessHandle,
_In_ ACCESS_MASK  DesiredAccess,
_Out_ PHANDLE  TokenHandle 
)

◆ ZwOpenThread()

NTSYSAPI NTSTATUS NTAPI ZwOpenThread ( _Out_ PHANDLE  ThreadHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ POBJECT_ATTRIBUTES  ObjectAttributes,
_In_ PCLIENT_ID  ClientId 
)

◆ ZwOpenThreadToken()

NTSYSAPI NTSTATUS NTAPI ZwOpenThreadToken ( _In_ HANDLE  ThreadHandle,
_In_ ACCESS_MASK  DesiredAccess,
_In_ BOOLEAN  OpenAsSelf,
_Out_ PHANDLE  TokenHandle 
)

◆ ZwPulseEvent()

NTSYSAPI NTSTATUS NTAPI ZwPulseEvent ( _In_ HANDLE  EventHandle,
_In_opt_ PLONG  PulseCount 
)

◆ ZwQueryDefaultLocale()

NTSYSAPI NTSTATUS NTAPI ZwQueryDefaultLocale ( _In_ BOOLEAN  UserProfile,
_Out_ PLCID  DefaultLocaleId 
)

◆ ZwQueryMultipleValueKey()

NTSYSAPI NTSTATUS NTAPI ZwQueryMultipleValueKey ( _In_ HANDLE  KeyHandle,
_Inout_ PKEY_VALUE_ENTRY  ValueEntries,
_In_ ULONG  EntryCount,
_Out_ PVOID  ValueBuffer,
_Inout_ PULONG  BufferLength,
_Out_opt_ PULONG  RequiredBufferLength 
)

◆ ZwReplaceKey()

NTSYSAPI NTSTATUS NTAPI ZwReplaceKey ( _In_ POBJECT_ATTRIBUTES  NewFileObjectAttributes,
_In_ HANDLE  KeyHandle,
_In_ POBJECT_ATTRIBUTES  OldFileObjectAttributes 
)

◆ ZwResetEvent()

NTSYSAPI NTSTATUS NTAPI ZwResetEvent ( _In_ HANDLE  EventHandle,
_Out_opt_ PLONG  NumberOfWaitingThreads 
)

◆ ZwRollbackComplete()

NTSYSCALLAPI NTSTATUS NTAPI ZwRollbackComplete ( _In_ HANDLE  EnlistmentHandle,
_In_opt_ PLARGE_INTEGER  TmVirtualClock 
)

◆ ZwSaveKey()

NTSYSAPI NTSTATUS NTAPI ZwSaveKey ( _In_ HANDLE  KeyHandle,
_In_ HANDLE  FileHandle 
)

◆ ZwSetDefaultLocale()

NTSYSAPI NTSTATUS NTAPI ZwSetDefaultLocale ( _In_ BOOLEAN  UserProfile,
_In_ LCID  DefaultLocaleId 
)

◆ ZwSetInformationProcess()

NTSYSAPI NTSTATUS NTAPI ZwSetInformationProcess ( _In_ HANDLE  ProcessHandle,
_In_ PROCESSINFOCLASS  ProcessInformationClass,
_In_ PVOID  ProcessInformation,
_In_ ULONG  ProcessInformationLength 
)

◆ ZwSetSystemTime()

NTSYSAPI NTSTATUS NTAPI ZwSetSystemTime ( _In_ PLARGE_INTEGER  NewTime,
_Out_opt_ PLARGE_INTEGER  OldTime 
)

◆ ZwSinglePhaseReject()

NTSYSCALLAPI NTSTATUS NTAPI ZwSinglePhaseReject ( _In_ HANDLE  EnlistmentHandle,
_In_opt_ PLARGE_INTEGER  TmVirtualClock 
)

◆ ZwUnloadKey()

NTSYSAPI NTSTATUS NTAPI ZwUnloadKey ( _In_ POBJECT_ATTRIBUTES  KeyObjectAttributes)

◆ ZwWaitForMultipleObjects()

NTSYSAPI NTSTATUS NTAPI ZwWaitForMultipleObjects ( _In_ ULONG  HandleCount,
_In_ PHANDLE  Handles,
_In_ WAIT_TYPE  WaitType,
_In_ BOOLEAN  Alertable,
_In_opt_ PLARGE_INTEGER  Timeout 
)

◆ ZwYieldExecution()

NTSYSAPI NTSTATUS NTAPI ZwYieldExecution ( VOID  )

Variable Documentation

◆ Alertable

_In_ BOOLEAN Alertable

Definition at line 626 of file zwfuncs.h.

◆ AllocationAttributes

Definition at line 136 of file zwfuncs.h.

◆ AllocationSize

◆ AllocationType

◆ ApcContext

Definition at line 315 of file zwfuncs.h.

◆ ApcRoutine

Definition at line 315 of file zwfuncs.h.

◆ Asynchronous

◆ AsynchronousContext

◆ BaseAddress

_Inout_ PVOID* BaseAddress

Definition at line 214 of file zwfuncs.h.

◆ BufferLength

◆ ByteOffset

Definition at line 320 of file zwfuncs.h.

◆ Class

◆ ClientId

Definition at line 36 of file zwfuncs.h.

◆ CommitSize

◆ CommitStrength

◆ CreateDisposition

◆ CreateOptions

◆ CurrentState

_Out_opt_ PBOOLEAN CurrentState

◆ DataSize

Definition at line 345 of file zwfuncs.h.

◆ Description

◆ DesiredAccess

Definition at line 36 of file zwfuncs.h.

◆ Disposition

◆ DueTime

Definition at line 428 of file zwfuncs.h.

◆ EaIndex

◆ EaLength

◆ EaListLength

Definition at line 53 of file zwfuncs.h.

◆ EffectiveOnly

Definition at line 73 of file zwfuncs.h.

◆ EnlistmentGuid

Definition at line 968 of file zwfuncs.h.

◆ EnlistmentInformationClass

_In_ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass

Definition at line 979 of file zwfuncs.h.

◆ EnlistmentInformationLength

_In_ ENLISTMENT_INFORMATION_CLASS _In_ ULONG EnlistmentInformationLength

Definition at line 981 of file zwfuncs.h.

◆ EnlistmentKey

_In_opt_ PVOID EnlistmentKey

Definition at line 954 of file zwfuncs.h.

◆ Event

Definition at line 315 of file zwfuncs.h.

◆ EventHandle

_In_opt_ HANDLE EventHandle

Definition at line 500 of file zwfuncs.h.

◆ EventType

Definition at line 516 of file zwfuncs.h.

◆ ExclusiveLock

◆ ExitStatus

_In_ NTSTATUS ExitStatus

Definition at line 28 of file zwfuncs.h.

◆ FailImmediately

◆ FileAttributes

◆ FileHandle

◆ FileInformation

Definition at line 383 of file zwfuncs.h.

◆ FileInformationClass

◆ FileName

◆ FreeType

Definition at line 615 of file zwfuncs.h.

◆ FsControlCode

◆ FsInformationClass

Definition at line 461 of file zwfuncs.h.

◆ HandleAttributes

_In_ ACCESS_MASK _In_ BOOLEAN _In_ ULONG HandleAttributes

Definition at line 578 of file zwfuncs.h.

◆ Index

Definition at line 166 of file zwfuncs.h.

◆ InheritDisposition

◆ InitialState

Definition at line 516 of file zwfuncs.h.

◆ InputBufferLength

◆ IoControlCode

◆ IoStatusBlock

_Out_ PIO_STATUS_BLOCK IoStatusBlock

Definition at line 48 of file zwfuncs.h.

◆ IsolationFlags

◆ IsolationLevel

◆ Key

◆ KeyInformationClass

◆ KeySetInformationLength

_In_ _In_ ULONG KeySetInformationLength

Definition at line 1213 of file zwfuncs.h.

◆ KeyValueInformationClass

Definition at line 180 of file zwfuncs.h.

◆ Length

Definition at line 50 of file zwfuncs.h.

◆ LinkTarget

◆ LogFileName

◆ MaximumSize

◆ NewName

◆ NewTokenHandle

◆ NotificationLength

Definition at line 920 of file zwfuncs.h.

◆ NotificationMask

◆ NotifyFilter

◆ ObjectAttributes

Definition at line 36 of file zwfuncs.h.

◆ ObjectCursorLength

_In_ KTMOBJECT_TYPE _In_ ULONG ObjectCursorLength

Definition at line 816 of file zwfuncs.h.

◆ ObjectInformationClass

_In_ OBJECT_INFORMATION_CLASS ObjectInformationClass

Definition at line 489 of file zwfuncs.h.

◆ ObjectInformationLength

_In_ OBJECT_INFORMATION_CLASS _In_ ULONG ObjectInformationLength

Definition at line 491 of file zwfuncs.h.

◆ OpenAsSelf

Definition at line 699 of file zwfuncs.h.

Referenced by NtOpenThreadToken(), NtOpenThreadTokenEx(), OpenThreadToken(), and START_TEST().

◆ OpenOptions

Definition at line 229 of file zwfuncs.h.

◆ Options

◆ OutputBufferLength

◆ Period

◆ PreviousState

Definition at line 428 of file zwfuncs.h.

◆ ProcessHandle

_In_ HANDLE ProcessHandle

Definition at line 213 of file zwfuncs.h.

◆ Protect

◆ QueryType

_In_ KTMOBJECT_TYPE QueryType

Definition at line 814 of file zwfuncs.h.

◆ RegionSize

Definition at line 615 of file zwfuncs.h.

◆ ResourceManagerGuid

_In_ ACCESS_MASK _In_ HANDLE _In_ LPGUID ResourceManagerGuid

Definition at line 889 of file zwfuncs.h.

◆ ResourceManagerHandle

_In_ ACCESS_MASK _In_ HANDLE ResourceManagerHandle

Definition at line 954 of file zwfuncs.h.

◆ ResourceManagerInformationClass

_In_ RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass

Definition at line 933 of file zwfuncs.h.

◆ ResourceManagerInformationLength

_In_ RESOURCEMANAGER_INFORMATION_CLASS _In_ ULONG ResourceManagerInformationLength

Definition at line 935 of file zwfuncs.h.

◆ RestartScan

◆ ResultLength

◆ ResumeTimer

◆ ReturnedLength

Definition at line 292 of file zwfuncs.h.

◆ ReturnLength

Definition at line 491 of file zwfuncs.h.

◆ ReturnSingleEntry

Definition at line 50 of file zwfuncs.h.

◆ RmHandle

Definition at line 968 of file zwfuncs.h.

◆ SectionOffset

◆ SectionPageProtection

Definition at line 136 of file zwfuncs.h.

◆ SecurityDescriptor

◆ SecurityInformation

_In_ SECURITY_INFORMATION SecurityInformation

Definition at line 664 of file zwfuncs.h.

◆ ShareAccess

◆ SidListLength

Definition at line 1120 of file zwfuncs.h.

◆ SourceHandle

_In_ HANDLE SourceHandle

Definition at line 578 of file zwfuncs.h.

◆ StartSid

Definition at line 1120 of file zwfuncs.h.

◆ TargetHandle

Definition at line 578 of file zwfuncs.h.

◆ TargetProcessHandle

_In_ HANDLE _In_opt_ HANDLE TargetProcessHandle

Definition at line 578 of file zwfuncs.h.

◆ ThreadInformationClass

_In_ THREADINFOCLASS ThreadInformationClass

Definition at line 419 of file zwfuncs.h.

◆ ThreadInformationLength

_In_ THREADINFOCLASS _In_ ULONG ThreadInformationLength

Definition at line 421 of file zwfuncs.h.

◆ Timeout

◆ TimerApcRoutine

Definition at line 428 of file zwfuncs.h.

Referenced by NtSetTimer().

◆ TimerContext

◆ TimerSetInformationClass

_In_ TIMER_SET_INFORMATION_CLASS TimerSetInformationClass

Definition at line 1223 of file zwfuncs.h.

◆ TimerSetInformationLength

_In_ TIMER_SET_INFORMATION_CLASS _In_ ULONG TimerSetInformationLength

Definition at line 1225 of file zwfuncs.h.

◆ TimerType

Definition at line 401 of file zwfuncs.h.

Referenced by NtCreateTimer().

◆ TitleIndex

Definition at line 123 of file zwfuncs.h.

◆ TmHandle

Definition at line 825 of file zwfuncs.h.

◆ TmIdentity

◆ TmVirtualClock

_In_opt_ PLARGE_INTEGER TmVirtualClock

Definition at line 778 of file zwfuncs.h.

◆ TokenHandle

Definition at line 689 of file zwfuncs.h.

◆ TokenInformationClass

_In_ TOKEN_INFORMATION_CLASS TokenInformationClass

Definition at line 653 of file zwfuncs.h.

◆ TokenInformationLength

_In_ TOKEN_INFORMATION_CLASS _In_ ULONG TokenInformationLength

Definition at line 1237 of file zwfuncs.h.

◆ TokenType

◆ TransactionHandle

Definition at line 730 of file zwfuncs.h.

◆ TransactionInformation

_In_ TRANSACTION_INFORMATION_CLASS _In_ PVOID TransactionInformation

Definition at line 863 of file zwfuncs.h.

◆ TransactionInformationClass

_In_ TRANSACTION_INFORMATION_CLASS TransactionInformationClass

Definition at line 852 of file zwfuncs.h.

◆ TransactionInformationLength

_In_ TRANSACTION_INFORMATION_CLASS _In_ PVOID _In_ ULONG TransactionInformationLength

Definition at line 854 of file zwfuncs.h.

◆ TransactionManagerInformation

_In_ TRANSACTIONMANAGER_INFORMATION_CLASS _In_ PVOID TransactionManagerInformation

Definition at line 804 of file zwfuncs.h.

◆ TransactionManagerInformationClass

_In_ TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass

Definition at line 793 of file zwfuncs.h.

◆ TransactionManagerInformationLength

_In_ TRANSACTIONMANAGER_INFORMATION_CLASS _In_ PVOID _In_ ULONG TransactionManagerInformationLength

Definition at line 795 of file zwfuncs.h.

◆ TransactionNotification

_Out_ PTRANSACTION_NOTIFICATION TransactionNotification

Definition at line 920 of file zwfuncs.h.

◆ Type

Definition at line 341 of file zwfuncs.h.

◆ Uow

◆ ValueName

Definition at line 156 of file zwfuncs.h.

◆ ViewSize

◆ Wait

Definition at line 873 of file zwfuncs.h.

◆ WatchSubtree

◆ ZeroBits