1 #ifndef __INCLUDE_DDK_KEFUNCS_H
2 #define __INCLUDE_DDK_KEFUNCS_H
4 /* KERNEL FUNCTIONS ********************************************************/
7 * FUNCTION: Acquires a spinlock so the caller can synchronize access to
10 * SpinLock = Initialized spinlock
11 * OldIrql (OUT) = Set the previous irql on return
13 VOID
KeAcquireSpinLock(PKSPIN_LOCK SpinLock
, PKIRQL OldIrql
);
15 VOID
KeAcquireSpinLockAtDpcLevel(PKSPIN_LOCK SpinLock
);
16 BOOLEAN
KeCancelTimer(PKTIMER Timer
);
17 VOID
KeClearEvent(PKEVENT Event
);
18 NTSTATUS
KeDelayExecutionThread(KPROCESSOR_MODE WaitMode
,
20 PLARGE_INTEGER Internal
);
21 BOOLEAN
KeDeregisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD
23 VOID
KeEnterCriticalRegion(VOID
);
24 VOID
KeFlushIoBuffers(PMDL Mdl
, BOOLEAN ReadOperation
, BOOLEAN DmaOperation
);
25 KIRQL
KeGetCurrentIrql(VOID
);
26 ULONG
KeGetCurrentProcessorNumber(VOID
);
27 ULONG
KeGetDcacheFillSize(VOID
);
28 PKTHREAD
KeGetCurrentThread(VOID
);
29 VOID
KeInitializeCallbackRecord(PKBUGCHECK_CALLBACK_RECORD CallbackRecord
);
30 VOID
KeInitializeDeviceQueue(PKDEVICE_QUEUE DeviceQueue
);
31 VOID
KeInitializeDpc(PKDPC Dpc
, PKDEFERRED_ROUTINE DeferredRoutine
,
32 PVOID DeferredContext
);
33 VOID
KeInitializeEvent(PKEVENT Event
, EVENT_TYPE Type
, BOOLEAN State
);
34 VOID
KeInitializeMutex(PKMUTEX Mutex
, ULONG Level
);
35 VOID
KeInitializeSemaphore(PKSEMAPHORE Semaphore
, LONG Count
, LONG Limit
);
36 VOID
KeInitializeTimer(PKTIMER Timer
);
37 VOID
KeInitializeTimerEx(PKTIMER Timer
, TIMER_TYPE Type
);
38 BOOLEAN
KeInsertByKeyDeviceQueue(PKDEVICE_QUEUE DeviceQueue
,
39 PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
,
41 BOOLEAN
KeInsertDeviceQueue(PKDEVICE_QUEUE DeviceQueue
,
42 PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
);
43 BOOLEAN
KeInsertQueueDpc(PKDPC Dpc
, PVOID SystemArgument1
,
44 PVOID SystemArgument2
);
45 VOID
KeLeaveCriticalRegion(VOID
);
46 VOID
KeLowerIrql(KIRQL NewIrql
);
47 LARGE_INTEGER
KeQueryPerformanceCounter(PLARGE_INTEGER PerformanceFrequency
);
48 VOID
KeQuerySystemTime(PLARGE_INTEGER CurrentTime
);
49 VOID
KeQueryTickCount(PLARGE_INTEGER TickCount
);
50 ULONG
KeQueryTimeIncrement(VOID
);
51 VOID
KeRaiseIrql(KIRQL NewIrql
, PKIRQL OldIrql
);
52 LONG
KeReadStateEvent(PKEVENT Event
);
53 LONG
KeReadStateMutex(PKMUTEX Mutex
);
54 LONG
KeReadStateSemaphore(PKSEMAPHORE Semaphore
);
55 BOOLEAN
KeReadStateTimer(PKTIMER Timer
);
56 BOOLEAN
KeRegisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord
,
57 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
,
61 LONG
KeReleaseMutex(PKMUTEX Mutex
, BOOLEAN Wait
);
62 LONG
KeReleaseSemaphore(PKSEMAPHORE Semaphore
, KPRIORITY Increment
,
63 LONG Adjustment
, BOOLEAN Wait
);
64 VOID
KeReleaseSpinLock(PKSPIN_LOCK Spinlock
, KIRQL NewIrql
);
65 VOID
KeReleaseSpinLockFromDpcLevel(PKSPIN_LOCK Spinlock
);
66 PKDEVICE_QUEUE_ENTRY
KeRemoveByKeyDeviceQueue(PKDEVICE_QUEUE DeviceQueue
,
68 PKDEVICE_QUEUE_ENTRY
KeRemoveDeviceQueue(PKDEVICE_QUEUE DeviceQueue
);
69 BOOLEAN
KeRemoveEntryDeviceQueue(PKDEVICE_QUEUE DeviceQueue
,
70 PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
);
71 BOOLEAN
KeRemoveQueueDpc(PKDPC Dpc
);
72 LONG
KeResetEvent(PKEVENT Event
);
73 LONG
KeSetBasePriorityThread(PKTHREAD Thread
, LONG Increment
);
74 LONG
KeSetEvent(PKEVENT Event
, KPRIORITY Increment
, BOOLEAN Wait
);
75 KPRIORITY
KeSetPriorityThread(PKTHREAD Thread
, KPRIORITY Priority
);
76 BOOLEAN
KeSetTimer(PKTIMER Timer
, LARGE_INTEGER DueTime
, PKDPC Dpc
);
77 BOOLEAN
KeSetTimerEx(PKTIMER Timer
, LARGE_INTEGER DueTime
, LONG Period
,
79 VOID
KeStallExecutionProcessor(ULONG MicroSeconds
);
80 BOOLEAN
KeSynchronizeExecution(PKINTERRUPT Interrupt
,
81 PKSYNCHRONIZE_ROUTINE SynchronizeRoutine
,
82 PVOID SynchronizeContext
);
83 NTSTATUS
KeWaitForMultipleObjects(ULONG Count
,
86 KWAIT_REASON WaitReason
,
87 KPROCESSOR_MODE WaitMode
,
89 PLARGE_INTEGER Timeout
,
90 PKWAIT_BLOCK WaitBlockArray
);
91 NTSTATUS
KeWaitForMutexObject(PKMUTEX Mutex
, KWAIT_REASON WaitReason
,
92 KPROCESSOR_MODE WaitMode
, BOOLEAN Alertable
,
93 PLARGE_INTEGER Timeout
);
94 NTSTATUS
KeWaitForSingleObject(PVOID Object
, KWAIT_REASON WaitReason
,
95 KPROCESSOR_MODE WaitMode
,
96 BOOLEAN Alertable
, PLARGE_INTEGER Timeout
);
99 * FUNCTION: Initializes a spinlock
101 * SpinLock = Spinlock to initialize
103 VOID
KeInitializeSpinLock(PKSPIN_LOCK SpinLock
);
106 * FUNCTION: Sets the current irql without altering the current processor
109 * newlvl = IRQ level to set
110 * NOTE: This is for internal use only
112 VOID
KeSetCurrentIrql(KIRQL newlvl
);
116 * FUNCTION: Brings the system down in a controlled manner when an
117 * inconsistency that might otherwise cause corruption has been detected
119 * BugCheckCode = Specifies the reason for the bug check
120 * BugCheckParameter[1-4] = Additional information about bug
123 VOID
KeBugCheckEx(ULONG BugCheckCode
,
124 ULONG BugCheckParameter1
,
125 ULONG BugCheckParameter2
,
126 ULONG BugCheckParameter3
,
127 ULONG BugCheckParameter4
);
130 * FUNCTION: Brings the system down in a controlled manner when an
131 * inconsistency that might otherwise cause corruption has been detected
133 * BugCheckCode = Specifies the reason for the bug check
136 VOID
KeBugCheck(ULONG BugCheckCode
);
138 #endif /* __INCLUDE_DDK_KEFUNCS_H */