共用方式為


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結構,指定 ResourceTypeOverflowPHYSICAL_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