共用方式為


KsAllocateDefaultClockEx 函式 (ks.h)

KsAllocateDefaultClockEx 函式會配置並初始化預設時鐘結構。

語法

KSDDKAPI NTSTATUS KsAllocateDefaultClockEx(
  [out]          PKSDEFAULTCLOCK     *DefaultClock,
  [in, optional] PVOID               Context,
  [in, optional] PFNKSSETTIMER       SetTimer,
  [in, optional] PFNKSCANCELTIMER    CancelTimer,
  [in, optional] PFNKSCORRELATEDTIME CorrelatedTime,
  [in, optional] const KSRESOLUTION  *Resolution,
  [in]           ULONG               Flags
);

參數

[out] DefaultClock

指定呼叫端配置的共享預設時鐘結構。 目前的時間設定為零,且狀態設定為 KSSTATE_STOP。 成功完成此例程時,此指標所指示的結構將會包含預設時鐘的參考。 傳回的數據應該視為不透明,並保留供系統使用。

[in, optional] Context

選擇性地包含替代時間設施的內容。 如果使用定時器或相互關聯的時間函式,則必須設定此設定。

[in, optional] SetTimer

選擇性地包含驅動程式定義的指標 KStrSetTimer 函式,以用來根據簡報時間產生 DPC 定時器回呼。 如果設定此選項,函式會用來根據差異設定定時器到目前的簡報時間,以產生事件通知。 如果您提供 KStrSetTimer 函式來設定定時器,您也必須提供對應的 KStrCancelTimer 函式。 如果預設 KeSetTimerEx 函式是用來大約下次通知時間,請傳遞此參數中的 NULL。 只有當也使用 KStrCorrelatedTime 函式時,才會設定此參數。 KStrSetTimer 函式必須具有與 keSetTimerEx 相同的特性。

[in, optional] CancelTimer

選擇性地包含驅動程式定義的指標 KStrCancelTimer 函式,以用來取消未處理的定時器回呼。 如果您提供 KStrCancelTimer 函式來取消定時器,您也必須提供對應的 KStrSetTimer 函式。 如果要使用預設 KeCancelTimer 函式來取消定時器,請傳遞此參數中的 NULLKStrCancelTimer 函式必須具有與 keCancelTimer 相同的特性。

[in, optional] CorrelatedTime

選擇性地包含驅動程式定義的指標 KStrCorrelatedTime 函式,以相互關聯的方式擷取簡報和實體時間。 這可讓時鐘擁有者完全判斷目前的時間。 如果預設 KeQueryPerformanceCounter 函式是用來規範時間進度,請傳遞 NULL

[in, optional] Resolution

選擇性地包含時鐘的替代數據粒度和/或 Error 因數。 只有在提供替代定時器或相互關聯的時間函式時,才能使用此方式。 如果使用替代的相互關聯時間,可以指定替代數據粒度,否則結構項目必須是零。 如果使用替代定時器,可能會指定替代錯誤,否則結構元素必須是零。

[in] Flags

保留,設定為零。

傳回值

KsAllocateDefaultClockEx 函式會在成功時傳回STATUS_SUCCESS,如果失敗則傳回記憶體錯誤。

言論

內部 DefaultClock.ReferenceCount 元素會由 KsAllocateDefaultClock 函式初始化為一個元素。 元素會隨著每個通知 DPC 排入佇列並完成而遞減。 當結構要釋放時,會使用 元素來判斷時鐘的擁有者是否應該釋放結構,或擱置的 DPC 是否應該以異步方式釋放它。

要求

要求 價值
目標平臺 普遍
標頭 ks.h (包括 Ks.h)
連結庫 Ks.lib
IRQL PASSIVE_LEVEL

另請參閱

KStrCancelTimer

KStrCorrelatedTime

KStrSetTimer

KsAllocateDefaultClock

KsFreeDefaultClock