114 if (
Timer->WakeTimerListEntry.Flink)
120 if (
Timer->WakeTimerListEntry.Flink)
154 if (
Timer->ApcAssociated)
180 ULONG DerefsToDo = 1;
209 *NormalRoutine =
NULL;
230 RtlZeroMemory(&ObjectTypeInitializer,
sizeof(ObjectTypeInitializer));
232 ObjectTypeInitializer.
Length =
sizeof(ObjectTypeInitializer);
260 ULONG DerefsToDo = 1;
293 if (
Timer->ApcAssociated)
323 if (
Timer->WakeTimerListEntry.Flink)
329 if (
Timer->WakeTimerListEntry.Flink)
446 *TimerHandle = hTimer;
502 *TimerHandle = hTimer;
521 IN ULONG TimerInformationLength,
537 TimerInformationLength,
557 KeTimer.DueTime.QuadPart -
598 ULONG DerefsToDo = 1;
655 if (
Timer->ApcAssociated)
688 Timer->WakeTimer = WakeTimer;
690 if ((WakeTimer) && !(
Timer->WakeTimerListEntry.Flink))
695 else if (!(WakeTimer) && (
Timer->WakeTimerListEntry.Flink))
720 &
Timer->ActiveTimerListEntry);
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG ReturnLength
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG _In_ KPROCESSOR_MODE PreviousMode
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
BOOLEAN NTAPI KeRemoveQueueDpc(IN PKDPC Dpc)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define PsGetCurrentThread()
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
#define ExGetPreviousMode
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
LONG NTAPI ExSystemExceptionFilter(VOID)
#define IQS_SAME(Type, Alignment, Flags)
#define ICIF_PROBE_READ_WRITE
VOID(CALLBACK * PTIMER_APC_ROUTINE)(PVOID, ULONG, LONG)
#define EXCEPTION_EXECUTE_HANDLER
struct _TIMER_BASIC_INFORMATION TIMER_BASIC_INFORMATION
#define TIMER_MODIFY_STATE
#define TIMER_QUERY_STATE
enum _TIMER_INFORMATION_CLASS TIMER_INFORMATION_CLASS
VOID(NTAPI * PKRUNDOWN_ROUTINE)(IN struct _KAPC *Apc)
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
#define _Function_class_(n)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define STANDARD_RIGHTS_READ
#define STANDARD_RIGHTS_WRITE
#define STANDARD_RIGHTS_EXECUTE
enum _TIMER_TYPE TIMER_TYPE
BOOLEAN NTAPI ExpInitializeTimerImplementation(VOID)
NTSTATUS NTAPI NtOpenTimer(OUT PHANDLE TimerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
static const INFORMATION_CLASS_INFO ExTimerInfoClass[]
NTSTATUS NTAPI NtSetTimer(IN HANDLE TimerHandle, IN PLARGE_INTEGER DueTime, IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL, IN PVOID TimerContext OPTIONAL, IN BOOLEAN WakeTimer, IN LONG Period OPTIONAL, OUT PBOOLEAN PreviousState OPTIONAL)
NTSTATUS NTAPI NtQueryTimer(IN HANDLE TimerHandle, IN TIMER_INFORMATION_CLASS TimerInformationClass, OUT PVOID TimerInformation, IN ULONG TimerInformationLength, OUT PULONG ReturnLength OPTIONAL)
VOID NTAPI ExpTimerApcKernelRoutine(IN PKAPC Apc, IN OUT PKNORMAL_ROUTINE *NormalRoutine, IN OUT PVOID *NormalContext, IN OUT PVOID *SystemArgument1, IN OUT PVOID *SystemArguemnt2)
VOID NTAPI ExpDeleteTimer(IN PVOID ObjectBody)
static GENERIC_MAPPING ExpTimerMapping
KSPIN_LOCK ExpWakeListLock
NTSTATUS NTAPI NtCreateTimer(OUT PHANDLE TimerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN TIMER_TYPE TimerType)
VOID NTAPI ExTimerRundown(VOID)
NTSTATUS NTAPI NtCancelTimer(IN HANDLE TimerHandle, OUT PBOOLEAN CurrentState OPTIONAL)
BOOLEAN NTAPI KeRemoveQueueApc(PKAPC Apc)
static __inline NTSTATUS DefaultQueryInfoBufferCheck(_In_ ULONG Class, _In_ const INFORMATION_CLASS_INFO *ClassList, _In_ ULONG ClassListEntries, _In_ ULONG Flags, _In_opt_ PVOID Buffer, _In_ ULONG BufferLength, _In_opt_ PULONG ReturnLength, _In_opt_ PULONG_PTR ReturnLengthPtr, _In_ KPROCESSOR_MODE PreviousMode)
Probe helper that validates the provided parameters whenever a NtQuery*** system call is invoked from...
BOOLEAN NTAPI KeInsertQueueApc(IN PKAPC Apc, IN PVOID SystemArgument1, IN PVOID SystemArgument2, IN KPRIORITY PriorityBoost)
VOID NTAPI KeInitializeApc(IN PKAPC Apc, IN PKTHREAD Thread, IN KAPC_ENVIRONMENT TargetEnvironment, IN PKKERNEL_ROUTINE KernelRoutine, IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL, IN PKNORMAL_ROUTINE NormalRoutine, IN KPROCESSOR_MODE Mode, IN PVOID Context)
#define STATUS_INVALID_PARAMETER_4
#define STATUS_INVALID_PARAMETER_6
#define STATUS_TIMER_RESUME_IGNORED
LONG FASTCALL ObDereferenceObjectEx(IN PVOID Object, IN LONG Count)
BOOLEAN FASTCALL ObReferenceObjectSafe(IN PVOID Object)
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
NTSTATUS NTAPI ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN OUT PVOID ParseContext, OUT PHANDLE Handle)
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define ProbeForWriteHandle(Ptr)
#define ProbeForWriteBoolean(Ptr)
#define ProbeForReadLargeInteger(Ptr)
#define KeQueryInterruptTime()
#define KeAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock)
PULONG MinorVersion OPTIONAL
LIST_ENTRY ActiveTimerListHead
KSPIN_LOCK ActiveTimerListLock
struct _LIST_ENTRY * Flink
GENERIC_MAPPING GenericMapping
OB_DELETE_METHOD DeleteProcedure
ULONG DefaultNonPagedPoolCharge
BOOLEAN NTAPI KeReadStateTimer(IN PKTIMER Timer)
BOOLEAN NTAPI KeSetTimerEx(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN LONG Period, IN PKDPC Dpc OPTIONAL)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
VOID NTAPI KeInitializeTimerEx(OUT PKTIMER Timer, IN TIMER_TYPE Type)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
_In_ WDF_POWER_DEVICE_STATE PreviousState
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_In_ WDFTIMER _In_ LONGLONG DueTime
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_ LARGE_INTEGER _In_ ULONG Period
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
#define ObDereferenceObject
#define ObReferenceObject
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ TIMER_TYPE TimerType
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID TimerContext
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE TimerApcRoutine
_Out_opt_ PBOOLEAN CurrentState