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,
536 TimerInformationLength,
556 KeTimer.DueTime.QuadPart -
597 ULONG DerefsToDo = 1;
651 if (
Timer->ApcAssociated)
684 Timer->WakeTimer = WakeTimer;
686 if ((WakeTimer) && !(
Timer->WakeTimerListEntry.Flink))
691 else if (!(WakeTimer) && (
Timer->WakeTimerListEntry.Flink))
716 &
Timer->ActiveTimerListEntry);
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)
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 TIMER_QUERY_STATE
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
BOOLEAN INIT_FUNCTION NTAPI ExpInitializeTimerImplementation(VOID)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
#define STANDARD_RIGHTS_WRITE
#define PsGetCurrentThread()
VOID NTAPI ExTimerRundown(VOID)
_In_ LARGE_INTEGER DueTime
VOID NTAPI KeAcquireSpinLockAtDpcLevel(IN PKSPIN_LOCK SpinLock)
BOOLEAN NTAPI KeReadStateTimer(IN PKTIMER Timer)
BOOLEAN NTAPI KeRemoveQueueDpc(IN PKDPC Dpc)
_In_ LARGE_INTEGER _In_ ULONG Period
LIST_ENTRY ActiveTimerListHead
KPROCESSOR_MODE NTAPI ExGetPreviousMode(VOID)
VOID NTAPI ObDereferenceObject(IN PVOID Object)
BOOLEAN NTAPI KeSetTimerEx(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN LONG Period, IN PKDPC Dpc OPTIONAL)
struct _TIMER_BASIC_INFORMATION TIMER_BASIC_INFORMATION
#define InsertTailList(ListHead, Entry)
#define STANDARD_RIGHTS_EXECUTE
static const INFORMATION_CLASS_INFO ExTimerInfoClass[]
VOID(CALLBACK * PTIMER_APC_ROUTINE)(PVOID, ULONG, LONG)
BOOLEAN FASTCALL ObReferenceObjectSafe(IN PVOID Object)
_Function_class_(KDEFERRED_ROUTINE)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
NTSTATUS NTAPI NtOpenTimer(OUT PHANDLE TimerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
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)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
static GENERIC_MAPPING ExpTimerMapping
BOOLEAN NTAPI KeRemoveQueueApc(PKAPC Apc)
NTSTATUS NTAPI NtCancelTimer(IN HANDLE TimerHandle, OUT PBOOLEAN CurrentState OPTIONAL)
#define EXCEPTION_EXECUTE_HANDLER
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
VOID NTAPI ExpDeleteTimer(IN PVOID ObjectBody)
NTSTATUS NTAPI NtQueryTimer(IN HANDLE TimerHandle, IN TIMER_INFORMATION_CLASS TimerInformationClass, OUT PVOID TimerInformation, IN ULONG TimerInformationLength, OUT PULONG ReturnLength OPTIONAL)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
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)
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
struct _LIST_ENTRY * Flink
_In_ KPROCESSOR_MODE PreviousMode
_In_ LARGE_INTEGER _In_opt_ PKDPC Dpc
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
VOID(NTAPI * PKRUNDOWN_ROUTINE)(IN struct _KAPC *Apc)
#define _SEH2_YIELD(STMT_)
#define NT_SUCCESS(StatCode)
VOID NTAPI KeReleaseSpinLockFromDpcLevel(IN PKSPIN_LOCK SpinLock)
#define KeAcquireSpinLock(sl, irql)
#define ProbeForWriteHandle(Ptr)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
enum _TIMER_INFORMATION_CLASS TIMER_INFORMATION_CLASS
#define ProbeForWriteBoolean(Ptr)
#define ProbeForReadLargeInteger(Ptr)
enum _TIMER_TYPE TIMER_TYPE
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ TIMER_TYPE TimerType
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
VOID NTAPI ExpTimerApcKernelRoutine(IN PKAPC Apc, IN OUT PKNORMAL_ROUTINE *NormalRoutine, IN OUT PVOID *NormalContext, IN OUT PVOID *SystemArgument1, IN OUT PVOID *SystemArguemnt2)
NTSTATUS NTAPI NtCreateTimer(OUT PHANDLE TimerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN TIMER_TYPE TimerType)
static __inline NTSTATUS DefaultQueryInfoBufferCheck(ULONG Class, const INFORMATION_CLASS_INFO *ClassList, ULONG ClassListEntries, PVOID Buffer, ULONG BufferLength, PULONG ReturnLength, PULONG_PTR ReturnLengthPtr, KPROCESSOR_MODE PreviousMode)
#define STANDARD_RIGHTS_READ
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_opt_ LONG _Out_opt_ PBOOLEAN PreviousState
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)
LONG NTAPI ExSystemExceptionFilter(VOID)
GENERIC_MAPPING GenericMapping
#define InitializeListHead(ListHead)
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)
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK DesiredAccess
#define STATUS_INVALID_PARAMETER_6
LONG FASTCALL ObDereferenceObjectEx(IN PVOID Object, IN LONG Count)
#define KeReleaseSpinLock(sl, irql)
BOOLEAN NTAPI KeInsertQueueApc(IN PKAPC Apc, IN PVOID SystemArgument1, IN PVOID SystemArgument2, IN KPRIORITY PriorityBoost)
#define STATUS_TIMER_RESUME_IGNORED
#define TIMER_MODIFY_STATE
#define ObReferenceObject
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE _In_opt_ PVOID TimerContext
#define RtlZeroMemory(Destination, Length)
_In_ PLARGE_INTEGER _In_opt_ PTIMER_APC_ROUTINE TimerApcRoutine
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionCode()
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
#define STATUS_INVALID_PARAMETER_4
OB_DELETE_METHOD DeleteProcedure
KSPIN_LOCK ExpWakeListLock
VOID NTAPI KeFlushQueuedDpcs(VOID)
ULONGLONG NTAPI KeQueryInterruptTime(VOID)
ULONG DefaultNonPagedPoolCharge
VOID NTAPI KeInitializeTimerEx(OUT PKTIMER Timer, IN TIMER_TYPE Type)
_Out_opt_ PBOOLEAN CurrentState
PULONG MinorVersion OPTIONAL
_In_opt_ PVOID DeferredContext
KSPIN_LOCK ActiveTimerListLock