Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenkefuncs.h
Go to the documentation of this file.
00001 /****************************************************************************** 00002 * Kernel Functions * 00003 ******************************************************************************/ 00004 $if (_WDMDDK_) 00005 #if defined(_M_IX86) 00006 $include(x86/ke.h) 00007 #elif defined(_M_AMD64) 00008 $include(amd64/ke.h) 00009 #elif defined(_M_IA64) 00010 $include(ia64/ke.h) 00011 #elif defined(_M_PPC) 00012 $include(ppc/ke.h) 00013 #elif defined(_M_MIPS) 00014 $include(mips/ke.h) 00015 #elif defined(_M_ARM) 00016 $include(arm/ke.h) 00017 #else 00018 #error Unknown Architecture 00019 #endif 00020 00021 NTKERNELAPI 00022 VOID 00023 NTAPI 00024 KeInitializeEvent( 00025 _Out_ PRKEVENT Event, 00026 _In_ EVENT_TYPE Type, 00027 _In_ BOOLEAN State); 00028 00029 _IRQL_requires_max_(DISPATCH_LEVEL) 00030 NTKERNELAPI 00031 VOID 00032 NTAPI 00033 KeClearEvent( 00034 _Inout_ PRKEVENT Event); 00035 $endif (_WDMDDK_) 00036 $if (_NTDDK_) 00037 00038 _IRQL_requires_min_(PASSIVE_LEVEL) 00039 _IRQL_requires_max_(DISPATCH_LEVEL) 00040 NTKERNELAPI 00041 VOID 00042 FASTCALL 00043 KeInvalidateRangeAllCaches( 00044 _In_ PVOID BaseAddress, 00045 _In_ ULONG Length); 00046 $endif (_NTDDK_) 00047 $if (_NTIFS_) 00048 00049 NTSTATUS 00050 NTAPI 00051 KeGetProcessorNumberFromIndex( 00052 _In_ ULONG ProcIndex, 00053 _Out_ PPROCESSOR_NUMBER ProcNumber); 00054 00055 ULONG 00056 NTAPI 00057 KeGetProcessorIndexFromNumber( 00058 _In_ PPROCESSOR_NUMBER ProcNumber); 00059 $endif (_NTIFS_) 00060 00061 #if (NTDDI_VERSION >= NTDDI_WIN2K) 00062 00063 $if (_WDMDDK_) 00064 #if defined(_NTDDK_) || defined(_NTIFS_) 00065 _Maybe_raises_SEH_exception_ 00066 _IRQL_requires_max_(APC_LEVEL) 00067 NTKERNELAPI 00068 VOID 00069 NTAPI 00070 ProbeForRead( 00071 __in_data_source(USER_MODE) _In_reads_bytes_(Length) CONST VOID *Address, /* CONST is added */ 00072 _In_ SIZE_T Length, 00073 _In_ ULONG Alignment); 00074 #endif /* defined(_NTDDK_) || defined(_NTIFS_) */ 00075 00076 _Maybe_raises_SEH_exception_ 00077 _IRQL_requires_max_(APC_LEVEL) 00078 NTKERNELAPI 00079 VOID 00080 NTAPI 00081 ProbeForWrite( 00082 __in_data_source(USER_MODE) _Inout_updates_bytes_(Length) PVOID Address, 00083 _In_ SIZE_T Length, 00084 _In_ ULONG Alignment); 00085 00086 $endif (_WDMDDK_) 00087 $if (_NTDDK_) 00088 NTKERNELAPI 00089 VOID 00090 NTAPI 00091 KeSetImportanceDpc( 00092 _Inout_ PRKDPC Dpc, 00093 _In_ KDPC_IMPORTANCE Importance); 00094 00095 _IRQL_requires_max_(DISPATCH_LEVEL) 00096 NTKERNELAPI 00097 LONG 00098 NTAPI 00099 KePulseEvent( 00100 _Inout_ PRKEVENT Event, 00101 _In_ KPRIORITY Increment, 00102 _In_ BOOLEAN Wait); 00103 00104 _IRQL_requires_min_(PASSIVE_LEVEL) 00105 _IRQL_requires_max_(DISPATCH_LEVEL) 00106 NTKERNELAPI 00107 LONG 00108 NTAPI 00109 KeSetBasePriorityThread( 00110 _Inout_ PRKTHREAD Thread, 00111 _In_ LONG Increment); 00112 00113 _Acquires_lock_(_Global_critical_region_) 00114 _IRQL_requires_max_(APC_LEVEL) 00115 NTKERNELAPI 00116 VOID 00117 NTAPI 00118 KeEnterCriticalRegion(VOID); 00119 00120 _Releases_lock_(_Global_critical_region_) 00121 _IRQL_requires_max_(APC_LEVEL) 00122 NTKERNELAPI 00123 VOID 00124 NTAPI 00125 KeLeaveCriticalRegion(VOID); 00126 00127 NTKERNELAPI 00128 DECLSPEC_NORETURN 00129 VOID 00130 NTAPI 00131 KeBugCheck( 00132 _In_ ULONG BugCheckCode); 00133 $endif(_NTDDK_) 00134 $if (_WDMDDK_ || _NTDDK_) 00135 #if defined(SINGLE_GROUP_LEGACY_API) 00136 $endif (_WDMDDK_ || _NTDDK_) 00137 00138 $if (_WDMDDK_) 00139 _IRQL_requires_min_(PASSIVE_LEVEL) 00140 _IRQL_requires_max_(APC_LEVEL) 00141 NTKERNELAPI 00142 VOID 00143 NTAPI 00144 KeRevertToUserAffinityThread(VOID); 00145 00146 _IRQL_requires_min_(PASSIVE_LEVEL) 00147 _IRQL_requires_max_(APC_LEVEL) 00148 NTKERNELAPI 00149 VOID 00150 NTAPI 00151 KeSetSystemAffinityThread( 00152 _In_ KAFFINITY Affinity); 00153 00154 NTKERNELAPI 00155 VOID 00156 NTAPI 00157 KeSetTargetProcessorDpc( 00158 _Inout_ PRKDPC Dpc, 00159 _In_ CCHAR Number); 00160 00161 NTKERNELAPI 00162 KAFFINITY 00163 NTAPI 00164 KeQueryActiveProcessors(VOID); 00165 $endif (_WDMDDK_) 00166 $if (_NTDDK_) 00167 00168 NTKERNELAPI 00169 VOID 00170 NTAPI 00171 KeSetTargetProcessorDpc( 00172 _Inout_ PRKDPC Dpc, 00173 _In_ CCHAR Number); 00174 00175 NTKERNELAPI 00176 KAFFINITY 00177 NTAPI 00178 KeQueryActiveProcessors(VOID); 00179 $endif (_NTDDK_) 00180 $if (_WDMDDK_ || _NTDDK_) 00181 #endif /* defined(SINGLE_GROUP_LEGACY_API) */ 00182 $endif (_WDMDDK_ || _NTDDK_) 00183 00184 $if (_WDMDDK_) 00185 #if !defined(_M_AMD64) 00186 NTKERNELAPI 00187 ULONGLONG 00188 NTAPI 00189 KeQueryInterruptTime(VOID); 00190 00191 NTKERNELAPI 00192 VOID 00193 NTAPI 00194 KeQuerySystemTime( 00195 _Out_ PLARGE_INTEGER CurrentTime); 00196 #endif /* !_M_AMD64 */ 00197 00198 #if !defined(_X86_) && !defined(_M_ARM) 00199 _Requires_lock_not_held_(*SpinLock) 00200 _Acquires_lock_(*SpinLock) 00201 _IRQL_requires_max_(DISPATCH_LEVEL) 00202 _IRQL_saves_ 00203 _IRQL_raises_(DISPATCH_LEVEL) 00204 NTKERNELAPI 00205 KIRQL 00206 NTAPI 00207 KeAcquireSpinLockRaiseToDpc( 00208 _Inout_ PKSPIN_LOCK SpinLock); 00209 00210 #define KeAcquireSpinLock(SpinLock, OldIrql) \ 00211 *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock) 00212 00213 _Requires_lock_not_held_(*SpinLock) 00214 _Acquires_lock_(*SpinLock) 00215 _IRQL_requires_min_(DISPATCH_LEVEL) 00216 NTKERNELAPI 00217 VOID 00218 NTAPI 00219 KeAcquireSpinLockAtDpcLevel( 00220 _Inout_ PKSPIN_LOCK SpinLock); 00221 00222 _Requires_lock_held_(*SpinLock) 00223 _Releases_lock_(*SpinLock) 00224 _IRQL_requires_(DISPATCH_LEVEL) 00225 NTKERNELAPI 00226 VOID 00227 NTAPI 00228 KeReleaseSpinLock( 00229 _Inout_ PKSPIN_LOCK SpinLock, 00230 _In_ _IRQL_restores_ KIRQL NewIrql); 00231 00232 _Requires_lock_held_(*SpinLock) 00233 _Releases_lock_(*SpinLock) 00234 _IRQL_requires_min_(DISPATCH_LEVEL) 00235 NTKERNELAPI 00236 VOID 00237 NTAPI 00238 KeReleaseSpinLockFromDpcLevel( 00239 _Inout_ PKSPIN_LOCK SpinLock); 00240 #endif /* !_X86_ */ 00241 00242 #if defined(_X86_) && (defined(_WDM_INCLUDED_) || defined(WIN9X_COMPAT_SPINLOCK)) 00243 NTKERNELAPI 00244 VOID 00245 NTAPI 00246 KeInitializeSpinLock( 00247 _Out_ PKSPIN_LOCK SpinLock); 00248 #else 00249 FORCEINLINE 00250 VOID 00251 KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock) 00252 { 00253 /* Clear the lock */ 00254 *SpinLock = 0; 00255 } 00256 #endif 00257 00258 NTKERNELAPI 00259 DECLSPEC_NORETURN 00260 VOID 00261 NTAPI 00262 KeBugCheckEx( 00263 _In_ ULONG BugCheckCode, 00264 _In_ ULONG_PTR BugCheckParameter1, 00265 _In_ ULONG_PTR BugCheckParameter2, 00266 _In_ ULONG_PTR BugCheckParameter3, 00267 _In_ ULONG_PTR BugCheckParameter4); 00268 00269 _IRQL_requires_max_(DISPATCH_LEVEL) 00270 NTKERNELAPI 00271 BOOLEAN 00272 NTAPI 00273 KeCancelTimer( 00274 _Inout_ PKTIMER); 00275 00276 _IRQL_requires_min_(PASSIVE_LEVEL) 00277 _IRQL_requires_max_(APC_LEVEL) 00278 NTKERNELAPI 00279 NTSTATUS 00280 NTAPI 00281 KeDelayExecutionThread( 00282 _In_ KPROCESSOR_MODE WaitMode, 00283 _In_ BOOLEAN Alertable, 00284 _In_ PLARGE_INTEGER Interval); 00285 00286 _Must_inspect_result_ 00287 NTKERNELAPI 00288 BOOLEAN 00289 NTAPI 00290 KeDeregisterBugCheckCallback( 00291 _Inout_ PKBUGCHECK_CALLBACK_RECORD CallbackRecord); 00292 00293 _Acquires_lock_(_Global_critical_region_) 00294 _IRQL_requires_max_(APC_LEVEL) 00295 NTKERNELAPI 00296 VOID 00297 NTAPI 00298 KeEnterCriticalRegion(VOID); 00299 00300 _IRQL_requires_max_(DISPATCH_LEVEL) 00301 NTKERNELAPI 00302 VOID 00303 NTAPI 00304 KeInitializeDeviceQueue( 00305 _Out_ PKDEVICE_QUEUE DeviceQueue); 00306 00307 NTKERNELAPI 00308 VOID 00309 NTAPI 00310 KeInitializeDpc( 00311 _Out_ __drv_aliasesMem PRKDPC Dpc, 00312 _In_ PKDEFERRED_ROUTINE DeferredRoutine, 00313 _In_opt_ __drv_aliasesMem PVOID DeferredContext); 00314 00315 NTKERNELAPI 00316 VOID 00317 NTAPI 00318 KeInitializeMutex( 00319 _Out_ PRKMUTEX Mutex, 00320 _In_ ULONG Level); 00321 00322 _IRQL_requires_max_(PASSIVE_LEVEL) 00323 NTKERNELAPI 00324 VOID 00325 NTAPI 00326 KeInitializeSemaphore( 00327 _Out_ PRKSEMAPHORE Semaphore, 00328 _In_ LONG Count, 00329 _In_ LONG Limit); 00330 00331 _IRQL_requires_max_(DISPATCH_LEVEL) 00332 NTKERNELAPI 00333 VOID 00334 NTAPI 00335 KeInitializeTimer( 00336 _Out_ PKTIMER Timer); 00337 00338 _IRQL_requires_max_(DISPATCH_LEVEL) 00339 NTKERNELAPI 00340 VOID 00341 NTAPI 00342 KeInitializeTimerEx( 00343 _Out_ PKTIMER Timer, 00344 _In_ TIMER_TYPE Type); 00345 00346 _IRQL_requires_(DISPATCH_LEVEL) 00347 NTKERNELAPI 00348 BOOLEAN 00349 NTAPI 00350 KeInsertByKeyDeviceQueue( 00351 _Inout_ PKDEVICE_QUEUE DeviceQueue, 00352 _Inout_ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry, 00353 _In_ ULONG SortKey); 00354 00355 _IRQL_requires_(DISPATCH_LEVEL) 00356 NTKERNELAPI 00357 BOOLEAN 00358 NTAPI 00359 KeInsertDeviceQueue( 00360 _Inout_ PKDEVICE_QUEUE DeviceQueue, 00361 _Inout_ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); 00362 00363 NTKERNELAPI 00364 BOOLEAN 00365 NTAPI 00366 KeInsertQueueDpc( 00367 _Inout_ PRKDPC Dpc, 00368 _In_opt_ PVOID SystemArgument1, 00369 _In_opt_ PVOID SystemArgument2); 00370 00371 _Releases_lock_(_Global_critical_region_) 00372 _IRQL_requires_max_(APC_LEVEL) 00373 NTKERNELAPI 00374 VOID 00375 NTAPI 00376 KeLeaveCriticalRegion(VOID); 00377 00378 NTHALAPI 00379 LARGE_INTEGER 00380 NTAPI 00381 KeQueryPerformanceCounter( 00382 _Out_opt_ PLARGE_INTEGER PerformanceFrequency); 00383 00384 _IRQL_requires_max_(PASSIVE_LEVEL) 00385 NTKERNELAPI 00386 KPRIORITY 00387 NTAPI 00388 KeQueryPriorityThread( 00389 _In_ PRKTHREAD Thread); 00390 00391 NTKERNELAPI 00392 ULONG 00393 NTAPI 00394 KeQueryTimeIncrement(VOID); 00395 00396 _IRQL_requires_max_(DISPATCH_LEVEL) 00397 NTKERNELAPI 00398 LONG 00399 NTAPI 00400 KeReadStateEvent( 00401 _In_ PRKEVENT Event); 00402 00403 _IRQL_requires_max_(DISPATCH_LEVEL) 00404 NTKERNELAPI 00405 LONG 00406 NTAPI 00407 KeReadStateMutex( 00408 _In_ PRKMUTEX Mutex); 00409 00410 _IRQL_requires_max_(DISPATCH_LEVEL) 00411 NTKERNELAPI 00412 LONG 00413 NTAPI 00414 KeReadStateSemaphore( 00415 _In_ PRKSEMAPHORE Semaphore); 00416 00417 _IRQL_requires_max_(DISPATCH_LEVEL) 00418 NTKERNELAPI 00419 BOOLEAN 00420 NTAPI 00421 KeReadStateTimer( 00422 _In_ PKTIMER Timer); 00423 00424 _Must_inspect_result_ 00425 NTKERNELAPI 00426 BOOLEAN 00427 NTAPI 00428 KeRegisterBugCheckCallback( 00429 _Out_ PKBUGCHECK_CALLBACK_RECORD CallbackRecord, 00430 _In_ PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine, 00431 _In_reads_bytes_opt_(Length) PVOID Buffer, 00432 _In_ ULONG Length, 00433 _In_ PUCHAR Component); 00434 00435 _When_(Wait==0, _IRQL_requires_max_(DISPATCH_LEVEL)) 00436 _When_(Wait==1, _IRQL_requires_max_(APC_LEVEL)) 00437 NTKERNELAPI 00438 LONG 00439 NTAPI 00440 KeReleaseMutex( 00441 _Inout_ PRKMUTEX Mutex, 00442 _In_ BOOLEAN Wait); 00443 00444 _When_(Wait==0, _IRQL_requires_max_(DISPATCH_LEVEL)) 00445 _When_(Wait==1, _IRQL_requires_max_(APC_LEVEL)) 00446 NTKERNELAPI 00447 LONG 00448 NTAPI 00449 KeReleaseSemaphore( 00450 _Inout_ PRKSEMAPHORE Semaphore, 00451 _In_ KPRIORITY Increment, 00452 _In_ LONG Adjustment, 00453 _In_ _Literal_ BOOLEAN Wait); 00454 00455 _IRQL_requires_(DISPATCH_LEVEL) 00456 NTKERNELAPI 00457 PKDEVICE_QUEUE_ENTRY 00458 NTAPI 00459 KeRemoveByKeyDeviceQueue( 00460 _Inout_ PKDEVICE_QUEUE DeviceQueue, 00461 _In_ ULONG SortKey); 00462 00463 _IRQL_requires_(DISPATCH_LEVEL) 00464 NTKERNELAPI 00465 PKDEVICE_QUEUE_ENTRY 00466 NTAPI 00467 KeRemoveDeviceQueue( 00468 _Inout_ PKDEVICE_QUEUE DeviceQueue); 00469 00470 _IRQL_requires_max_(DISPATCH_LEVEL) 00471 NTKERNELAPI 00472 BOOLEAN 00473 NTAPI 00474 KeRemoveEntryDeviceQueue( 00475 _Inout_ PKDEVICE_QUEUE DeviceQueue, 00476 _Inout_ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); 00477 00478 _IRQL_requires_max_(HIGH_LEVEL) 00479 NTKERNELAPI 00480 BOOLEAN 00481 NTAPI 00482 KeRemoveQueueDpc( 00483 _Inout_ PRKDPC Dpc); 00484 00485 _IRQL_requires_max_(DISPATCH_LEVEL) 00486 NTKERNELAPI 00487 LONG 00488 NTAPI 00489 KeResetEvent( 00490 _Inout_ PRKEVENT Event); 00491 00492 _When_(Wait==0, _IRQL_requires_max_(DISPATCH_LEVEL)) 00493 _When_(Wait==1, _IRQL_requires_max_(APC_LEVEL)) 00494 NTKERNELAPI 00495 LONG 00496 NTAPI 00497 KeSetEvent( 00498 _Inout_ PRKEVENT Event, 00499 _In_ KPRIORITY Increment, 00500 _In_ _Literal_ BOOLEAN Wait); 00501 00502 NTKERNELAPI 00503 VOID 00504 NTAPI 00505 KeSetImportanceDpc( 00506 _Inout_ PRKDPC Dpc, 00507 _In_ KDPC_IMPORTANCE Importance); 00508 00509 _IRQL_requires_min_(PASSIVE_LEVEL) 00510 _IRQL_requires_max_(DISPATCH_LEVEL) 00511 NTKERNELAPI 00512 KPRIORITY 00513 NTAPI 00514 KeSetPriorityThread( 00515 _Inout_ PKTHREAD Thread, 00516 _In_ KPRIORITY Priority); 00517 00518 _IRQL_requires_max_(DISPATCH_LEVEL) 00519 NTKERNELAPI 00520 BOOLEAN 00521 NTAPI 00522 KeSetTimer( 00523 _Inout_ PKTIMER Timer, 00524 _In_ LARGE_INTEGER DueTime, 00525 _In_opt_ PKDPC Dpc); 00526 00527 _IRQL_requires_max_(DISPATCH_LEVEL) 00528 NTKERNELAPI 00529 BOOLEAN 00530 NTAPI 00531 KeSetTimerEx( 00532 _Inout_ PKTIMER Timer, 00533 _In_ LARGE_INTEGER DueTime, 00534 _In_ LONG Period OPTIONAL, 00535 _In_opt_ PKDPC Dpc); 00536 00537 NTHALAPI 00538 VOID 00539 NTAPI 00540 KeStallExecutionProcessor( 00541 _In_ ULONG MicroSeconds); 00542 00543 _IRQL_requires_max_(HIGH_LEVEL) 00544 NTKERNELAPI 00545 BOOLEAN 00546 NTAPI 00547 KeSynchronizeExecution( 00548 _Inout_ PKINTERRUPT Interrupt, 00549 _In_ PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, 00550 _In_opt_ __drv_aliasesMem PVOID SynchronizeContext); 00551 00552 _IRQL_requires_min_(PASSIVE_LEVEL) 00553 _When_((Timeout==NULL || *Timeout!=0), _IRQL_requires_max_(APC_LEVEL)) 00554 _When_((Timeout!=NULL && *Timeout==0), _IRQL_requires_max_(DISPATCH_LEVEL)) 00555 NTKERNELAPI 00556 NTSTATUS 00557 NTAPI 00558 KeWaitForMultipleObjects( 00559 _In_ ULONG Count, 00560 _In_reads_(Count) PVOID Object[], 00561 _In_ __drv_strictTypeMatch(__drv_typeConst) WAIT_TYPE WaitType, 00562 _In_ __drv_strictTypeMatch(__drv_typeCond) KWAIT_REASON WaitReason, 00563 _In_ __drv_strictType(KPROCESSOR_MODE/enum _MODE,__drv_typeConst) KPROCESSOR_MODE WaitMode, 00564 _In_ BOOLEAN Alertable, 00565 _In_opt_ PLARGE_INTEGER Timeout, 00566 _Out_opt_ PKWAIT_BLOCK WaitBlockArray); 00567 00568 #define KeWaitForMutexObject KeWaitForSingleObject 00569 00570 _IRQL_requires_min_(PASSIVE_LEVEL) 00571 _When_((Timeout==NULL || *Timeout!=0), _IRQL_requires_max_(APC_LEVEL)) 00572 _When_((Timeout!=NULL && *Timeout==0), _IRQL_requires_max_(DISPATCH_LEVEL)) 00573 NTKERNELAPI 00574 NTSTATUS 00575 NTAPI 00576 KeWaitForSingleObject( 00577 _In_ _Points_to_data_ PVOID Object, 00578 _In_ __drv_strictTypeMatch(__drv_typeCond) KWAIT_REASON WaitReason, 00579 _In_ __drv_strictType(KPROCESSOR_MODE/enum _MODE,__drv_typeConst) KPROCESSOR_MODE WaitMode, 00580 _In_ BOOLEAN Alertable, 00581 _In_opt_ PLARGE_INTEGER Timeout); 00582 $endif (_WDMDDK_) 00583 $if (_NTIFS_) 00584 00585 NTKERNELAPI 00586 VOID 00587 NTAPI 00588 KeInitializeMutant( 00589 _Out_ PRKMUTANT Mutant, 00590 _In_ BOOLEAN InitialOwner); 00591 00592 _IRQL_requires_max_(DISPATCH_LEVEL) 00593 NTKERNELAPI 00594 LONG 00595 NTAPI 00596 KeReadStateMutant( 00597 _In_ PRKMUTANT Mutant); 00598 00599 _When_(Wait==0, _IRQL_requires_max_(DISPATCH_LEVEL)) 00600 _When_(Wait==1, _IRQL_requires_max_(APC_LEVEL)) 00601 NTKERNELAPI 00602 LONG 00603 NTAPI 00604 KeReleaseMutant( 00605 _Inout_ PRKMUTANT Mutant, 00606 _In_ KPRIORITY Increment, 00607 _In_ BOOLEAN Abandoned, 00608 _In_ BOOLEAN Wait); 00609 00610 NTKERNELAPI 00611 VOID 00612 NTAPI 00613 KeInitializeQueue( 00614 _Out_ PRKQUEUE Queue, 00615 _In_ ULONG Count); 00616 00617 _IRQL_requires_max_(DISPATCH_LEVEL) 00618 NTKERNELAPI 00619 LONG 00620 NTAPI 00621 KeReadStateQueue( 00622 _In_ PRKQUEUE Queue); 00623 00624 _IRQL_requires_min_(PASSIVE_LEVEL) 00625 _IRQL_requires_max_(DISPATCH_LEVEL) 00626 NTKERNELAPI 00627 LONG 00628 NTAPI 00629 KeInsertQueue( 00630 _Inout_ PRKQUEUE Queue, 00631 _Inout_ PLIST_ENTRY Entry); 00632 00633 _IRQL_requires_min_(PASSIVE_LEVEL) 00634 _IRQL_requires_max_(DISPATCH_LEVEL) 00635 NTKERNELAPI 00636 LONG 00637 NTAPI 00638 KeInsertHeadQueue( 00639 _Inout_ PRKQUEUE Queue, 00640 _Inout_ PLIST_ENTRY Entry); 00641 00642 _IRQL_requires_min_(PASSIVE_LEVEL) 00643 _When_((Timeout==NULL || *Timeout!=0), _IRQL_requires_max_(APC_LEVEL)) 00644 _When_((Timeout!=NULL && *Timeout==0), _IRQL_requires_max_(DISPATCH_LEVEL)) 00645 NTKERNELAPI 00646 PLIST_ENTRY 00647 NTAPI 00648 KeRemoveQueue( 00649 _Inout_ PRKQUEUE Queue, 00650 _In_ KPROCESSOR_MODE WaitMode, 00651 _In_opt_ PLARGE_INTEGER Timeout); 00652 00653 _IRQL_requires_max_(APC_LEVEL) 00654 NTKERNELAPI 00655 VOID 00656 NTAPI 00657 KeAttachProcess( 00658 _Inout_ PKPROCESS Process); 00659 00660 _IRQL_requires_max_(APC_LEVEL) 00661 NTKERNELAPI 00662 VOID 00663 NTAPI 00664 KeDetachProcess(VOID); 00665 00666 _IRQL_requires_max_(DISPATCH_LEVEL) 00667 NTKERNELAPI 00668 PLIST_ENTRY 00669 NTAPI 00670 KeRundownQueue( 00671 _Inout_ PRKQUEUE Queue); 00672 00673 _IRQL_requires_max_(APC_LEVEL) 00674 NTKERNELAPI 00675 VOID 00676 NTAPI 00677 KeStackAttachProcess( 00678 _Inout_ PKPROCESS Process, 00679 _Out_ PKAPC_STATE ApcState); 00680 00681 _IRQL_requires_max_(APC_LEVEL) 00682 NTKERNELAPI 00683 VOID 00684 NTAPI 00685 KeUnstackDetachProcess( 00686 _In_ PKAPC_STATE ApcState); 00687 00688 _IRQL_requires_min_(PASSIVE_LEVEL) 00689 _IRQL_requires_max_(DISPATCH_LEVEL) 00690 NTKERNELAPI 00691 UCHAR 00692 NTAPI 00693 KeSetIdealProcessorThread( 00694 _Inout_ PKTHREAD Thread, 00695 _In_ UCHAR Processor); 00696 00697 _IRQL_requires_max_(APC_LEVEL) 00698 NTKERNELAPI 00699 BOOLEAN 00700 NTAPI 00701 KeSetKernelStackSwapEnable( 00702 _In_ BOOLEAN Enable); 00703 00704 #if defined(_X86_) 00705 _Requires_lock_not_held_(*SpinLock) 00706 _Acquires_lock_(*SpinLock) 00707 _IRQL_raises_(SYNCH_LEVEL) 00708 _IRQL_saves_ 00709 NTHALAPI 00710 KIRQL 00711 FASTCALL 00712 KeAcquireSpinLockRaiseToSynch( 00713 _Inout_ PKSPIN_LOCK SpinLock); 00714 #else 00715 _Requires_lock_not_held_(*SpinLock) 00716 _Acquires_lock_(*SpinLock) 00717 _IRQL_raises_(SYNCH_LEVEL) 00718 _IRQL_saves_ 00719 NTKERNELAPI 00720 KIRQL 00721 KeAcquireSpinLockRaiseToSynch( 00722 _Inout_ PKSPIN_LOCK SpinLock); 00723 #endif 00724 $endif (_NTIFS_) 00725 00726 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ 00727 00728 #if (NTDDI_VERSION >= NTDDI_WINXP) 00729 00730 $if (_WDMDDK_) 00731 _Requires_lock_not_held_(*LockHandle) 00732 _Acquires_lock_(*LockHandle) 00733 _Post_same_lock_(*SpinLock, *LockHandle) 00734 _IRQL_requires_max_(DISPATCH_LEVEL) 00735 _IRQL_saves_global_(QueuedSpinLock,LockHandle) 00736 _IRQL_raises_(DISPATCH_LEVEL) 00737 _DECL_HAL_KE_IMPORT 00738 VOID 00739 FASTCALL 00740 KeAcquireInStackQueuedSpinLock( 00741 _Inout_ PKSPIN_LOCK SpinLock, 00742 _Out_ PKLOCK_QUEUE_HANDLE LockHandle); 00743 00744 _Requires_lock_not_held_(*LockHandle) 00745 _Acquires_lock_(*LockHandle) 00746 _Post_same_lock_(*SpinLock, *LockHandle) 00747 _IRQL_requires_min_(DISPATCH_LEVEL) 00748 NTKERNELAPI 00749 VOID 00750 FASTCALL 00751 KeAcquireInStackQueuedSpinLockAtDpcLevel( 00752 _Inout_ PKSPIN_LOCK SpinLock, 00753 _Out_ PKLOCK_QUEUE_HANDLE LockHandle); 00754 00755 _Requires_lock_not_held_(*Interrupt->ActualLock) 00756 _Acquires_lock_(*Interrupt->ActualLock) 00757 _IRQL_requires_max_(HIGH_LEVEL) 00758 _IRQL_saves_ 00759 _IRQL_raises_(HIGH_LEVEL) 00760 NTKERNELAPI 00761 KIRQL 00762 NTAPI 00763 KeAcquireInterruptSpinLock( 00764 _Inout_ PKINTERRUPT Interrupt); 00765 00766 _IRQL_requires_min_(PASSIVE_LEVEL) 00767 _IRQL_requires_max_(DISPATCH_LEVEL) 00768 NTKERNELAPI 00769 BOOLEAN 00770 NTAPI 00771 KeAreApcsDisabled(VOID); 00772 00773 NTKERNELAPI 00774 ULONG 00775 NTAPI 00776 KeGetRecommendedSharedDataAlignment(VOID); 00777 00778 _IRQL_requires_max_(PASSIVE_LEVEL) 00779 NTKERNELAPI 00780 ULONG 00781 NTAPI 00782 KeQueryRuntimeThread( 00783 _In_ PKTHREAD Thread, 00784 _Out_ PULONG UserTime); 00785 00786 _Requires_lock_held_(*LockHandle) 00787 _Releases_lock_(*LockHandle) 00788 _IRQL_requires_(DISPATCH_LEVEL) 00789 NTKERNELAPI 00790 VOID 00791 FASTCALL 00792 KeReleaseInStackQueuedSpinLockFromDpcLevel( 00793 _In_ PKLOCK_QUEUE_HANDLE LockHandle); 00794 00795 _Requires_lock_held_(*Interrupt->ActualLock) 00796 _Releases_lock_(*Interrupt->ActualLock) 00797 _IRQL_requires_(HIGH_LEVEL) 00798 NTKERNELAPI 00799 VOID 00800 NTAPI 00801 KeReleaseInterruptSpinLock( 00802 _Inout_ PKINTERRUPT Interrupt, 00803 _In_ _IRQL_restores_ KIRQL OldIrql); 00804 00805 _IRQL_requires_(DISPATCH_LEVEL) 00806 NTKERNELAPI 00807 PKDEVICE_QUEUE_ENTRY 00808 NTAPI 00809 KeRemoveByKeyDeviceQueueIfBusy( 00810 _Inout_ PKDEVICE_QUEUE DeviceQueue, 00811 _In_ ULONG SortKey); 00812 00813 _Requires_lock_held_(*LockHandle) 00814 _Releases_lock_(*LockHandle) 00815 _IRQL_requires_(DISPATCH_LEVEL) 00816 _IRQL_restores_global_(QueuedSpinLock,LockHandle) 00817 _DECL_HAL_KE_IMPORT 00818 VOID 00819 FASTCALL 00820 KeReleaseInStackQueuedSpinLock( 00821 _In_ PKLOCK_QUEUE_HANDLE LockHandle); 00822 $endif (_WDMDDK_) 00823 $if (_NTDDK_) 00824 _IRQL_requires_min_(PASSIVE_LEVEL) 00825 _IRQL_requires_max_(DISPATCH_LEVEL) 00826 NTKERNELAPI 00827 BOOLEAN 00828 NTAPI 00829 KeAreApcsDisabled(VOID); 00830 $endif (_NTDDK_) 00831 $if (_NTIFS_) 00832 00833 _Requires_lock_not_held_(Number) 00834 _Acquires_lock_(Number) 00835 _IRQL_raises_(DISPATCH_LEVEL) 00836 _DECL_HAL_KE_IMPORT 00837 KIRQL 00838 FASTCALL 00839 KeAcquireQueuedSpinLock( 00840 _In_ KSPIN_LOCK_QUEUE_NUMBER Number); 00841 00842 _Requires_lock_held_(Number) 00843 _Releases_lock_(Number) 00844 _DECL_HAL_KE_IMPORT 00845 VOID 00846 FASTCALL 00847 KeReleaseQueuedSpinLock( 00848 _In_ KSPIN_LOCK_QUEUE_NUMBER Number, 00849 _In_ KIRQL OldIrql); 00850 00851 _Must_inspect_result_ 00852 _Post_satisfies_(return == 1 || return == 0) 00853 _DECL_HAL_KE_IMPORT 00854 LOGICAL 00855 FASTCALL 00856 KeTryToAcquireQueuedSpinLock( 00857 _In_ KSPIN_LOCK_QUEUE_NUMBER Number, 00858 _Out_ _At_(*OldIrql, _IRQL_saves_) PKIRQL OldIrql); 00859 $endif (_NTIFS_) 00860 00861 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ 00862 00863 $if (_WDMDDK_) 00864 #if (NTDDI_VERSION >= NTDDI_WINXPSP1) 00865 00866 _Must_inspect_result_ 00867 NTKERNELAPI 00868 BOOLEAN 00869 NTAPI 00870 KeDeregisterBugCheckReasonCallback( 00871 _Inout_ PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord); 00872 00873 _Must_inspect_result_ 00874 NTKERNELAPI 00875 BOOLEAN 00876 NTAPI 00877 KeRegisterBugCheckReasonCallback( 00878 _Out_ PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, 00879 _In_ PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, 00880 _In_ KBUGCHECK_CALLBACK_REASON Reason, 00881 _In_ PUCHAR Component); 00882 00883 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */ 00884 00885 #if (NTDDI_VERSION >= NTDDI_WINXPSP2) 00886 _IRQL_requires_max_(APC_LEVEL) 00887 NTKERNELAPI 00888 VOID 00889 NTAPI 00890 KeFlushQueuedDpcs(VOID); 00891 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */ 00892 $endif (_WDMDDK_) 00893 $if (_WDMDDK_ || _NTDDK_) 00894 #if (NTDDI_VERSION >= NTDDI_WS03) 00895 $endif (_WDMDDK_ || _NTDDK_) 00896 00897 $if (_WDMDDK_) 00898 _IRQL_requires_max_(APC_LEVEL) 00899 NTKERNELAPI 00900 PVOID 00901 NTAPI 00902 KeRegisterNmiCallback( 00903 _In_ PNMI_CALLBACK CallbackRoutine, 00904 _In_opt_ PVOID Context); 00905 00906 _IRQL_requires_max_(APC_LEVEL) 00907 NTKERNELAPI 00908 NTSTATUS 00909 NTAPI 00910 KeDeregisterNmiCallback( 00911 _In_ PVOID Handle); 00912 00913 NTKERNELAPI 00914 VOID 00915 NTAPI 00916 KeInitializeThreadedDpc( 00917 _Out_ PRKDPC Dpc, 00918 _In_ PKDEFERRED_ROUTINE DeferredRoutine, 00919 _In_opt_ PVOID DeferredContext); 00920 00921 _IRQL_requires_min_(PASSIVE_LEVEL) 00922 _IRQL_requires_max_(IPI_LEVEL-1) 00923 NTKERNELAPI 00924 ULONG_PTR 00925 NTAPI 00926 KeIpiGenericCall( 00927 _In_ PKIPI_BROADCAST_WORKER BroadcastFunction, 00928 _In_ ULONG_PTR Context); 00929 00930 _Requires_lock_not_held_(*SpinLock) 00931 _Acquires_lock_(*SpinLock) 00932 _IRQL_requires_max_(DISPATCH_LEVEL) 00933 _IRQL_saves_ 00934 NTKERNELAPI 00935 KIRQL 00936 FASTCALL 00937 KeAcquireSpinLockForDpc( 00938 _Inout_ PKSPIN_LOCK SpinLock); 00939 00940 _Requires_lock_held_(*SpinLock) 00941 _Releases_lock_(*SpinLock) 00942 _IRQL_requires_(DISPATCH_LEVEL) 00943 NTKERNELAPI 00944 VOID 00945 FASTCALL 00946 KeReleaseSpinLockForDpc( 00947 _Inout_ PKSPIN_LOCK SpinLock, 00948 _In_ _IRQL_restores_ KIRQL OldIrql); 00949 00950 _Must_inspect_result_ 00951 NTKERNELAPI 00952 BOOLEAN 00953 FASTCALL 00954 KeTestSpinLock( 00955 _In_ PKSPIN_LOCK SpinLock); 00956 $endif (_WDMDDK_) 00957 00958 $if (_NTDDK_) 00959 NTKERNELAPI 00960 BOOLEAN 00961 NTAPI 00962 KeInvalidateAllCaches(VOID); 00963 $endif (_NTDDK_) 00964 $if (_WDMDDK_ || _NTDDK_) 00965 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */ 00966 $endif (_WDMDDK_ || _NTDDK_) 00967 $if (_WDMDDK_ || _NTDDK_) 00968 #if (NTDDI_VERSION >= NTDDI_WS03SP1) 00969 $endif (_WDMDDK_ || _NTDDK_) 00970 00971 $if (_WDMDDK_) 00972 _Must_inspect_result_ 00973 _IRQL_requires_min_(DISPATCH_LEVEL) 00974 _Post_satisfies_(return == 1 || return == 0) 00975 NTKERNELAPI 00976 BOOLEAN 00977 FASTCALL 00978 KeTryToAcquireSpinLockAtDpcLevel( 00979 _Inout_ _Requires_lock_not_held_(*_Curr_) 00980 _When_(return!=0, _Acquires_lock_(*_Curr_)) 00981 PKSPIN_LOCK SpinLock); 00982 00983 _IRQL_requires_min_(PASSIVE_LEVEL) 00984 _IRQL_requires_max_(DISPATCH_LEVEL) 00985 NTKERNELAPI 00986 BOOLEAN 00987 NTAPI 00988 KeAreAllApcsDisabled(VOID); 00989 00990 _Acquires_lock_(_Global_critical_region_) 00991 _Requires_lock_not_held_(*Mutex) 00992 _Acquires_lock_(*Mutex) 00993 _IRQL_requires_max_(APC_LEVEL) 00994 _IRQL_requires_min_(PASSIVE_LEVEL) 00995 NTKERNELAPI 00996 VOID 00997 FASTCALL 00998 KeAcquireGuardedMutex( 00999 _Inout_ PKGUARDED_MUTEX GuardedMutex); 01000 01001 _Requires_lock_not_held_(*FastMutex) 01002 _Acquires_lock_(*FastMutex) 01003 _IRQL_requires_max_(APC_LEVEL) 01004 _IRQL_requires_min_(PASSIVE_LEVEL) 01005 NTKERNELAPI 01006 VOID 01007 FASTCALL 01008 KeAcquireGuardedMutexUnsafe( 01009 _Inout_ PKGUARDED_MUTEX GuardedMutex); 01010 01011 _Acquires_lock_(_Global_critical_region_) 01012 _IRQL_requires_max_(APC_LEVEL) 01013 NTKERNELAPI 01014 VOID 01015 NTAPI 01016 KeEnterGuardedRegion(VOID); 01017 01018 _Releases_lock_(_Global_critical_region_) 01019 _IRQL_requires_max_(APC_LEVEL) 01020 NTKERNELAPI 01021 VOID 01022 NTAPI 01023 KeLeaveGuardedRegion(VOID); 01024 01025 _IRQL_requires_max_(APC_LEVEL) 01026 _IRQL_requires_min_(PASSIVE_LEVEL) 01027 NTKERNELAPI 01028 VOID 01029 FASTCALL 01030 KeInitializeGuardedMutex( 01031 _Out_ PKGUARDED_MUTEX GuardedMutex); 01032 01033 _Requires_lock_held_(*FastMutex) 01034 _Releases_lock_(*FastMutex) 01035 _IRQL_requires_max_(APC_LEVEL) 01036 NTKERNELAPI 01037 VOID 01038 FASTCALL 01039 KeReleaseGuardedMutexUnsafe( 01040 _Inout_ PKGUARDED_MUTEX GuardedMutex); 01041 01042 _Releases_lock_(_Global_critical_region_) 01043 _Requires_lock_held_(*Mutex) 01044 _Releases_lock_(*Mutex) 01045 _IRQL_requires_max_(APC_LEVEL) 01046 NTKERNELAPI 01047 VOID 01048 FASTCALL 01049 KeReleaseGuardedMutex( 01050 _Inout_ PKGUARDED_MUTEX GuardedMutex); 01051 01052 _Must_inspect_result_ 01053 _Success_(return != FALSE) 01054 _IRQL_requires_max_(APC_LEVEL) 01055 _Post_satisfies_(return == 1 || return == 0) 01056 NTKERNELAPI 01057 BOOLEAN 01058 FASTCALL 01059 KeTryToAcquireGuardedMutex( 01060 _When_ (return, _Requires_lock_not_held_(*_Curr_) _Acquires_exclusive_lock_(*_Curr_)) _Acquires_lock_(_Global_critical_region_) 01061 _Inout_ PKGUARDED_MUTEX GuardedMutex); 01062 $endif (_WDMDDK_) 01063 $if (_NTDDK_) 01064 _Must_inspect_result_ 01065 _IRQL_requires_max_(APC_LEVEL) 01066 NTKERNELAPI 01067 NTSTATUS 01068 NTAPI 01069 KeExpandKernelStackAndCallout( 01070 _In_ PEXPAND_STACK_CALLOUT Callout, 01071 _In_opt_ PVOID Parameter, 01072 _In_ SIZE_T Size); 01073 01074 _Acquires_lock_(_Global_critical_region_) 01075 _IRQL_requires_max_(APC_LEVEL) 01076 NTKERNELAPI 01077 VOID 01078 NTAPI 01079 KeEnterGuardedRegion(VOID); 01080 01081 _Releases_lock_(_Global_critical_region_) 01082 _IRQL_requires_max_(APC_LEVEL) 01083 NTKERNELAPI 01084 VOID 01085 NTAPI 01086 KeLeaveGuardedRegion(VOID); 01087 $endif (_NTDDK_) 01088 $if (_WDMDDK_ || _NTDDK_) 01089 #endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ 01090 $endif (_WDMDDK_ || _NTDDK_) 01091 01092 #if (NTDDI_VERSION >= NTDDI_VISTA) 01093 $if (_WDMDDK_) 01094 _Requires_lock_not_held_(*LockHandle) 01095 _Acquires_lock_(*LockHandle) 01096 _Post_same_lock_(*SpinLock, *LockHandle) 01097 _IRQL_requires_max_(DISPATCH_LEVEL) 01098 _IRQL_saves_global_(QueuedSpinLock,LockHandle) 01099 NTKERNELAPI 01100 VOID 01101 FASTCALL 01102 KeAcquireInStackQueuedSpinLockForDpc( 01103 _Inout_ PKSPIN_LOCK SpinLock, 01104 _Out_ PKLOCK_QUEUE_HANDLE LockHandle); 01105 01106 _Requires_lock_held_(*LockHandle) 01107 _Releases_lock_(*LockHandle) 01108 _IRQL_requires_(DISPATCH_LEVEL) 01109 _IRQL_restores_global_(QueuedSpinLock,LockHandle) 01110 NTKERNELAPI 01111 VOID 01112 FASTCALL 01113 KeReleaseInStackQueuedSpinLockForDpc( 01114 _In_ PKLOCK_QUEUE_HANDLE LockHandle); 01115 01116 _IRQL_requires_(DISPATCH_LEVEL) 01117 NTKERNELAPI 01118 NTSTATUS 01119 NTAPI 01120 KeQueryDpcWatchdogInformation( 01121 _Out_ PKDPC_WATCHDOG_INFORMATION WatchdogInformation); 01122 $endif (_WDMDDK_) 01123 $if (_WDMDDK_ || _NTDDK_) 01124 #if defined(SINGLE_GROUP_LEGACY_API) 01125 $endif (_WDMDDK_ || _NTDDK_) 01126 01127 $if (_WDMDDK_) 01128 _IRQL_requires_min_(PASSIVE_LEVEL) 01129 _IRQL_requires_max_(APC_LEVEL) 01130 NTKERNELAPI 01131 KAFFINITY 01132 NTAPI 01133 KeSetSystemAffinityThreadEx( 01134 _In_ KAFFINITY Affinity); 01135 01136 _IRQL_requires_min_(PASSIVE_LEVEL) 01137 _IRQL_requires_max_(APC_LEVEL) 01138 NTKERNELAPI 01139 VOID 01140 NTAPI 01141 KeRevertToUserAffinityThreadEx( 01142 _In_ KAFFINITY Affinity); 01143 01144 NTKERNELAPI 01145 ULONG 01146 NTAPI 01147 KeQueryActiveProcessorCount( 01148 _Out_opt_ PKAFFINITY ActiveProcessors); 01149 01150 NTKERNELAPI 01151 ULONG 01152 NTAPI 01153 KeQueryMaximumProcessorCount(VOID); 01154 $endif (_WDMDDK_) 01155 $if (_NTDDK_) 01156 NTKERNELAPI 01157 ULONG 01158 NTAPI 01159 KeQueryActiveProcessorCount( 01160 _Out_opt_ PKAFFINITY ActiveProcessors); 01161 01162 NTKERNELAPI 01163 ULONG 01164 NTAPI 01165 KeQueryMaximumProcessorCount(VOID); 01166 $endif (_NTDDK_) 01167 $if (_WDMDDK_ || _NTDDK_) 01168 #endif /* SINGLE_GROUP_LEGACY_API */ 01169 $endif (_WDMDDK_ || _NTDDK_) 01170 $if (_NTIFS_) 01171 _IRQL_requires_max_(DISPATCH_LEVEL) 01172 NTKERNELAPI 01173 VOID 01174 KeQueryOwnerMutant( 01175 _In_ PKMUTANT Mutant, 01176 _Out_ PCLIENT_ID ClientId); 01177 01178 _IRQL_requires_min_(PASSIVE_LEVEL) 01179 _When_((Timeout==NULL || *Timeout!=0), _IRQL_requires_max_(APC_LEVEL)) 01180 _When_((Timeout!=NULL && *Timeout==0), _IRQL_requires_max_(DISPATCH_LEVEL)) 01181 NTKERNELAPI 01182 ULONG 01183 NTAPI 01184 KeRemoveQueueEx( 01185 _Inout_ PKQUEUE Queue, 01186 _In_ KPROCESSOR_MODE WaitMode, 01187 _In_ BOOLEAN Alertable, 01188 _In_opt_ PLARGE_INTEGER Timeout, 01189 _Out_writes_to_(Count, return) PLIST_ENTRY *EntryArray, 01190 _In_ ULONG Count); 01191 $endif (_NTIFS_) 01192 01193 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ 01194 01195 $if (_WDMDDK_) 01196 #if (NTDDI_VERSION >= NTDDI_WS08) 01197 01198 _IRQL_requires_max_(APC_LEVEL) 01199 PVOID 01200 NTAPI 01201 KeRegisterProcessorChangeCallback( 01202 _In_ PPROCESSOR_CALLBACK_FUNCTION CallbackFunction, 01203 _In_opt_ PVOID CallbackContext, 01204 _In_ ULONG Flags); 01205 01206 _IRQL_requires_max_(APC_LEVEL) 01207 VOID 01208 NTAPI 01209 KeDeregisterProcessorChangeCallback( 01210 _In_ PVOID CallbackHandle); 01211 01212 #endif /* (NTDDI_VERSION >= NTDDI_WS08) */ 01213 $endif (_WDMDDK_) 01214 $if (_WDMDDK_ || _NTDDK_) 01215 #if (NTDDI_VERSION >= NTDDI_WIN7) 01216 $endif (_WDMDDK_ || _NTDDK_) 01217 01218 $if (_WDMDDK_) 01219 _IRQL_requires_max_(DISPATCH_LEVEL) 01220 _IRQL_requires_min_(PASSIVE_LEVEL) 01221 _IRQL_requires_same_ 01222 ULONG64 01223 NTAPI 01224 KeQueryTotalCycleTimeProcess( 01225 _Inout_ PKPROCESS Process, 01226 _Out_ PULONG64 CycleTimeStamp); 01227 01228 _IRQL_requires_max_(APC_LEVEL) 01229 _IRQL_requires_min_(PASSIVE_LEVEL) 01230 _IRQL_requires_same_ 01231 ULONG64 01232 NTAPI 01233 KeQueryTotalCycleTimeThread( 01234 _Inout_ PKTHREAD Thread, 01235 _Out_ PULONG64 CycleTimeStamp); 01236 01237 _Must_inspect_result_ 01238 NTKERNELAPI 01239 NTSTATUS 01240 NTAPI 01241 KeSetTargetProcessorDpcEx( 01242 _Inout_ PKDPC Dpc, 01243 _In_ PPROCESSOR_NUMBER ProcNumber); 01244 01245 _IRQL_requires_min_(PASSIVE_LEVEL) 01246 _IRQL_requires_max_(APC_LEVEL) 01247 NTKERNELAPI 01248 VOID 01249 NTAPI 01250 KeSetSystemGroupAffinityThread( 01251 _In_ PGROUP_AFFINITY Affinity, 01252 _Out_opt_ PGROUP_AFFINITY PreviousAffinity); 01253 01254 _IRQL_requires_min_(PASSIVE_LEVEL) 01255 _IRQL_requires_max_(APC_LEVEL) 01256 NTKERNELAPI 01257 VOID 01258 NTAPI 01259 KeRevertToUserGroupAffinityThread( 01260 _In_ PGROUP_AFFINITY PreviousAffinity); 01261 01262 _IRQL_requires_max_(DISPATCH_LEVEL) 01263 NTKERNELAPI 01264 BOOLEAN 01265 NTAPI 01266 KeSetCoalescableTimer( 01267 _Inout_ PKTIMER Timer, 01268 _In_ LARGE_INTEGER DueTime, 01269 _In_ ULONG Period, 01270 _In_ ULONG TolerableDelay, 01271 _In_opt_ PKDPC Dpc); 01272 01273 NTKERNELAPI 01274 ULONGLONG 01275 NTAPI 01276 KeQueryUnbiasedInterruptTime(VOID); 01277 01278 NTKERNELAPI 01279 ULONG 01280 NTAPI 01281 KeQueryActiveProcessorCountEx( 01282 _In_ USHORT GroupNumber); 01283 01284 NTKERNELAPI 01285 ULONG 01286 NTAPI 01287 KeQueryMaximumProcessorCountEx( 01288 _In_ USHORT GroupNumber); 01289 01290 NTKERNELAPI 01291 USHORT 01292 NTAPI 01293 KeQueryActiveGroupCount(VOID); 01294 01295 NTKERNELAPI 01296 USHORT 01297 NTAPI 01298 KeQueryMaximumGroupCount(VOID); 01299 01300 NTKERNELAPI 01301 KAFFINITY 01302 NTAPI 01303 KeQueryGroupAffinity( 01304 _In_ USHORT GroupNumber); 01305 01306 NTKERNELAPI 01307 ULONG 01308 NTAPI 01309 KeGetCurrentProcessorNumberEx( 01310 _Out_opt_ PPROCESSOR_NUMBER ProcNumber); 01311 01312 NTKERNELAPI 01313 VOID 01314 NTAPI 01315 KeQueryNodeActiveAffinity( 01316 _In_ USHORT NodeNumber, 01317 _Out_opt_ PGROUP_AFFINITY Affinity, 01318 _Out_opt_ PUSHORT Count); 01319 01320 NTKERNELAPI 01321 USHORT 01322 NTAPI 01323 KeQueryNodeMaximumProcessorCount( 01324 _In_ USHORT NodeNumber); 01325 01326 NTKERNELAPI 01327 USHORT 01328 NTAPI 01329 KeQueryHighestNodeNumber(VOID); 01330 01331 NTKERNELAPI 01332 USHORT 01333 NTAPI 01334 KeGetCurrentNodeNumber(VOID); 01335 01336 _IRQL_requires_max_(DISPATCH_LEVEL) 01337 NTKERNELAPI 01338 NTSTATUS 01339 NTAPI 01340 KeQueryLogicalProcessorRelationship( 01341 _In_opt_ PPROCESSOR_NUMBER ProcessorNumber OPTIONAL, 01342 _In_ LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType, 01343 _Out_writes_bytes_opt_(*Length) PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information, 01344 _Inout_ PULONG Length); 01345 01346 _Must_inspect_result_ 01347 _IRQL_requires_max_(DISPATCH_LEVEL) 01348 _Ret_range_(<=, 0) 01349 _When_(return==0, _Kernel_float_saved_) 01350 NTKERNELAPI 01351 NTSTATUS 01352 NTAPI 01353 KeSaveExtendedProcessorState( 01354 _In_ ULONG64 Mask, 01355 _Out_ _Requires_lock_not_held_(*_Curr_) 01356 _When_(return==0, _Acquires_lock_(*_Curr_)) 01357 PXSTATE_SAVE XStateSave); 01358 01359 _Kernel_float_restored_ 01360 NTKERNELAPI 01361 VOID 01362 NTAPI 01363 KeRestoreExtendedProcessorState( 01364 _In_ _Requires_lock_held_(*_Curr_) _Releases_lock_(*_Curr_) 01365 PXSTATE_SAVE XStateSave); 01366 01367 NTSTATUS 01368 NTAPI 01369 KeGetProcessorNumberFromIndex( 01370 _In_ ULONG ProcIndex, 01371 _Out_ PPROCESSOR_NUMBER ProcNumber); 01372 01373 ULONG 01374 NTAPI 01375 KeGetProcessorIndexFromNumber( 01376 _In_ PPROCESSOR_NUMBER ProcNumber); 01377 $endif (_WDMDDK_) 01378 $if (_NTDDK_) 01379 NTKERNELAPI 01380 ULONG 01381 NTAPI 01382 KeQueryActiveProcessorCountEx( 01383 _In_ USHORT GroupNumber); 01384 01385 NTKERNELAPI 01386 ULONG 01387 NTAPI 01388 KeQueryMaximumProcessorCountEx( 01389 _In_ USHORT GroupNumber); 01390 01391 NTKERNELAPI 01392 USHORT 01393 NTAPI 01394 KeQueryActiveGroupCount(VOID); 01395 01396 NTKERNELAPI 01397 USHORT 01398 NTAPI 01399 KeQueryMaximumGroupCount(VOID); 01400 01401 NTKERNELAPI 01402 KAFFINITY 01403 NTAPI 01404 KeQueryGroupAffinity( 01405 _In_ USHORT GroupNumber); 01406 01407 NTKERNELAPI 01408 ULONG 01409 NTAPI 01410 KeGetCurrentProcessorNumberEx( 01411 _Out_opt_ PPROCESSOR_NUMBER ProcNumber); 01412 01413 NTKERNELAPI 01414 VOID 01415 NTAPI 01416 KeQueryNodeActiveAffinity( 01417 _In_ USHORT NodeNumber, 01418 _Out_opt_ PGROUP_AFFINITY Affinity, 01419 _Out_opt_ PUSHORT Count); 01420 01421 NTKERNELAPI 01422 USHORT 01423 NTAPI 01424 KeQueryNodeMaximumProcessorCount( 01425 _In_ USHORT NodeNumber); 01426 01427 NTKERNELAPI 01428 USHORT 01429 NTAPI 01430 KeQueryHighestNodeNumber(VOID); 01431 01432 NTKERNELAPI 01433 USHORT 01434 NTAPI 01435 KeGetCurrentNodeNumber(VOID); 01436 01437 _IRQL_requires_max_(DISPATCH_LEVEL) 01438 NTKERNELAPI 01439 NTSTATUS 01440 NTAPI 01441 KeQueryLogicalProcessorRelationship( 01442 _In_opt_ PPROCESSOR_NUMBER ProcessorNumber, 01443 _In_ LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType, 01444 _Out_writes_bytes_opt_(*Length) PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information, 01445 _Inout_ PULONG Length); 01446 01447 _IRQL_requires_max_(APC_LEVEL) 01448 NTKERNELAPI 01449 NTSTATUS 01450 NTAPI 01451 KeSetHardwareCounterConfiguration( 01452 _In_reads_(Count) PHARDWARE_COUNTER CounterArray, 01453 _In_ ULONG Count); 01454 01455 _IRQL_requires_max_(APC_LEVEL) 01456 NTKERNELAPI 01457 NTSTATUS 01458 NTAPI 01459 KeQueryHardwareCounterConfiguration( 01460 _Out_writes_to_(MaximumCount, *Count) PHARDWARE_COUNTER CounterArray, 01461 _In_ ULONG MaximumCount, 01462 _Out_ PULONG Count); 01463 $endif (_NTDDK_) 01464 $if (_WDMDDK_ || _NTDDK_) 01465 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ 01466 $endif (_WDMDDK_ || _NTDDK_) 01467 $if (_WDMDDK_) 01468 #if !defined(_IA64_) 01469 NTHALAPI 01470 VOID 01471 NTAPI 01472 KeFlushWriteBuffer(VOID); 01473 #endif 01474 01475 /* VOID 01476 * KeInitializeCallbackRecord( 01477 * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord) 01478 */ 01479 #define KeInitializeCallbackRecord(CallbackRecord) \ 01480 CallbackRecord->State = BufferEmpty; 01481 01482 #if defined(_PREFAST_) 01483 01484 void __PREfastPagedCode(void); 01485 void __PREfastPagedCodeLocked(void); 01486 #define PAGED_CODE() __PREfastPagedCode(); 01487 #define PAGED_CODE_LOCKED() __PREfastPagedCodeLocked(); 01488 01489 #elif DBG 01490 01491 #if (NTDDI_VERSION >= NTDDI_VISTA) 01492 #define PAGED_ASSERT( exp ) NT_ASSERT( exp ) 01493 #else 01494 #define PAGED_ASSERT( exp ) ASSERT( exp ) 01495 #endif 01496 01497 #define PAGED_CODE() { \ 01498 if (KeGetCurrentIrql() > APC_LEVEL) { \ 01499 KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \ 01500 PAGED_ASSERT(FALSE); \ 01501 } \ 01502 } 01503 01504 #define PAGED_CODE_LOCKED() NOP_FUNCTION; 01505 01506 #else 01507 01508 #define PAGED_CODE() NOP_FUNCTION; 01509 #define PAGED_CODE_LOCKED() NOP_FUNCTION; 01510 01511 #endif /* DBG */ 01512 01513 $endif (_WDMDDK_) Generated on Thu May 24 2012 04:31:33 for ReactOS by
1.7.6.1
|