ReactOS 0.4.16-dev-136-g52192f1
kefuncs.h File Reference

Go to the source code of this file.

Macros

#define KeAcquireSpinLock(SpinLock, OldIrql)    *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock)
 
#define KeWaitForMutexObject   KeWaitForSingleObject
 
#define KeInitializeCallbackRecord(CallbackRecord)    (CallbackRecord)->State = BufferEmpty;
 
#define PAGED_CODE()   NOP_FUNCTION;
 
#define PAGED_CODE_LOCKED()   NOP_FUNCTION;
 

Functions

 $if (_WDMDDK_) NTKERNELAPI VOID NTAPI KeInitializeEvent(_Out_ PRKEVENT Event
 
 _IRQL_requires_max_ (DISPATCH_LEVEL) NTKERNELAPI VOID NTAPI KeClearEvent(_Inout_ PRKEVENT Event)
 
 $endif (_WDMDDK_) $if(_NTDDK_) _IRQL_requires_min_(PASSIVE_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL) NTKERNELAPI VOID FASTCALL KeInvalidateRangeAllCaches(_In_ PVOID BaseAddress
 
 $endif (_NTDDK_) $if(_WDMDDK_) _Maybe_raises_SEH_exception_ _IRQL_requires_max_(APC_LEVEL) NTKERNELAPI VOID NTAPI ProbeForWrite(__in_data_source(USER_MODE) _Out_writes_bytes_(Length) PVOID Address
 
 _IRQL_requires_min_ (PASSIVE_LEVEL) _IRQL_requires_max_(DISPATCH_LEVEL) NTKERNELAPI LONG NTAPI KeSetBasePriorityThread(_Inout_ PRKTHREAD Thread
 
 _Acquires_lock_ (_Global_critical_region_) _IRQL_requires_max_(APC_LEVEL) NTKERNELAPI VOID NTAPI KeEnterCriticalRegion(VOID)
 
 _Releases_lock_ (_Global_critical_region_) _IRQL_requires_max_(APC_LEVEL) NTKERNELAPI VOID NTAPI KeLeaveCriticalRegion(VOID)
 
NTKERNELAPI DECLSPEC_NORETURN VOID NTAPI KeBugCheck (_In_ ULONG BugCheckCode)
 
NTKERNELAPI VOID NTAPI KeQuerySystemTime (_Out_ PLARGE_INTEGER CurrentTime)
 
_Requires_lock_not_held_ SpinLock _Acquires_lock_ SpinLock _IRQL_requires_min_ (DISPATCH_LEVEL) NTKERNELAPI VOID NTAPI KeAcquireSpinLockAtDpcLevel(_Inout_ PKSPIN_LOCK SpinLock)
 
_Requires_lock_held_ SpinLock _Releases_lock_ SpinLock _IRQL_requires_ (DISPATCH_LEVEL) NTKERNELAPI VOID NTAPI KeReleaseSpinLock(_Inout_ PKSPIN_LOCK SpinLock
 
FORCEINLINE VOID KeInitializeSpinLock (_Out_ PKSPIN_LOCK SpinLock)
 
NTKERNELAPI DECLSPEC_NORETURN VOID NTAPI KeBugCheckEx (_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
 
_Must_inspect_result_ NTKERNELAPI BOOLEAN NTAPI KeDeregisterBugCheckCallback (_Inout_ PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
 
NTKERNELAPI VOID NTAPI KeInitializeDpc (_Out_ __drv_aliasesMem PRKDPC Dpc, _In_ PKDEFERRED_ROUTINE DeferredRoutine, _In_opt_ __drv_aliasesMem PVOID DeferredContext)
 
NTKERNELAPI VOID NTAPI KeInitializeMutex (_Out_ PRKMUTEX Mutex, _In_ ULONG Level)
 
 _IRQL_requires_max_ (PASSIVE_LEVEL) NTKERNELAPI VOID NTAPI KeInitializeSemaphore(_Out_ PRKSEMAPHORE Semaphore
 Queries information details about a security descriptor.
 
NTKERNELAPI BOOLEAN NTAPI KeInsertQueueDpc (_Inout_ PRKDPC Dpc, _In_opt_ PVOID SystemArgument1, _In_opt_ PVOID SystemArgument2)
 
NTHALAPI LARGE_INTEGER NTAPI KeQueryPerformanceCounter (_Out_opt_ PLARGE_INTEGER PerformanceFrequency)
 
NTKERNELAPI ULONG NTAPI KeQueryTimeIncrement (VOID)
 
_Must_inspect_result_ NTKERNELAPI BOOLEAN NTAPI KeRegisterBugCheckCallback (_Out_ PKBUGCHECK_CALLBACK_RECORD CallbackRecord, _In_ PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine, _In_reads_bytes_opt_(Length) PVOID Buffer, _In_ ULONG Length, _In_ PUCHAR Component)
 
 _When_ (Wait==0, _IRQL_requires_max_(DISPATCH_LEVEL)) _When_(Wait
 
 _IRQL_requires_max_ (APC_LEVEL)) NTKERNELAPI LONG NTAPI KeReleaseMutex(_Inout_ PRKMUTEX Mutex
 Probes and locks virtual pages in memory for the specified process.
 
 _IRQL_requires_max_ (HIGH_LEVEL) NTKERNELAPI BOOLEAN NTAPI KeRemoveQueueDpc(_Inout_ PRKDPC Dpc)
 
NTKERNELAPI VOID NTAPI KeSetImportanceDpc (_Inout_ PRKDPC Dpc, _In_ KDPC_IMPORTANCE Importance)
 
NTHALAPI VOID NTAPI KeStallExecutionProcessor (_In_ ULONG MicroSeconds)
 
NTKERNELAPI VOID NTAPI KeInitializeQueue (_Out_ PRKQUEUE Queue, _In_ ULONG Count)
 
_Requires_lock_not_held_ SpinLock _Acquires_lock_ SpinLock _IRQL_raises_ (SYNCH_LEVEL) _IRQL_saves_ NTKERNELAPI KIRQL KeAcquireSpinLockRaiseToSynch(_Inout_ PKSPIN_LOCK SpinLock)
 
 $endif (_NTIFS_) $if(_WDMDDK_) _Requires_lock_not_held_(*LockHandle) _Acquires_lock_(*LockHandle) _Post_same_lock_(*SpinLock
 
*LockHandle LockHandle _IRQL_raises_ (DISPATCH_LEVEL) _DECL_HAL_KE_IMPORT VOID FASTCALL KeAcquireInStackQueuedSpinLock(_Inout_ PKSPIN_LOCK SpinLock
 
NTKERNELAPI ULONG NTAPI KeGetRecommendedSharedDataAlignment (VOID)
 
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _IRQL_requires_ (HIGH_LEVEL) NTKERNELAPI VOID NTAPI KeReleaseInterruptSpinLock(_Inout_ PKINTERRUPT Interrupt
 
_Requires_lock_held_ LockHandle _Releases_lock_ LockHandle LockHandle _DECL_HAL_KE_IMPORT VOID FASTCALL KeReleaseInStackQueuedSpinLock (_In_ PKLOCK_QUEUE_HANDLE LockHandle)
 
 _Requires_lock_held_ (Number) _Releases_lock_(Number) _DECL_HAL_KE_IMPORT VOID FASTCALL KeReleaseQueuedSpinLock(_In_ KSPIN_LOCK_QUEUE_NUMBER Number
 
_Must_inspect_result_ _Post_satisfies_ (return==1||return==0) _DECL_HAL_KE_IMPORT LOGICAL FASTCALL KeTryToAcquireQueuedSpinLock(_In_ KSPIN_LOCK_QUEUE_NUMBER Number
 
_Must_inspect_result_ NTKERNELAPI BOOLEAN NTAPI KeRegisterBugCheckReasonCallback (_Out_ PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, _In_ PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, _In_ KBUGCHECK_CALLBACK_REASON Reason, _In_ PUCHAR Component)
 
NTKERNELAPI VOID NTAPI KeInitializeThreadedDpc (_Out_ PRKDPC Dpc, _In_ PKDEFERRED_ROUTINE DeferredRoutine, _In_opt_ PVOID DeferredContext)
 
_Must_inspect_result_ NTKERNELAPI BOOLEAN FASTCALL KeTestSpinLock (_In_ PKSPIN_LOCK SpinLock)
 
_Must_inspect_result_ _Success_ (return !=FALSE) _IRQL_requires_max_(APC_LEVEL) _Post_satisfies_(return
 Returns the name of an atom.
 
*LockHandle LockHandle NTKERNELAPI VOID FASTCALL KeAcquireInStackQueuedSpinLockForDpc (_Inout_ PKSPIN_LOCK SpinLock, _Out_ PKLOCK_QUEUE_HANDLE LockHandle)
 
_Requires_lock_held_ LockHandle _Releases_lock_ LockHandle LockHandle NTKERNELAPI VOID FASTCALL KeReleaseInStackQueuedSpinLockForDpc (_In_ PKLOCK_QUEUE_HANDLE LockHandle)
 
NTKERNELAPI ULONG NTAPI KeQueryMaximumProcessorCountEx (_In_ USHORT GroupNumber)
 
NTKERNELAPI USHORT NTAPI KeQueryActiveGroupCount (VOID)
 
NTKERNELAPI USHORT NTAPI KeQueryMaximumGroupCount (VOID)
 
NTKERNELAPI KAFFINITY NTAPI KeQueryGroupAffinity (_In_ USHORT GroupNumber)
 
NTKERNELAPI ULONG NTAPI KeGetCurrentProcessorNumberEx (_Out_opt_ PPROCESSOR_NUMBER ProcNumber)
 
NTKERNELAPI VOID NTAPI KeQueryNodeActiveAffinity (_In_ USHORT NodeNumber, _Out_opt_ PGROUP_AFFINITY Affinity, _Out_opt_ PUSHORT Count)
 
NTKERNELAPI USHORT NTAPI KeQueryNodeMaximumProcessorCount (_In_ USHORT NodeNumber)
 
NTKRNLVISTAAPI USHORT NTAPI KeQueryHighestNodeNumber (VOID)
 
NTKRNLVISTAAPI USHORT NTAPI KeGetCurrentNodeNumber (VOID)
 
 $endif (_WDMDDK_||_NTDDK_) $if(_WDMDDK_) _IRQL_requires_max_(DISPATCH_LEVEL) _IRQL_requires_min_(PASSIVE_LEVEL) _IRQL_requires_same_ ULONG64 NTAPI KeQueryTotalCycleTimeProcess(_Inout_ PKPROCESS Process
 
_Must_inspect_result_ NTKERNELAPI NTSTATUS NTAPI KeSetTargetProcessorDpcEx (_Inout_ PKDPC Dpc, _In_ PPROCESSOR_NUMBER ProcNumber)
 
NTKERNELAPI ULONGLONG NTAPI KeQueryUnbiasedInterruptTime (VOID)
 
_Must_inspect_result_ _When_ (return==0, _Kernel_float_saved_) NTKERNELAPI NTSTATUS NTAPI KeSaveExtendedProcessorState(_In_ ULONG64 Mask
 
_Must_inspect_result_ _Out_ _Requires_lock_not_held_ _Curr_ _When_ (return==0, _Acquires_lock_(*_Curr_)) PXSTATE_SAVE XStateSave)
 
_Kernel_float_restored_ NTKERNELAPI VOID NTAPI KeRestoreExtendedProcessorState (_In_ _Requires_lock_held_(*_Curr_) _Releases_lock_(*_Curr_) PXSTATE_SAVE XStateSave)
 
NTSTATUS NTAPI KeGetProcessorNumberFromIndex (_In_ ULONG ProcIndex, _Out_ PPROCESSOR_NUMBER ProcNumber)
 
ULONG NTAPI KeGetProcessorIndexFromNumber (_In_ PPROCESSOR_NUMBER ProcNumber)
 

Variables

_In_ EVENT_TYPE Type
 
_In_ EVENT_TYPE _In_ BOOLEAN State
 
_In_ ULONG Length
 
_In_ SIZE_T _In_ ULONG Alignment
 
_In_ KDPC_IMPORTANCE Importance
 
_In_ KPRIORITY Increment
 
_In_ KPRIORITY _In_ BOOLEAN Wait
 
_Requires_lock_held_ SpinLock _Releases_lock_ SpinLock _In_ _IRQL_restores_ KIRQL NewIrql
 
_In_ BOOLEAN Alertable
 
_In_ BOOLEAN _In_ PLARGE_INTEGER Interval
 
_In_ LONG Count
 
_In_ LONG _In_ LONG Limit
 
_Inout_ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
 
_Inout_ PKDEVICE_QUEUE_ENTRY _In_ ULONG SortKey
 
_In_ KPRIORITY _In_ LONG Adjustment
 
_In_ KPRIORITY Priority
 
_In_ LARGE_INTEGER DueTime
 
_In_ LARGE_INTEGER _In_opt_ PKDPC Dpc
 
_In_ LARGE_INTEGER _In_ LONG Period OPTIONAL
 
_In_ PKSYNCHRONIZE_ROUTINE SynchronizeRoutine
 
_In_ PKSYNCHRONIZE_ROUTINE _In_opt_ __drv_aliasesMem PVOID SynchronizeContext
 
_In_ BOOLEAN InitialOwner
 
_In_ KPRIORITY _In_ BOOLEAN Abandoned
 
_Inout_ PLIST_ENTRY Entry
 
_Out_ PKAPC_STATE ApcState
 
_In_ UCHAR Processor
 
*LockHandle LockHandle _Out_ PKLOCK_QUEUE_HANDLE LockHandle
 
_Out_ PULONG UserTime
 
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
 
_In_opt_ PVOID Context
 
_In_opt_ PVOID Parameter
 
_In_opt_ PVOID _In_ SIZE_T Size
 
_Out_ PCLIENT_ID ClientId
 
_In_opt_ PVOID CallbackContext
 
_In_opt_ PVOID _In_ ULONG Flags
 
_In_ LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType
 
_In_ LOGICAL_PROCESSOR_RELATIONSHIP _Out_writes_bytes_opt_ Length PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information
 
_Out_ PULONG64 CycleTimeStamp
 
_Out_opt_ PGROUP_AFFINITY PreviousAffinity
 
_In_ LARGE_INTEGER _In_ ULONG Period
 
_In_ LARGE_INTEGER _In_ ULONG _In_ ULONG TolerableDelay
 
*Count PHARDWARE_COUNTER CounterArray
 
*Count PHARDWARE_COUNTER _In_ ULONG MaximumCount
 

Macro Definition Documentation

◆ KeAcquireSpinLock

#define KeAcquireSpinLock (   SpinLock,
  OldIrql 
)     *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock)

Definition at line 185 of file kefuncs.h.

◆ KeInitializeCallbackRecord

#define KeInitializeCallbackRecord (   CallbackRecord)     (CallbackRecord)->State = BufferEmpty;

Definition at line 1387 of file kefuncs.h.

◆ KeWaitForMutexObject

#define KeWaitForMutexObject   KeWaitForSingleObject

Definition at line 543 of file kefuncs.h.

◆ PAGED_CODE

#define PAGED_CODE ( )    NOP_FUNCTION;

Definition at line 1416 of file kefuncs.h.

◆ PAGED_CODE_LOCKED

Function Documentation

◆ $endif() [1/4]

$endif ( _NTDDK_  )

Definition at line 559 of file iofuncs.h.

2502{
2503 PriorityInfo->Size = sizeof(IO_PRIORITY_INFO);
2504 PriorityInfo->ThreadPriority = 0xffff;
2505 PriorityInfo->IoPriority = IoPriorityNormal;
2506 PriorityInfo->PagePriority = 0;
2507}
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD _Inout_ PIO_PRIORITY_INFO PriorityInfo
Definition: fltkernel.h:2654
struct _IO_PRIORITY_INFO IO_PRIORITY_INFO
@ IoPriorityNormal
Definition: iotypes.h:1233

◆ $endif() [2/4]

$endif ( _NTIFS_  )

Definition at line 396 of file rtlfuncs.h.

2853{
2855 ret.QuadPart = SignedInteger;
2856 return ret;
2857}
return ret
Definition: rtlfuncs.h:3104

◆ $endif() [3/4]

$endif ( _WDMDDK_  )

Definition at line 85 of file ke.h.

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

◆ $endif() [4/4]

$endif ( _WDMDDK_||  _NTDDK_)

◆ $if()

$if ( _WDMDDK_  )

Kernel definitions for ARM64

Kernel definitions for AMD64

Kernel definitions for ARM

Definition at line 1 of file ke.h.

31{
32 ULONG Dummy;
KFLOATING_SAVE
Definition: ke.h:33
* PKFLOATING_SAVE
Definition: ke.h:33
uint32_t ULONG
Definition: typedefs.h:59

◆ _Acquires_lock_()

_Acquires_lock_ ( _Global_critical_region_  )

Definition at line 59 of file Object.c.

64{
66
67 /* Try acquiring the lock */
69 {
70 /* Someone changed it, use the slow path */
72 }
73
74 /* Sanity check */
75 FLT_ASSERT(PushLock->Locked);
76}
#define EX_PUSH_LOCK_LOCK_V
Definition: Object.c:28
#define FLT_ASSERT(_e)
Definition: fltkernel.h:49
#define InterlockedBitTestAndSet
Definition: interlocked.h:30
#define KeEnterCriticalRegion()
Definition: ke_x.h:88
VOID FASTCALL ExfAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock)
Definition: pushlock.c:471
int32_t * PLONG
Definition: typedefs.h:58

◆ _IRQL_raises_() [1/2]

*LockHandle LockHandle _IRQL_raises_ ( DISPATCH_LEVEL  )

◆ _IRQL_raises_() [2/2]

◆ _IRQL_requires_() [1/2]

Definition at line 394 of file expool.c.

1465{
1466 SIZE_T OldSize = PoolBigPageTableSize;
1467 SIZE_T NewSize, NewSizeInBytes;
1468 PPOOL_TRACKER_BIG_PAGES NewTable;
1469 PPOOL_TRACKER_BIG_PAGES OldTable;
1470 ULONG i;
1471 ULONG PagesFreed;
1472 ULONG Hash;
1473 ULONG HashMask;
1474
1475 /* Must be holding ExpLargePoolTableLock */
1477
1478 /* Make sure we don't overflow */
1479 if (Shrink)
1480 {
1481 NewSize = OldSize / 2;
1482
1483 /* Make sure we don't shrink too much. */
1485
1487 ASSERT(NewSize <= OldSize);
1488
1489 /* If there is only one page left, then keep it around. Not a failure either. */
1490 if (NewSize == OldSize)
1491 {
1494 return TRUE;
1495 }
1496 }
1497 else
1498 {
1499 if (!NT_SUCCESS(RtlSIZETMult(2, OldSize, &NewSize)))
1500 {
1501 DPRINT1("Overflow expanding big page table. Size=%lu\n", OldSize);
1503 return FALSE;
1504 }
1505
1506 /* Make sure we don't stupidly waste pages */
1508 ASSERT(NewSize > OldSize);
1509 }
1510
1511 if (!NT_SUCCESS(RtlSIZETMult(sizeof(POOL_TRACKER_BIG_PAGES), NewSize, &NewSizeInBytes)))
1512 {
1513 DPRINT1("Overflow while calculating big page table size. Size=%lu\n", OldSize);
1515 return FALSE;
1516 }
1517
1518 NewTable = MiAllocatePoolPages(NonPagedPool, NewSizeInBytes);
1519 if (NewTable == NULL)
1520 {
1521 DPRINT("Could not allocate %lu bytes for new big page table\n", NewSizeInBytes);
1523 return FALSE;
1524 }
1525
1526 DPRINT("%s big pool tracker table to %lu entries\n", Shrink ? "Shrinking" : "Expanding", NewSize);
1527
1528 /* Initialize the new table */
1529 RtlZeroMemory(NewTable, NewSizeInBytes);
1530 for (i = 0; i < NewSize; i++)
1531 {
1532 NewTable[i].Va = (PVOID)POOL_BIG_TABLE_ENTRY_FREE;
1533 }
1534
1535 /* Copy over all items */
1536 OldTable = PoolBigPageTable;
1537 HashMask = NewSize - 1;
1538 for (i = 0; i < OldSize; i++)
1539 {
1540 /* Skip over empty items */
1541 if ((ULONG_PTR)OldTable[i].Va & POOL_BIG_TABLE_ENTRY_FREE)
1542 {
1543 continue;
1544 }
1545
1546 /* Recalculate the hash due to the new table size */
1547 Hash = ExpComputePartialHashForAddress(OldTable[i].Va) % HashMask;
1548
1549 /* Find the location in the new table */
1550 while (!((ULONG_PTR)NewTable[Hash].Va & POOL_BIG_TABLE_ENTRY_FREE))
1551 {
1552 if (++Hash == NewSize)
1553 Hash = 0;
1554 }
1555
1556 /* We must have space */
1558
1559 /* Finally, copy the item */
1560 NewTable[Hash] = OldTable[i];
1561 }
1562
1563 /* Activate the new table */
1564 PoolBigPageTable = NewTable;
1567
1568 /* Release the lock, we're done changing global state */
1570
1571 /* Free the old table and update our tracker */
1572 PagesFreed = MiFreePoolPages(OldTable);
1573 ExpRemovePoolTracker('looP', PagesFreed << PAGE_SHIFT, 0);
1574 ExpInsertPoolTracker('looP', ALIGN_UP_BY(NewSizeInBytes, PAGE_SIZE), 0);
1575
1576 return TRUE;
1577}
#define ALIGN_DOWN_BY(size, align)
#define ALIGN_UP_BY(size, align)
#define DPRINT1
Definition: precomp.h:8
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
static int Hash(const char *)
Definition: reader.c:2257
#define KeReleaseSpinLock(sl, irql)
Definition: env_spec_w32.h:627
#define PAGE_SIZE
Definition: env_spec_w32.h:49
#define PAGE_SHIFT
Definition: env_spec_w32.h:45
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
#define NonPagedPool
Definition: env_spec_w32.h:307
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
ULONG ExpPoolBigEntriesInUse
Definition: expool.c:55
VOID NTAPI ExpRemovePoolTracker(IN ULONG Key, IN SIZE_T NumberOfBytes, IN POOL_TYPE PoolType)
Definition: expool.c:760
SIZE_T PoolBigPageTableSize
Definition: expool.c:47
FORCEINLINE ULONG ExpComputePartialHashForAddress(IN PVOID BaseAddress)
Definition: expool.c:457
PPOOL_TRACKER_BIG_PAGES PoolBigPageTable
Definition: expool.c:50
#define POOL_BIG_TABLE_ENTRY_FREE
Definition: expool.c:23
KSPIN_LOCK ExpLargePoolTableLock
Definition: expool.c:54
VOID NTAPI ExpInsertPoolTracker(IN ULONG Key, IN SIZE_T NumberOfBytes, IN POOL_TYPE PoolType)
Definition: expool.c:851
SIZE_T PoolBigPageTableHash
Definition: expool.c:47
_Must_inspect_result_ _In_ USHORT NewSize
Definition: fltkernel.h:975
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define ASSERT(a)
Definition: mode.c:44
PVOID NTAPI MiAllocatePoolPages(IN POOL_TYPE PoolType, IN SIZE_T SizeInBytes)
Definition: pool.c:422
ULONG NTAPI MiFreePoolPages(IN PVOID StartingAddress)
Definition: pool.c:918
#define DPRINT
Definition: sndvol32.h:73
void * PVOID
Definition: typedefs.h:50
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
uint32_t ULONG_PTR
Definition: typedefs.h:65
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
Definition: kefuncs.h:778

◆ _IRQL_requires_() [2/2]

◆ _IRQL_requires_max_() [1/4]

_IRQL_requires_max_ ( APC_LEVEL  )

Probes and locks virtual pages in memory for the specified process.

Parameters
[in,out]MemoryDescriptorListMemory Descriptor List (MDL) containing the buffer to be probed and locked.
[in]ProcessThe process for which the buffer should be probed and locked.
[in]AccessModeAccess mode for probing the pages. Can be KernelMode or UserMode.
[in]LockOperationThe type of the probing and locking operation. Can be IoReadAccess, IoWriteAccess or IoModifyAccess.
Returns
Nothing.
See also
MmProbeAndLockPages
Remarks
Must be called at IRQL <= APC_LEVEL

Definition at line 37 of file cddata.c.

254{
255 THREAD_CONTEXT ThreadContext = {0};
256 PIRP_CONTEXT IrpContext = NULL;
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
410
411 Status = CdCommonDevControl( IrpContext, Irp );
412 break;
413
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}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
VOID CdCompleteRequest(_Inout_opt_ PIRP_CONTEXT IrpContext, _Inout_opt_ PIRP Irp, _In_ NTSTATUS Status)
Definition: cddata.c:914
LONG CdExceptionFilter(_Inout_ PIRP_CONTEXT IrpContext, _In_ PEXCEPTION_POINTERS ExceptionPointer)
Definition: cddata.c:525
VOID CdSetThreadContext(_Inout_ PIRP_CONTEXT IrpContext, _In_ PTHREAD_CONTEXT ThreadContext)
Definition: cddata.c:981
#define ASSERT_OPTIONAL_IRP(I)
Definition: cddata.h:251
NTSTATUS CdCompleteMdl(_In_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: cachesup.c:411
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
Definition: strucsup.c:1733
#define CanFsdWait(I)
Definition: cdprocs.h:2001
NTSTATUS CdCommonLockControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: lockctrl.c:35
NTSTATUS CdCommonDevControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: devctrl.c:46
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
Definition: strucsup.c:1573
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
Definition: cdstruc.h:1214
_In_ PIRP Irp
Definition: csq.h:116
#define CDFS_NTC_IRP_CONTEXT
Definition: nodetype.h:34
#define SafeNodeType(Ptr)
Definition: nodetype.h:54
UCHAR KIRQL
Definition: env_spec_w32.h:591
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
#define FlagOn(_F, _SF)
Definition: ext2fs.h:179
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
Status
Definition: gdiplustypes.h:25
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
PIRP NTAPI IoGetTopLevelIrp(VOID)
Definition: irp.c:1843
#define STATUS_CANT_WAIT
Definition: ntstatus.h:452
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:165
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:66
#define _SEH2_GetExceptionInformation()
Definition: pseh2_64.h:164
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
#define IRP_MN_COMPLETE
Definition: iotypes.h:4420
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SHUTDOWN
#define IRP_MJ_CLEANUP
#define NT_ASSERT
Definition: rtlfuncs.h:3324

◆ _IRQL_requires_max_() [2/4]

_IRQL_requires_max_ ( DISPATCH_LEVEL  )

Definition at line 347 of file common.c.

3587{
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
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
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 {
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 MAXIMUM_RETRIES
Definition: cdrom.h:124
#define SCSI_CDROM_TIMEOUT
Definition: cdrom.h:680
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 TEST_FLAG(Flags, Bit)
Definition: cdrom.h:1495
@ PowerDownDeviceStopped
Definition: cdrom.h:412
@ PowerDownDeviceQuiesced
Definition: cdrom.h:410
@ PowerDownDeviceInitial
Definition: cdrom.h:408
@ PowerDownDeviceLocked
Definition: cdrom.h:409
@ PowerDownDeviceFlushed
Definition: cdrom.h:411
union _CDB * PCDB
#define SCSIOP_START_STOP_UNIT
Definition: cdrw_hw.h:897
#define SCSIOP_SYNCHRONIZE_CACHE
Definition: cdrw_hw.h:918
NTSTATUS RequestSend(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDFIOTARGET IoTarget, _In_ ULONG Flags, _Out_opt_ PBOOLEAN RequestSent)
Definition: common.c:3793
VOID RequestClearSendTime(_In_ WDFREQUEST Request)
Definition: common.c:111
#define SRB_FUNCTION_EXECUTE_SCSI
Definition: srb.h:315
#define SRB_FLAGS_NO_DATA_TRANSFER
Definition: srb.h:402
#define SRB_FUNCTION_LOCK_QUEUE
Definition: srb.h:332
#define SRB_FUNCTION_UNLOCK_QUEUE
Definition: srb.h:333
#define SRB_FLAGS_BYPASS_LOCKED_QUEUE
Definition: srb.h:410
#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER
Definition: srb.h:397
#define SRB_STATUS(Status)
Definition: srb.h:389
#define SRB_STATUS_QUEUE_FROZEN
Definition: srb.h:386
#define SRB_FLAGS_NO_QUEUE_FREEZE
Definition: srb.h:404
#define SRB_STATUS_SUCCESS
Definition: srb.h:341
#define KeDelayExecutionThread(mode, foo, t)
Definition: env_spec_w32.h:484
GLdouble GLdouble t
Definition: gl.h:2047
#define KernelMode
Definition: asm.h:34
#define STATUS_NOT_IMPLEMENTED
Definition: ntstatus.h:239
#define SRB_FLAGS_D3_PROCESSING
Definition: srb.h:165
#define SRB_FUNCTION_QUIESCE_DEVICE
Definition: srb.h:99
#define KeQueryTickCount(CurrentCount)
Definition: ke.h:43
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
Definition: ps.c:97
Definition: cdrw_hw.h:28
struct _CDB::_START_STOP START_STOP
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
@ WDF_REQUEST_SEND_OPTION_SYNCHRONOUS
Definition: wdfrequest.h:109
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:895

◆ _IRQL_requires_max_() [3/4]

_IRQL_requires_max_ ( HIGH_LEVEL  )

Definition at line 55 of file wdfdpc.h.

151{
152 return ((PFN_WDFDPCENQUEUE) WdfFunctions[WdfDpcEnqueueTableIndex])(WdfDriverGlobals, Dpc);
153}
#define WdfFunctions
Definition: wdf.h:66
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
Definition: wdfdpc.h:112
PWDF_DRIVER_GLOBALS WdfDriverGlobals
@ WdfDpcEnqueueTableIndex
Definition: wdffuncenum.h:137

◆ _IRQL_requires_max_() [4/4]

_IRQL_requires_max_ ( PASSIVE_LEVEL  )

Queries information details about a security descriptor.

Computes the quota size of a security descriptor.

Assigns a security descriptor for a new object.

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

Frees a security descriptor.

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

Modifies some information data about a security descriptor.

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

Definition at line 923 of file Messaging.c.

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

◆ _IRQL_requires_min_() [1/2]

Definition at line 994 of file spinlock.c.

127{
128#if defined(CONFIG_SMP) || DBG
129 /* Make sure we are at DPC or above! */
131 {
132 /* We aren't -- bugcheck */
133 KeBugCheckEx(IRQL_NOT_GREATER_OR_EQUAL,
134 (ULONG_PTR)LockHandle->Lock,
136 0,
137 0);
138 }
139#endif
140
141 /* Do the inlined function */
142 KxReleaseSpinLock(LockHandle->Lock);
143}
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
Definition: rtlcompat.c:108
*LockHandle LockHandle _Out_ PKLOCK_QUEUE_HANDLE LockHandle
Definition: kefuncs.h:717

◆ _IRQL_requires_min_() [2/2]

_IRQL_requires_min_ ( PASSIVE_LEVEL  )
Initial value:
_In_ __drv_strictTypeMatch(__drv_typeCond) KWAIT_REASON WaitReason,
_In_ __drv_strictType(KPROCESSOR_MODE/enum _MODE,__drv_typeConst) KPROCESSOR_MODE WaitMode,
#define __drv_strictType(typename, mode)
Definition: driverspecs.h:329
#define _IRQL_requires_max_(irql)
Definition: driverspecs.h:230
#define __drv_strictTypeMatch(mode)
Definition: driverspecs.h:330
#define APC_LEVEL
Definition: env_spec_w32.h:695
_Must_inspect_result_ _In_ WAIT_TYPE _In_opt_ PLARGE_INTEGER _In_opt_ PKWAIT_BLOCK WaitBlockArray
Definition: fsrtlfuncs.h:1153
#define _Out_opt_
Definition: ms_sal.h:346
#define _When_(expr, annos)
Definition: ms_sal.h:254
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
#define _In_reads_(size)
Definition: ms_sal.h:319
enum _WAIT_TYPE WAIT_TYPE
NTSTATUS NTAPI KeWaitForMultipleObjects(IN ULONG Count, IN PVOID Object[], IN WAIT_TYPE WaitType, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL, OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL)
Definition: wait.c:586
static ULONG Timeout
Definition: ping.c:61
WaitType
Definition: shlextdbg.cpp:386
#define NTAPI
Definition: typedefs.h:36
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
#define NTKERNELAPI
_In_ BOOLEAN Alertable
Definition: kefuncs.h:258
_In_ LONG Count
Definition: kefuncs.h:303
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
_MODE
Definition: ketypes.h:10
enum _KWAIT_REASON KWAIT_REASON

◆ _Post_satisfies_()

_Must_inspect_result_ _Post_satisfies_ ( return  = = 1 || return == 0)

◆ _Releases_lock_()

_Releases_lock_ ( _Global_critical_region_  )

Definition at line 101 of file Object.c.

106{
107 EX_PUSH_LOCK OldValue = *PushLock;
108 EX_PUSH_LOCK NewValue;
109
110 /* Sanity checks */
111 FLT_ASSERT(OldValue.Locked);
112
113 /* Check if the pushlock is shared */
114 if (OldValue.Shared > 1)
115 {
116 /* Decrease the share count */
117 NewValue.Value = OldValue.Value - EX_PUSH_LOCK_SHARE_INC;
118 }
119 else
120 {
121 /* Clear the pushlock entirely */
122 NewValue.Value = 0;
123 }
124
125 /* Check if nobody is waiting on us and try clearing the lock here */
126 if ((OldValue.Waiting) ||
127 (ExpChangePushlock(PushLock, NewValue.Ptr, OldValue.Ptr) !=
128 OldValue.Ptr))
129 {
130 /* We have waiters, use the long path */
131 ExfReleasePushLock(PushLock);
132 }
133
135}
#define EX_PUSH_LOCK_SHARE_INC
Definition: Object.c:33
#define ExpChangePushlock(x, y, z)
Definition: Object.c:23
#define KeLeaveCriticalRegion()
Definition: ke_x.h:119
VOID FASTCALL ExfReleasePushLock(PEX_PUSH_LOCK PushLock)
Definition: pushlock.c:810
ULONG_PTR Value
Definition: extypes.h:465
PVOID Ptr
Definition: extypes.h:466
ULONG_PTR Waiting
Definition: extypes.h:460
ULONG_PTR Shared
Definition: extypes.h:463
ULONG_PTR Locked
Definition: extypes.h:459

◆ _Requires_lock_held_()

_Requires_lock_held_ ( Number  )

◆ _Success_()

_Must_inspect_result_ _Success_ ( return = 0)

Returns the name of an atom.

Parameters
atom- The atom to be queried.
pustrName- Pointer to an initialized UNICODE_STRING that receives the name of the atom. The function does not update the Length member. The string is always NULL-terminated.
Returns
The length of the name in characters, or 0 if the function fails.
Note
The function does not aquire any global lock, since synchronisation is handled by the RtlAtom function.

Definition at line 436 of file fsctrl.c.

3189{
3191
3192 PVPB Vpb = Vcb->Vpb;
3193 PVPB OldVpb;
3194
3195 BOOLEAN Remount = FALSE;
3196
3197 PAGED_CODE();
3198
3199 UNREFERENCED_PARAMETER( IrpContext );
3200
3201 //
3202 // Check whether we are looking for a device only Mvcb.
3203 //
3204
3205 for (Link = CdData.VcbQueue.Flink;
3206 Link != &CdData.VcbQueue;
3207 Link = Link->Flink) {
3208
3209 *OldVcb = CONTAINING_RECORD( Link, VCB, VcbLinks );
3210
3211 //
3212 // Skip ourselves.
3213 //
3214
3215 if (Vcb == *OldVcb) { continue; }
3216
3217 //
3218 // Look at the Vpb and state of the previous Vcb.
3219 //
3220
3221 OldVpb = (*OldVcb)->Vpb;
3222
3223 if ((OldVpb != Vpb) &&
3224 (OldVpb->RealDevice == Vpb->RealDevice) &&
3225 ((*OldVcb)->VcbCondition == VcbNotMounted)) {
3226
3227 //
3228 // If the current disk is a raw disk then it can match a previous music or
3229 // raw disk.
3230 //
3231
3232 if (FlagOn( Vcb->VcbState, VCB_STATE_AUDIO_DISK)) {
3233
3234 if (FlagOn( (*OldVcb)->VcbState, VCB_STATE_AUDIO_DISK )) {
3235
3236 //
3237 // If we have both TOC then fail the remount if the lengths
3238 // are different or they don't match.
3239 //
3240
3241 if ((Vcb->TocLength != (*OldVcb)->TocLength) ||
3242 ((Vcb->TocLength != 0) &&
3243 !RtlEqualMemory( Vcb->CdromToc,
3244 (*OldVcb)->CdromToc,
3245 Vcb->TocLength ))) {
3246
3247 continue;
3248 }
3249
3250 Remount = TRUE;
3251 break;
3252 }
3253
3254 //
3255 // The current disk is not a raw disk. Go ahead and compare
3256 // serial numbers, volume label and TOC.
3257 //
3258
3259 }
3260 else if ((OldVpb->SerialNumber == Vpb->SerialNumber) &&
3261 (Vcb->TocLength == (*OldVcb)->TocLength) &&
3262 ((Vcb->TocLength == 0) || RtlEqualMemory( Vcb->CdromToc,
3263 (*OldVcb)->CdromToc,
3264 Vcb->TocLength )) &&
3265 (Vpb->VolumeLabelLength == OldVpb->VolumeLabelLength) &&
3266 (RtlEqualMemory( OldVpb->VolumeLabel,
3267 Vpb->VolumeLabel,
3268 Vpb->VolumeLabelLength ))) {
3269 //
3270 // Remember the old Vcb. Then set the return value to
3271 // TRUE and break.
3272 //
3273
3274 Remount = TRUE;
3275 break;
3276 }
3277 }
3278 }
3279
3280 return Remount;
3281}
#define PAGED_CODE()
CD_DATA CdData
Definition: cddata.c:42
#define VCB_STATE_AUDIO_DISK
Definition: cdstruc.h:712
@ VcbNotMounted
Definition: cdstruc.h:490
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
Definition: fatprocs.h:1676
#define RtlEqualMemory(dst, src, len)
Definition: kdvm.h:18
#define Vcb
Definition: cdprocs.h:1415
LIST_ENTRY VcbQueue
Definition: cdstruc.h:334
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
Definition: cdstruc.h:498
Definition: iotypes.h:189
WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH/sizeof(WCHAR)]
Definition: iotypes.h:198
USHORT VolumeLabelLength
Definition: iotypes.h:193
ULONG SerialNumber
Definition: iotypes.h:196
struct _DEVICE_OBJECT * RealDevice
Definition: iotypes.h:195
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
static int Link(const char **args)
Definition: vfdcmd.c:2414

◆ _When_() [1/3]

◆ _When_() [2/3]

◆ _When_() [3/3]

_When_ ( Wait  = =0,
_IRQL_requires_max_(DISPATCH_LEVEL  
)

◆ KeAcquireInStackQueuedSpinLockForDpc()

*LockHandle LockHandle NTKERNELAPI VOID FASTCALL KeAcquireInStackQueuedSpinLockForDpc ( _Inout_ PKSPIN_LOCK  SpinLock,
_Out_ PKLOCK_QUEUE_HANDLE  LockHandle 
)

◆ KeBugCheck()

NTKERNELAPI DECLSPEC_NORETURN VOID NTAPI KeBugCheck ( _In_ ULONG  BugCheckCode)

◆ KeBugCheckEx()

NTKERNELAPI DECLSPEC_NORETURN VOID NTAPI KeBugCheckEx ( _In_ ULONG  BugCheckCode,
_In_ ULONG_PTR  BugCheckParameter1,
_In_ ULONG_PTR  BugCheckParameter2,
_In_ ULONG_PTR  BugCheckParameter3,
_In_ ULONG_PTR  BugCheckParameter4 
)

Definition at line 108 of file rtlcompat.c.

114{
115 __assume(0);
116}
#define __assume(x)
Definition: intrin.h:108

Referenced by _Acquires_nonreentrant_lock_(), _Function_class_(), _IRQL_requires_min_(), _Releases_nonreentrant_lock_(), ClasspReleaseQueue(), CmGetSystemControlValues(), CmGetSystemDriverList(), CmInitSystem1(), CmpHiveRootSecurityDescriptor(), CmpInitializeCache(), CmpInitializeHiveList(), CmpInitializeSystemHive(), CmpSecurityMethod(), CmpValueToData(), DceCreateDisplayDC(), DoCrashCommand(), ExAllocatePoolWithTag(), ExFreePoolWithTag(), ExpCheckPoolAllocation(), ExpCheckPoolHeader(), ExpCheckPoolIrqlLevel(), ExpCheckPoolLinks(), ExpCreateSystemRootLink(), ExpInitializeExecutive(), ExpInitializeWorkerThreads(), ExpInitNls(), ExpLoadInitialProcess(), ExpSystemErrorHandler(), ExpWorkerThreadEntryPoint(), ExQueueWorkItem(), ExReleaseResourceForThreadLite(), ExReturnPoolQuota(), ExSetResourceOwnerPointer(), FsRtlWorkerThread(), HalInitSystem(), HaliReadMPConfigTable(), HalpAcpiTableCacheInit(), HalpAllocateArray(), HalpCopyBufferMap(), HalpReportResourceUsage(), InitializePool(), IoAssignResources(), IoCancelFileOpen(), IoCancelIrp(), IofCallDriver(), IofCompleteRequest(), IoInvalidateDeviceRelations(), IoInvalidateDeviceState(), IopInitializePlugPlayServices(), IopMarkBootPartition(), IopMountVolume(), IopParseDevice(), IopStartRamdisk(), IoReportTargetDeviceChange(), IoReportTargetDeviceChangeAsynchronous(), IoSynchronousInvalidateDeviceRelations(), KeAcquireInStackQueuedSpinLockAtDpcLevel(), KeAcquireSpinLockAtDpcLevel(), KeAttachProcess(), KefAcquireSpinLockAtDpcLevel(), KefReleaseSpinLockFromDpcLevel(), KeRaiseIrqlToSynchLevel(), KeReleaseInStackQueuedSpinLockFromDpcLevel(), KeReleaseSpinLockFromDpcLevel(), KeRemoveQueue(), KeRestoreFloatingPointState(), KeRundownThread(), KeStackAttachProcess(), KeTryToAcquireSpinLockAtDpcLevel(), KiDeliverApc(), KiDispatchException(), KiEspToTrapFrame(), KiExitSystemCallDebugChecks(), KiInitializeKernel(), KiInitMachineDependent(), KiSwapContextExit(), KiSwapContextResume(), KiSystemService(), KiUserModeCallout(), KiVerifyCpuFeatures(), MiDecrementReferenceCount(), MiDecrementShareCount(), MiDeletePte(), MiFreeContiguousMemory(), MiInitializePfn(), MiInitializePfnAndMakePteValid(), MiInitializeSessionIds(), MiInsertPageInList(), MiMakeSystemAddressValid(), MiMakeSystemAddressValidPfn(), MiMapPfnDatabase(), MiniResetComplete(), MiRemoveFromSystemSpace(), MiSpecialPoolCheckPattern(), MmAccessFaultSectionView(), MmAllocateSpecialPool(), MmArmAccessFault(), MmArmInitSystem(), MmCommitSessionMappedView(), MmCreatePageFileMapping(), MmDeletePageFileMapping(), MmDeterminePoolType(), MmFreePagesFromMdl(), MmFreeSpecialPool(), MmMapLockedPagesSpecifyCache(), MmPageOutPhysicalAddress(), MmZeroPageThread(), MupDereferenceVcb(), Mx::MxBugCheckEx(), MxGetNextPage(), NdisIPnPStartDevice(), NdisMAllocateSharedMemory(), NtUserInitialize(), ObpCloseHandle(), ObpCloseHandleTableEntry(), PciAddDevice(), Phase1InitializationDiscard(), PiInitializeDevNode(), PopShutdownSystem(), PoShutdownBugCheck(), PsInitSystem(), PsLocateSystemDll(), PspCatchCriticalBreak(), PspExitThread(), PspInitializeSystemDll(), PspReturnProcessQuotaSpecifiedPool(), PspUnhandledExceptionInSystemThread(), RxAssert(), SeDefaultObjectMethod(), SeInitSystem(), USBPORT_FindUrbInIrpTable(), USBPORT_InsertIrpInTable(), USBPORT_SplitBulkInterruptTransfer(), USBPORT_SplitTransfer(), USBPORT_Unload(), UserInitialize(), vfatInitFcb(), and xHalTranslateBusAddress().

◆ KeDeregisterBugCheckCallback()

_Must_inspect_result_ NTKERNELAPI BOOLEAN NTAPI KeDeregisterBugCheckCallback ( _Inout_ PKBUGCHECK_CALLBACK_RECORD  CallbackRecord)

◆ KeGetCurrentNodeNumber()

NTKRNLVISTAAPI USHORT NTAPI KeGetCurrentNodeNumber ( VOID  )

◆ KeGetCurrentProcessorNumberEx()

NTKERNELAPI ULONG NTAPI KeGetCurrentProcessorNumberEx ( _Out_opt_ PPROCESSOR_NUMBER  ProcNumber)

◆ KeGetProcessorIndexFromNumber()

ULONG NTAPI KeGetProcessorIndexFromNumber ( _In_ PPROCESSOR_NUMBER  ProcNumber)

◆ KeGetProcessorNumberFromIndex()

NTSTATUS NTAPI KeGetProcessorNumberFromIndex ( _In_ ULONG  ProcIndex,
_Out_ PPROCESSOR_NUMBER  ProcNumber 
)

◆ KeGetRecommendedSharedDataAlignment()

◆ KeInitializeDpc()

NTKERNELAPI VOID NTAPI KeInitializeDpc ( _Out_ __drv_aliasesMem PRKDPC  Dpc,
_In_ PKDEFERRED_ROUTINE  DeferredRoutine,
_In_opt_ __drv_aliasesMem PVOID  DeferredContext 
)

◆ KeInitializeMutex()

NTKERNELAPI VOID NTAPI KeInitializeMutex ( _Out_ PRKMUTEX  Mutex,
_In_ ULONG  Level 
)

◆ KeInitializeQueue()

NTKERNELAPI VOID NTAPI KeInitializeQueue ( _Out_ PRKQUEUE  Queue,
_In_ ULONG  Count 
)

◆ KeInitializeSpinLock()

FORCEINLINE VOID KeInitializeSpinLock ( _Out_ PKSPIN_LOCK  SpinLock)

Definition at line 226 of file kefuncs.h.

227{
228 /* Clear the lock */
229 *SpinLock = 0;
230}
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
Definition: wdfsync.h:228

◆ KeInitializeThreadedDpc()

NTKERNELAPI VOID NTAPI KeInitializeThreadedDpc ( _Out_ PRKDPC  Dpc,
_In_ PKDEFERRED_ROUTINE  DeferredRoutine,
_In_opt_ PVOID  DeferredContext 
)

◆ KeInsertQueueDpc()

NTKERNELAPI BOOLEAN NTAPI KeInsertQueueDpc ( _Inout_ PRKDPC  Dpc,
_In_opt_ PVOID  SystemArgument1,
_In_opt_ PVOID  SystemArgument2 
)

◆ KeQueryActiveGroupCount()

NTKERNELAPI USHORT NTAPI KeQueryActiveGroupCount ( VOID  )

◆ KeQueryGroupAffinity()

NTKERNELAPI KAFFINITY NTAPI KeQueryGroupAffinity ( _In_ USHORT  GroupNumber)

◆ KeQueryHighestNodeNumber()

NTKRNLVISTAAPI USHORT NTAPI KeQueryHighestNodeNumber ( VOID  )

◆ KeQueryMaximumGroupCount()

NTKERNELAPI USHORT NTAPI KeQueryMaximumGroupCount ( VOID  )

◆ KeQueryMaximumProcessorCountEx()

NTKERNELAPI ULONG NTAPI KeQueryMaximumProcessorCountEx ( _In_ USHORT  GroupNumber)

◆ KeQueryNodeActiveAffinity()

NTKERNELAPI VOID NTAPI KeQueryNodeActiveAffinity ( _In_ USHORT  NodeNumber,
_Out_opt_ PGROUP_AFFINITY  Affinity,
_Out_opt_ PUSHORT  Count 
)

◆ KeQueryNodeMaximumProcessorCount()

NTKERNELAPI USHORT NTAPI KeQueryNodeMaximumProcessorCount ( _In_ USHORT  NodeNumber)

◆ KeQueryPerformanceCounter()

NTHALAPI LARGE_INTEGER NTAPI KeQueryPerformanceCounter ( _Out_opt_ PLARGE_INTEGER  PerformanceFrequency)

◆ KeQuerySystemTime()

NTKERNELAPI VOID NTAPI KeQuerySystemTime ( _Out_ PLARGE_INTEGER  CurrentTime)

◆ KeQueryTimeIncrement()

◆ KeQueryUnbiasedInterruptTime()

NTKERNELAPI ULONGLONG NTAPI KeQueryUnbiasedInterruptTime ( VOID  )

◆ KeRegisterBugCheckCallback()

_Must_inspect_result_ NTKERNELAPI BOOLEAN NTAPI KeRegisterBugCheckCallback ( _Out_ PKBUGCHECK_CALLBACK_RECORD  CallbackRecord,
_In_ PKBUGCHECK_CALLBACK_ROUTINE  CallbackRoutine,
_In_reads_bytes_opt_(Length) PVOID  Buffer,
_In_ ULONG  Length,
_In_ PUCHAR  Component 
)

◆ KeRegisterBugCheckReasonCallback()

_Must_inspect_result_ NTKERNELAPI BOOLEAN NTAPI KeRegisterBugCheckReasonCallback ( _Out_ PKBUGCHECK_REASON_CALLBACK_RECORD  CallbackRecord,
_In_ PKBUGCHECK_REASON_CALLBACK_ROUTINE  CallbackRoutine,
_In_ KBUGCHECK_CALLBACK_REASON  Reason,
_In_ PUCHAR  Component 
)

◆ KeReleaseInStackQueuedSpinLock()

◆ KeReleaseInStackQueuedSpinLockForDpc()

◆ KeRestoreExtendedProcessorState()

_Kernel_float_restored_ NTKERNELAPI VOID NTAPI KeRestoreExtendedProcessorState ( _In_ _Requires_lock_held_ *_Curr_ _Releases_lock_ *_Curr_ PXSTATE_SAVE  XStateSave)

◆ KeSetImportanceDpc()

NTKERNELAPI VOID NTAPI KeSetImportanceDpc ( _Inout_ PRKDPC  Dpc,
_In_ KDPC_IMPORTANCE  Importance 
)

◆ KeSetTargetProcessorDpcEx()

_Must_inspect_result_ NTKERNELAPI NTSTATUS NTAPI KeSetTargetProcessorDpcEx ( _Inout_ PKDPC  Dpc,
_In_ PPROCESSOR_NUMBER  ProcNumber 
)

◆ KeStallExecutionProcessor()

NTHALAPI VOID NTAPI KeStallExecutionProcessor ( _In_ ULONG  MicroSeconds)

Definition at line 30 of file delay.c.

32{
33 while (MicroSeconds--)
34 {
35 /* FIXME: Use stall factor */
37 }
38}
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:21
#define CPU_IO_o_ARTIC_DELAY
Definition: cpu.h:22
unsigned char * PUCHAR
Definition: typedefs.h:53

◆ KeTestSpinLock()

Variable Documentation

◆ Abandoned

Definition at line 582 of file kefuncs.h.

◆ Adjustment

◆ Alertable

_In_ BOOLEAN Alertable

Definition at line 258 of file kefuncs.h.

◆ Alignment

Definition at line 73 of file kefuncs.h.

◆ ApcState

_Out_ PKAPC_STATE ApcState

Definition at line 654 of file kefuncs.h.

◆ CallbackContext

_In_opt_ PVOID CallbackContext

Definition at line 1178 of file kefuncs.h.

◆ ClientId

Definition at line 1151 of file kefuncs.h.

Referenced by AVrfInitializeVerifier(), AvrfpResolveThunks(), BasepNotifyCsrOfThread(), ContinueDebugEvent(), CreatePipe(), CreateProcessInternalW(), CreateRemoteThread(), CSR_API(), CsrAddStaticServerThread(), CsrApiPortInitialize(), CsrCreateProcess(), CsrCreateRemoteThread(), CsrCreateThread(), CsrDestroyProcess(), CsrDestroyThread(), CsrExecServerThread(), CsrLocateThreadByClientId(), CsrpCheckRequestThreads(), CsrSbApiPortInitialize(), DbgUiContinue(), DbgUiIssueRemoteBreakin(), ElfChangeNotify(), ExitThread(), extfmt_default_dbg_vlog(), GetCurrentProcessId(), GetCurrentThreadId(), GuiConsoleInputThread(), GuiInit(), IntNotifyWinEvent(), LpcpFindDataInfoMessage(), LpcpFreeDataInfoMessage(), LpcpMoveMessage(), Main(), MmCreateTeb(), NtCreateThread(), NtDebugContinue(), NtImpersonateClientOfPort(), NtOpenProcess(), NtOpenThread(), NtUserSetWindowsHookAW(), OpenProcess(), OpenThread(), PostMessageA(), PostMessageW(), PrintProcess(), ProcessIdToHandle(), ProcessIdToSessionId(), PsCreateSystemThread(), PspCreateThread(), rosfmt_default_dbg_vlog(), RtlAcquireResourceExclusive(), RtlAcquireResourceShared(), RtlCreateUserThread(), RtlGetCriticalSectionRecursionCount(), RtlInitializeCriticalSectionEx(), RtlpFreeDebugInfo(), RtlpPageHeapCreate(), RtlpPageHeapDestroy(), RtlQueryProcessDebugInformation(), RtlTryEnterCriticalSection(), SetWindowsHookA(), SetWindowsHookW(), SmpLocateKnownSubSysByCid(), TerminateThread(), TestWindowProcess(), UnhandledExceptionFilter(), and winefmt_default_dbg_vlog().

◆ Context

Definition at line 879 of file kefuncs.h.

◆ Count

Definition at line 303 of file kefuncs.h.

◆ CounterArray

* Count PHARDWARE_COUNTER CounterArray

Definition at line 1368 of file kefuncs.h.

◆ CycleTimeStamp

_Out_ PULONG64 CycleTimeStamp

Definition at line 1270 of file kefuncs.h.

◆ DeviceQueueEntry

◆ Dpc

◆ DueTime

Definition at line 499 of file kefuncs.h.

◆ Entry

Definition at line 606 of file kefuncs.h.

◆ Flags

Definition at line 1179 of file kefuncs.h.

◆ Importance

_In_ KDPC_IMPORTANCE Importance

Definition at line 82 of file kefuncs.h.

Referenced by KeSetImportanceDpc().

◆ Increment

_In_ KPRIORITY Increment

Definition at line 90 of file kefuncs.h.

◆ Information

◆ InitialOwner

_In_ BOOLEAN InitialOwner

Definition at line 565 of file kefuncs.h.

Referenced by KeInitializeMutant(), and NtCreateMutant().

◆ Interval

Definition at line 259 of file kefuncs.h.

◆ Length

◆ Limit

◆ LockHandle

◆ MaximumCount

Definition at line 1369 of file kefuncs.h.

Referenced by NtCreateSemaphore().

◆ NewIrql

◆ OldIrql

Definition at line 778 of file kefuncs.h.

Referenced by $if(), __drv_requiresIRQL(), _Acquires_lock_(), _ExAcquireFastMutex(), _ExReleaseFastMutex(), _ExTryToAcquireFastMutex(), _HalpDismissIrqGeneric(), _HalpDismissIrqLevel(), _IRQL_requires_(), _IRQL_requires_max_(), _Releases_lock_(), _Requires_lock_held_(), _Requires_lock_not_held_(), _Success_(), _When_(), acpi_bus_generate_event_dpc(), acpi_bus_receive_event(), AcpiOsAcquireLock(), AcpiOsReleaseLock(), AcpiOsSignalSemaphore(), AcpiOsWaitSemaphore(), AddEntity(), AddrFileFree(), AddrFindShared(), AddrLocateInterface(), AddrSearchFirst(), AddrSearchNext(), AfdCancelHandler(), AfdEventReceive(), AfdEventReceiveDatagramHandler(), AfdSelect(), AllocateAnyPort(), AllocatePort(), AllocatePortFromRange(), BeepCleanup(), CcCanIWrite(), CcDeferWrite(), CcLazyWriteScan(), CcMapData(), CcpDereferenceBcb(), CcPerformReadAhead(), CcpGetAppropriateBcb(), CcPostWorkQueue(), CcpPinData(), CcPurgeCacheSection(), CcRosDeleteFileCache(), CcRosFlushDirtyPages(), CcRosGetVacb(), CcRosInitializeFileCache(), CcRosReleaseFileCache(), CcScheduleReadAhead(), CcSetAdditionalCacheAttributes(), CcSetFileSizes(), CcUninitializeCacheMap(), CcUnpinRepinnedBcb(), CcWaitForCurrentLazyWriterActivity(), CcWorkerThread(), ChewWorkItem(), ClassCallback(), ClassCancelRoutine(), ClassRead(), ClassStartIo(), Cleanup(), ConnectionFree(), CountInterfaces(), CreateDMA(), CTEScheduleEvent(), DeallocatePort(), DereferenceAdapterContextWithOpenEntry(), DestroyPortDriver(), DispPrepareIrpForCancel(), EndRequestHandler(), ExAllocatePoolWithTag(), ExDeleteNPagedLookasideList(), ExDeletePagedLookasideList(), ExFreePoolWithTag(), ExfUnblockPushLock(), ExfWakePushLock(), ExInterlockedExtendZone(), ExNotifyCallback(), ExpAddTagForBigPages(), ExpCheckPoolAllocation(), ExpDeleteTimer(), ExpExpandResourceOwnerTable(), ExpFindAndRemoveTagBigPages(), ExpInsertPoolTracker(), ExpTimerApcKernelRoutine(), ExRegisterCallback(), Ext2ClearVpbFlag(), Ext2SetVpbFlag(), ExTimerRundown(), ExUnlockPool(), ExUnregisterCallback(), FatPnpAdjustVpbRefCount(), FdoCallHWInitialize(), FindAdapterContextByName(), FindOnLinkInterface(), FreeDeviceData(), FreeMemoryManagement(), GetContext(), GetDefaultInterface(), CMiniportWaveICHStream::GetNewMappings(), GetReassemblyInfo(), HalAllocateAdapterChannel(), HalBeginSystemInterrupt(), HalEndSystemInterrupt(), HalEndSystemInterrupt2(), HalGetAdapter(), HaliRegisterBusHandler(), HalpApcInterruptHandler(), HalpDismissIrq07(), HalpDismissIrq07Level(), HalpDismissIrq13(), HalpDismissIrq13Level(), HalpDismissIrq15(), HalpDismissIrq15Level(), HalpDismissIrqGeneric(), HalpDismissIrqLevel(), HalpDispatchInterrupt2(), HalpDispatchInterruptHandler(), HalpEndSoftwareInterrupt2(), HalpGrowMapBuffers(), HalpGrowMapBufferWorker(), HalpPCIConfig(), HalpPCIReleaseSynchronizationType2(), HalpPCIReleaseSynchronzationType1(), HalpPCISynchronizeType1(), HalpPCISynchronizeType2(), HalPutDmaAdapter(), HalReadDmaCounter(), HandleReadIrp(), HdlspAcquireGlobalLock(), HdlspDispatch(), HdlspReleaseGlobalLock(), i8042RemoveDevice(), InbvAcquireLock(), InbvReleaseLock(), InfoTdiQueryEntityType(), InfoTdiQueryGetAddrTable(), InfoTdiQueryGetRouteTable(), InfoTdiQueryListEntities(), InPortDpcForIsr(), InterfacePciDevicePresent(), InterfacePciDevicePresentEx(), InternalWorker(), IntVideoPortResetDisplayParametersEx(), IoAcquireRemoveLockEx(), IoAllocateDriverObjectExtension(), IoCancelFileOpen(), IoCancelIrp(), IoCancelThreadIo(), IoEnumerateDeviceObjectList(), IoFreeAdapterChannel(), IoFreeMapRegisters(), IoGetDiskDeviceObject(), IoGetDriverObjectExtension(), IoMapTransfer(), IopAbortInterruptedIrp(), IopCancelRemoveChildDevices(), IopCheckVpbMounted(), IopCloseFile(), IopDecrementDeviceObjectRef(), IopDeleteFile(), IopDereferenceVpbAndFree(), IopDisassociateThreadIrp(), IopEditDeviceList(), IopFreeDeviceNode(), IopGetDevicePDO(), IopGetDriverPathInformation(), IopGetErrorLogEntry(), IopGetMountFlag(), IopGetSystemPowerDeviceObject(), IopMountInitializeVpb(), IopParseDevice(), IopPerformSynchronousRequest(), IopQueryRemoveChildDevices(), IopReferenceVerifyVpb(), IopRemoveTimerFromTimerList(), IopSendRemoveChildDevices(), IopStartNextPacket(), IopStartNextPacketByKey(), IopTimerDispatch(), IopVerifyDeviceObjectOnStack(), IoReleaseRemoveLockEx(), IoStartPacket(), IoStartTimer(), IoStopTimer(), IoUnregisterShutdownNotification(), IPFreeReassemblyList(), IPRegisterInterface(), IRPFinish(), KbdHid_DispatchInputData(), KdbDebugPrint(), KdbEnterDebuggerException(), KdbpAcquireLock(), KdbpReleaseLock(), KdbSymInit(), KdDisableDebuggerWithLock(), KdEnableDebuggerWithLock(), KdLogDbgPrint(), KdpAcquireLock(), KdPollBreakIn(), KdpPrintToLogFile(), KdpReleaseLock(), KdpSerialPrint(), KdpTimeSlipWork(), KdRegisterDebuggerDataBlock(), KeAcquireInterruptSpinLock(), KeAcquireQueuedSpinLock(), KeAcquireQueuedSpinLockRaiseToSynch(), KeAcquireSpinLock(), KeAcquireSpinLockRaiseToDpc(), KeAcquireSpinLockRaiseToSynch(), KeBoostPriorityThread(), KeBugCheckWithTf(), KeCancelTimer(), KeConnectInterrupt(), KeContextToTrapFrame(), KeDeregisterBugCheckCallback(), KeDeregisterBugCheckReasonCallback(), KeDeregisterNmiCallback(), KeDisconnectInterrupt(), KeFlushEntireTb(), KeFreezeExecution(), KeGenericCallDpc(), KeInitializeMutant(), KeInsertHeadQueue(), KeInsertQueue(), KeInsertQueueDpc(), KeIpiGenericCall(), KePulseEvent(), KeQueryBasePriorityThread(), KeQueryPerformanceCounter(), KeRaiseIrql(), KeReadyThread(), KeRegisterBugCheckCallback(), KeRegisterBugCheckReasonCallback(), KeRegisterNmiCallback(), KeReleaseInterruptSpinLock(), KeReleaseMutant(), KeReleaseQueuedSpinLock(), KeReleaseSemaphore(), KeReleaseSpinLock(), KeResetEvent(), KeRevertToUserAffinityThread(), KeRundownQueue(), KeRundownThread(), KeSetAffinityThread(), KeSetBasePriorityThread(), KeSetEvent(), KeSetEventBoostPriority(), KeSetIdealProcessorThread(), KeSetPriorityThread(), KeSetProcess(), KeSetSystemAffinityThread(), KeSetSystemTime(), KeSetTimerEx(), KeSignalGateBoostPriority(), KeStartProfile(), KeStopProfile(), KeSynchronizeExecution(), KeTrapFrameToContext(), KeTryToAcquireQueuedSpinLock(), KeTryToAcquireQueuedSpinLockRaiseToSynch(), KeyboardDeviceWorker(), KfLowerIrql(), KfRaiseIrql(), KfReleaseSpinLock(), KiAcquireNmiListLock(), KiChainedDispatch(), KiCheckForApcDelivery(), KiCheckForKernelApcDelivery(), KiCheckTimerTable(), KiContinue(), KiEspToTrapFrame(), KiExitDispatcher(), KiExitInterrupt(), KiExitSystemCallDebugChecks(), KiExitV86Trap(), KiInterruptDispatch(), KiInterruptHandler(), KillSelectsForFCB(), KiReleaseDispatcherLock(), KiReleaseNmiListLock(), KiRetireDpcList(), KiScanReadyQueues(), KiSystemService(), KiTimerExpiration(), KiTimerListExpire(), KiTrap02Handler(), KiTrap06Handler(), KiTrap0DHandler(), KiUnexpectedInterruptTailHandler(), KsQueueWorkItem(), KsRemoveIrpFromCancelableQueue(), KsUnregisterWorker(), LanAdapterInfo(), LanCloseProtocol(), LanEnumAdapters(), LanSetBufferedMode(), LANTransmit(), LANTransmitInternal(), LANUnregisterAdapter(), LANUnregisterProtocol(), LocateAdapterBindingByName(), LogActiveObjects(), LwipThreadMain(), MiAcquireExpansionLock(), MiAllocatePagesForMdl(), MiAllocatePoolPages(), MiArchCreateProcessAddressSpace(), MiBuildPagedPool(), MiBuildPfnDatabase(), MiBuildPfnDatabaseFromLoaderBlock(), MiCheckControlArea(), MiCheckPurgeAndUpMapCount(), MiCompleteProtoPteFault(), MiDeleteARM3Section(), MiDeleteSystemPageableVm(), MiDeleteVirtualAddresses(), MiDereferenceControlArea(), MiDereferenceSessionFinal(), MiDispatchFault(), MiFillSystemPageDirectory(), MiFindContiguousPages(), MiFlushTbAndCapture(), MiFreeContiguousMemory(), MiFreePoolPages(), MiGetPageProtection(), MiGrabDataSection(), MiInitializeAndChargePfn(), MiInitializePoolEvents(), MiInitMachineDependent(), MiLoadImageSection(), MiMakePdeExistAndMakeValid(), MiMakeSystemAddressValidPfn(), MiMapLockedPagesInUserSpace(), MiMapPageInHyperSpace(), MiniCheckForHang(), MiniDoRequest(), MiniIndicateData(), MiniIndicateReceivePacket(), MiniIsBusy(), MiniLocateDevice(), MiniportCloseEndpoint(), MiniportOpenEndpoint(), MiniportWorker(), MiniQueueWorkItem(), MiniRequestComplete(), MiniReset(), MiniResetComplete(), MiniSendComplete(), MiniStatus(), MiniStatusComplete(), MiniTransferDataComplete(), MiProcessLoaderEntry(), MiProcessValidPteList(), MiProtectVirtualMemory(), MiReadFilePage(), MiReleaseExpansionLock(), MiReleaseProcessReferenceToSessionDataPage(), MiReleaseSystemPtes(), MiRemoveMappedPtes(), MiRemoveMappedView(), MiReserveAlignedSystemPtes(), MiResolveDemandZeroFault(), MiResolvePageFileFault(), MiResolveProtoPteFault(), MiResolveTransitionFault(), MiSegmentDelete(), MiSessionAddProcess(), MiSessionCommitPageTables(), MiSessionCreateInternal(), MiSessionInitializeWorkingSetList(), MiSessionLeader(), MiSessionRemoveProcess(), MiUnmapLockedPagesInUserSpace(), MiUnmapPageInHyperSpace(), MiZeroPhysicalPage(), MmAllocPage(), MmArmAccessFault(), MmCreateArm3Section(), MmCreateDataFileSection(), MmCreateImageSection(), MmCreateKernelStack(), MmCreateProcessAddressSpace(), MmCreateVirtualMappingUnsafeEx(), MmDeleteKernelStack(), MmDeletePageFileMapping(), MmDeleteProcessAddressSpace(), MmDeleteRmap(), MmDeleteSectionAssociation(), MmDumpArmPfnDatabase(), MmFlushImageSection(), MmFreeLoaderBlock(), MmFreePagesFromMdl(), MmGetLRUFirstUserPage(), MmGetLRUNextUserPage(), MmGetPhysicalMemoryRanges(), MmGetReferenceCountPageWithoutLock(), MmGetSectionAssociation(), MmGetSessionById(), MmGrowKernelStackEx(), MmInitializeProcessAddressSpace(), MmInsertRmap(), MmMakeSegmentResident(), MmPageOutPhysicalAddress(), MmpDeleteSection(), MmProbeAndLockPages(), MmReleasePageMemoryConsumer(), MmTrimUserMemory(), MmUnlockPages(), MmWorkingSetManager(), MmZeroPageThread(), MouHid_DispatchInputData(), MountMgrChangeNotify(), MountMgrCleanup(), MountMgrNotify(), MyAllocatePool(), MyFreePool(), NBAddNeighbor(), NBCopyNeighbors(), NBDestroyNeighborsForInterface(), NBLocateNeighbor(), NBQueuePacket(), NBRemoveNeighbor(), NBResetNeighborTimeout(), NBShutdown(), NBUpdateNeighbor(), NdisMAllocateMapRegisters(), NdisMCancelTimer(), NdisMCloseLog(), NdisMCreateLog(), NdisMFlushLog(), NdisMFreeMapRegisters(), NdisMQueryInformationComplete(), NdisMSetInformationComplete(), NdisMSetPeriodicTimer(), NdisMSetTimer(), NdisMSetupDmaTransfer(), NdisReturnPackets(), NduDispatchRead(), NpAddWaiter(), NpCancelWaiter(), NpCancelWaitQueueIrp(), NpTimerDispatch(), NtCancelIoFile(), NtCancelTimer(), NtQueryInformationFile(), NtQueryInformationThread(), NtSetInformationFile(), NtSetTimer(), NtYieldExecution(), OpenDeviceReadWrite(), PciIdeXSetBusData(), PcIoTimerRoutine(), PcRegisterIoTimeout(), PcUnregisterIoTimeout(), PiDevNodeStateMachine(), PipDeviceActionWorker(), PiQueueDeviceAction(), PollReeval(), PoNotifySystemTimeSet(), PopGetDope(), PoRemoveVolumeDevice(), PostOnlineNotification(), CMiniportWaveICHStream::PowerChangeNotify_(), ProcessFragment(), ProIndicatePacket(), ProSend(), ProtocolTransferDataComplete(), ProTransferData(), PspChargeProcessQuotaSpecifiedPool(), PspDereferenceQuotaBlock(), PspInsertQuotaBlock(), PspReturnProcessQuotaSpecifiedPool(), PspUserThreadStartup(), QSI_DEF(), QueryBinding(), QueueWorkItem(), RawCheckForDismount(), ReadWritePassive(), CMiniportWaveICHStream::ReleaseUsedMappings(), RemoveEntityByContext(), RemoveIPDR(), RouterCreateRoute(), RouterGetRoute(), RouterRemoveRoute(), RouterRemoveRoutesForInterface(), RouterShutdown(), RtlPcToFileHeader(), RxAddToTopLevelIrpAllocatedContextsList(), RxAddToWorkque(), RxCancelNotifyChangeDirectoryRequestsForFobx(), RxCancelNotifyChangeDirectoryRequestsForVNetRoot(), RxCancelOperationInOverflowQueue(), RxCancelRoutine(), RxCompleteRequest_Real(), RxCompleteSrvOpenKeyAssociation(), RxCreateRxContext(), RxCreateSrvCallCallBack(), RxDereferenceAndDeleteRxContext_Real(), RxFinishSrvCallConstructionDispatcher(), RxFsdCommonDispatch(), RxGatherRequestsForSrvOpen(), RxInsertWorkQueueItem(), RxIsMemberOfTopLevelIrpAllocatedContextsList(), RxpDispatchChangeBufferingStateRequests(), RxPostOneShotTimerRequest(), RxpWorkerThreadDispatcher(), RxRemoveFromTopLevelIrpAllocatedContextsList(), RxRemoveOverflowEntry(), RxSpinUpRequestsDispatcher(), RxSpinUpWorkerThread(), SelectTimeout(), SendOnlineNotificationWorker(), SermouseDeviceWorker(), SpiGetNextRequestFromLun(), START_TEST(), StorPortAcquireMSISpinLock(), StorPortReleaseMSISpinLock(), sys_arch_mbox_fetch(), Tests_Insert_And_Delete(), TiUnload(), UnbindAdapterByContext(), USB2_RebalanceEndpoint(), USBH_FdoIdleNotificationCallback(), USBH_FdoQueryBusRelations(), USBH_FdoWWIrpIoCompletion(), USBH_HubQueuePortWakeIrps(), USBH_SelectConfigOrInterfaceComplete(), USBH_SyncIrpComplete(), USBH_UrbTimeoutDPC(), USBH_Worker(), USBHI_RootHubInitNotification(), USBPORT_CancelActiveTransferIrp(), USBPORT_CancelPendingTransferIrp(), USBPORT_CancelPendingWakeIrp(), USBPORT_CancelSplitTransfer(), USBPORT_ClosePipe(), USBPORT_CompletePdoWaitWake(), USBPORT_CompleteTransfer(), USBPORT_DeleteEndpoint(), USBPORT_DmaEndpointActive(), USBPORT_DmaEndpointPaused(), USBPORT_DoIdleNotificationCallback(), USBPORT_DoneSplitTransfer(), USBPORT_DoneTransfer(), USBPORT_FindCompanionControllers(), USBPORT_FindMiniPort(), USBPORT_FindUSB2Controller(), USBPORT_FlushAllEndpoints(), USBPORT_FlushCancelList(), USBPORT_FlushClosedEndpointList(), USBPORT_FlushController(), USBPORT_FlushDoneTransfers(), USBPORT_FlushMapTransfers(), USBPORT_FlushPendingTransfers(), USBPORT_HandleGetCurrentFrame(), USBPORT_InvalidateEndpointHandler(), USBPORT_MiniportCompleteTransfer(), USBPORT_MiniportInterrupts(), USBPORT_NukeAllEndpoints(), USBPORT_OpenPipe(), USBPORT_PdoPower(), USBPORT_QueueActiveUrbToEndpoint(), USBPORT_RemoveDevice(), USBPORT_RemoveDeviceHandle(), USBPORT_RemoveUSBxFdo(), USBPORT_RestoreDevice(), USBPORT_ResumeController(), USBPORT_RootHubClassCommand(), USBPORT_RootHubEndpointWorker(), USBPORT_RootHubStandardCommand(), USBPORT_SetEndpointState(), USBPORT_SignalWorkerThread(), USBPORT_TimerDpc(), USBPORT_ValidateDeviceHandle(), USBPORT_WorkerThread(), USBPORT_WorkerThreadHandler(), USBSTOR_QueueResetDevice(), USBSTOR_ResetDeviceWorkItemRoutine(), VdmEndExecution(), VdmpStartExecution(), VfatCheckForDismount(), VfatDoRequest(), VfatQueueRequest(), VideoPortAcquireSpinLock(), VideoPortCompleteDma(), VideoPortStartDma(), VideoPortSynchronizeExecution(), WaitForOnlinesToComplete(), WdmAudCleanup(), and WorkerThread().

◆ OPTIONAL

Definition at line 509 of file kefuncs.h.

◆ Parameter

Definition at line 1046 of file kefuncs.h.

◆ Period

◆ PreviousAffinity

_Out_opt_ PGROUP_AFFINITY PreviousAffinity

Definition at line 1296 of file kefuncs.h.

◆ Priority

Definition at line 491 of file kefuncs.h.

◆ Processor

◆ RelationshipType

Definition at line 1256 of file kefuncs.h.

◆ Size

Definition at line 1047 of file kefuncs.h.

◆ SortKey

◆ State

Definition at line 29 of file kefuncs.h.

◆ SynchronizeContext

◆ SynchronizeRoutine

_In_ PKSYNCHRONIZE_ROUTINE SynchronizeRoutine

Definition at line 524 of file kefuncs.h.

◆ TolerableDelay

◆ Type

Definition at line 28 of file kefuncs.h.

◆ UserTime

_Out_ PULONG UserTime

◆ Wait

Definition at line 91 of file kefuncs.h.