共用方式為


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 函式的指標,以相互關聯的方式擷取 Presentation 和 Physical Time。 這可讓時鐘擁有者完全判斷目前的時間。 如果要使用預設 KeQueryPerformanceCounter 函式來規範時間進展,則傳遞 NULL

[in, optional] Resolution

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

[in] Flags

保留,設定為零。

傳回值

如果成功, KsAllocateDefaultClockEx 函 式會傳回STATUS_SUCCESS,否則會傳回記憶體錯誤。

備註

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

規格需求

需求
目標平台 Universal
標頭 ks.h (包含 Ks.h)
程式庫 Ks.lib
IRQL PASSIVE_LEVEL

另請參閱

KStrCancelTimer

KStrCorrelatedTime

KStrSetTimer

KsAllocateDefaultClock

KsFreeDefaultClock