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 函式來取消定時器,請傳遞此參數中的 NULL。 KStrCancelTimer 函式必須具有與 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 |