NDIS_STATUS_TIMESTAMP_CAPABILITY
迷你埠驅動程式會使用 NDIS_STATUS_TIMESTAMP_CAPABILITY 狀態指示,向 NDIS 和過度配置驅動程式報告 NIC 的硬體時間戳記功能和迷你埠驅動程式的軟體時間戳記功能。
此狀態指示代表硬體和迷你埠驅動程式的時間戳記功能,而不是目前啟用或停用的功能。 如需報告目前時間戳記設定的詳細資訊,請參閱 NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG。
備註
在初始化期間,迷你埠驅動程式應該會從 其 MiniportInitializeEx 函式中指出其硬體和軟體時間戳記功能。 驅動程式應該:
使用 NIC 的硬體和軟體時間戳記功能 ,初始化NDIS_TIMESTAMP_CAPABILITIES 結構。 驅動程式會設定 NDIS_TIMESTAMP_CAPABILITIES 結構的成員,如下所示:
- 驅動程式會使用 TimestampFlags 欄位來指出硬體和軟體時間戳記功能。
注意
實作必須支援硬體時間戳記和跨時間戳記。 支援軟體時間戳記是選擇性的。
驅動程式必須將 CrossTimestamp 欄位設定為 TRUE。
HardwareClockFrequencyHz欄位應該包含用於 NIC 時間戳記的硬體時鐘之實際操作頻率。 此資料可用來向使用者顯示標準時鐘頻率,以供參考之用。
[標頭] 欄位中的[類型] 欄位應該設定為[NDIS_OBJECT_TYPE_DEFAULT],並將 [修訂] 設定為[NDIS_TIMESTAMP_CAPABILITIES_REVISION_1]。
呼叫NdisMIndicateStatusEx來報告時間戳記功能,以產生NDIS_STATUS_TIMESTAMP_CAPABILITY狀態指示。 NDIS_STATUS_INDICATION結構的StatusBuffer欄位應該指向初始化NDIS_TIMESTAMP_CAPABILITIES結構。
每當迷你埠驅動程式偵測到基礎硬體功能的變更時,也必須產生 NDIS_STATUS_TIMESTAMP_CAPABILITY 狀態指示。
以下是迷你埠驅動程式如何指出其支援的時間戳記功能:
// From within its initialization routine, the miniport in this
// example indicates that it supports the following capabilities:
// - PtpV2OverUdpIPv4EventMsgReceiveHw
// - PtpV2OverUdpIPv6EventMsgReceiveHw
// - TaggedTransmitHw
// - CrossTimestamp
NDIS_STATUS MiniportInitializeEx(
_In_ NDIS_HANDLE MiniportAdapterHandle,
_In_ NDIS_HANDLE MiniportDriverContext,
_In_ PNDIS_MINIPORT_INIT_PARAMETERS MiniportInitParameters
)
{
. . .
NDIS_TIMESTAMP_CAPABILITIES timeStampCapabilities;
NDIS_STATUS_INDICATION timeStampStatus;
. . .
// Initialize an NDIS_TIMESTAMP_CAPABILITIES structure
RtlZeroMemory(&timeStampCapabilities, sizeof(timeStampCapabilities));
RtlZeroMemory(&timeStampStatus, sizeof(timeStampStatus));
timeStampCapabilities.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
timeStampCapabilities.Header.Size = sizeof(timeStampCapabilities);
timeStampCapabilities.Header.Revision = NDIS_TIMESTAMP_CAPABILITIES_REVISION_1;
timeStampCapabilities.CrossTimestamp = TRUE;
timeStampCapabilities.TimestampFlags.PtpV2OverUdpIPv4EventMsgReceiveHw = TRUE;
timeStampCapabilities.TimestampFlags.PtpV2OverUdpIPv6EventMsgReceiveHw = TRUE;
timeStampCapabilities.TimestampFlags.TaggedTransmitHw = TRUE;
timeStampCapabilities.HardwareClockFrequencyHz = 150000;
timeStampStatus.Header.Type = NDIS_OBJECT_TYPE_STATUS_INDICATION;
timeStampStatus.Header.Revision = NDIS_STATUS_INDICATION_REVISION_1;
timeStampStatus.Header.Size = NDIS_SIZEOF_STATUS_INDICATION_REVISION_1;
timeStampStatus.SourceHandle = MiniportAdapterHandle;
timeStampStatus.StatusBuffer = &timeStampCapabilities;
timeStampStatus.StatusBufferSize = sizeof(timeStampCapabilities);
timeStampStatus.StatusCode = NDIS_STATUS_TIMESTAMP_CAPABILITY;
// Generate an NDIS_STATUS_TIMESTAMP_CAPABILITY status indication
NdisMIndicateStatusEx(MiniportAdapterHandle, &timeStampStatus);
. . .
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 11 |
最低支援的伺服器 | Windows Server 2022 |
NDIS 版本 | NDIS 6.82 和更新版本 |
標頭 | Ntddndis.h (包括 Ndis.h) |