46 Profile->
Source = ProfileSource;
66 if (!SourceBuffer)
return FALSE;
74 if (!Profile->Started)
78 Profile->Started =
TRUE;
79 StartedProfile =
TRUE;
82 ProfileProcess = Profile->Process;
99 NextEntry = NextEntry->
Flink)
107 if (CurrentSource->
Source == Profile->Source)
119 CurrentSource = SourceBuffer;
122 CurrentSource->
Source = Profile->Source;
132 StartedProfile =
FALSE;
148 return StartedProfile;
165 if (Profile->Started)
169 Profile->Started =
FALSE;
170 StoppedProfile =
TRUE;
175 NextEntry = NextEntry->
Flink)
183 if (CurrentSource->
Source == Profile->Source)
198 StoppedProfile =
FALSE;
214 return StoppedProfile;
239 ProfileSourceInformation.
Source = ProfileSource;
242 &ProfileSourceInformation,
283 ProfileSourceInterval.
Source = ProfileSource;
287 &ProfileSourceInterval);
317 for (NextEntry = ListHead->
Flink;
318 NextEntry != ListHead;
319 NextEntry = NextEntry->
Flink)
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
ULONG_PTR NTAPI HalSetProfileInterval(IN ULONG_PTR Interval)
#define KeRaiseIrql(irql, oldIrql)
#define KeLowerIrql(oldIrql)
IN BOOLEAN OUT PSTR Buffer
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
VOID NTAPI KeAcquireSpinLockAtDpcLevel(IN PKSPIN_LOCK SpinLock)
VOID NTAPI HalStartProfileInterrupt(IN KPROFILE_SOURCE ProfileSource)
VOID NTAPI KeProfileInterrupt(IN PKTRAP_FRAME TrapFrame)
#define HalQuerySystemInformation
#define InsertTailList(ListHead, Entry)
#define HalSetSystemInformation
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
struct _KPROCESS * Process
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
enum _KPROFILE_SOURCE KPROFILE_SOURCE
ULONG KiProfileTimeInterval
BOOLEAN NTAPI KeStartProfile(IN PKPROFILE Profile, IN PVOID Buffer)
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)
struct _LIST_ENTRY * Flink
BOOLEAN NTAPI KeStopProfile(IN PKPROFILE Profile)
LIST_ENTRY KiProfileListHead
VOID NTAPI KeInitializeProfile(PKPROFILE Profile, PKPROCESS Process, PVOID ImageBase, SIZE_T ImageSize, ULONG BucketSize, KPROFILE_SOURCE ProfileSource, KAFFINITY Affinity)
#define NT_SUCCESS(StatCode)
VOID NTAPI KeReleaseSpinLockFromDpcLevel(IN PKSPIN_LOCK SpinLock)
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
#define ExAllocatePoolWithTag(hernya, size, tag)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define KeGetTrapFramePc(TrapFrame)
ULONG KiProfileAlignmentFixupInterval
VOID NTAPI KeSetIntervalProfile(IN ULONG Interval, IN KPROFILE_SOURCE ProfileSource)
LIST_ENTRY ProfileListHead
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
ULONG NTAPI KeQueryIntervalProfile(IN KPROFILE_SOURCE ProfileSource)
VOID NTAPI KeProfileInterruptWithSource(IN PKTRAP_FRAME TrapFrame, IN KPROFILE_SOURCE Source)
#define RtlZeroMemory(Destination, Length)
VOID NTAPI KiParseProfileList(IN PKTRAP_FRAME TrapFrame, IN KPROFILE_SOURCE Source, IN PLIST_ENTRY ListHead)
VOID NTAPI HalStopProfileInterrupt(IN KPROFILE_SOURCE ProfileSource)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
#define ExFreePoolWithTag(_P, _T)
#define KeGetCurrentThread
LIST_ENTRY KiProfileSourceListHead
struct _KPROFILE KPROFILE
VOID NTAPI KeSetProfileIrql(IN KIRQL ProfileIrql)