PPHYSICAL_COUNTER_OVERFLOW_HANDLER回呼函式 (ntddk.h)
PPHYSICAL_COUNTER_OVERFLOW_HANDLER是由客戶端驅動程序實作,以處理透過 HalAllocateHardwareCounters 例程取得之計數器資源的計數器溢位。
語法
PPHYSICAL_COUNTER_OVERFLOW_HANDLER PphysicalCounterOverflowHandler;
void PphysicalCounterOverflowHandler(
ULONGLONG OverflowBits,
HANDLE OwningHandle
)
{...}
參數
OverflowBits
提供描述哪些計數器溢位的點陣圖。
OwningHandle
提供對應至資源集溢位計數器所屬的 HANDLE 。
傳回值
無
備註
藉由呼叫 HalAllocateHardwareCounters ,並具有類型 為 PHYSICAL_COUNTER_RESOURCE_LIST 的結構,以註冊此回呼函式的實作。 在PHYSICAL_COUNTER_RESOURCE_LIST中,提供類型PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR結構,指定 ResourceTypeOverflow 的PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE。
以下是溢位處理程式的範例原型:
VOID
PmuAwareOverflowHandler (
_In_ ULONGLONG OverflowStatus,
_In_ HANDLE OwningHandle
)
/*++
Routine Description:
This routine is the PMU Overflow Handler for a sharing driver.
Arguments:
OverflowStatus - The counters which have overflowed.
OwningHandle - The handle owning the counters.
Return Value:
None.
--*/
{
}
若要註冊溢位處理程式,請使用如下所示的程式代碼:
VOID
CreateOverflowDescriptor (
_Inout_ PPHYSICAL_COUNTER_RESOURCE_LIST CounterResourceList,
_In_ ULONG DescriptorIndex
)
{
CounterResourceList->Descriptors[DescriptorIndex].Type = ResourceTypeOverflow;
CounterResourceList->Descriptors[DescriptorIndex].u.OverflowHandler = PmuAwareOverflowHandler;
}
在 IRQL = PROFILE_LEVEL呼叫此回呼。 這表示它必須一律是記憶體駐留的。 回呼應該儘快傳回,且不應嘗試執行下列任何動作。
取得或釋放微調鎖定。
存取記憶體中未鎖定的分頁集區
呼叫可分頁的例程。
回呼不需要處理清除任何溢位緩存器,因為它將由 HAL 處理。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | ntddk.h |
IRQL | PROFILE_LEVEL |