NDIS_HARDWARE_CROSSTIMESTAMP 構造体 (ntddndis.h)
NDIS_HARDWARE_CROSSTIMESTAMP構造体は、NIC のハードウェア クロックとシステム クロックの間のクロス タイムスタンプを記述します。
構文
typedef struct _NDIS_HARDWARE_CROSSTIMESTAMP {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
ULONG64 SystemTimestamp1;
ULONG64 HardwareClockTimestamp;
ULONG64 SystemTimestamp2;
} NDIS_HARDWARE_CROSSTIMESTAMP, *PNDIS_HARDWARE_CROSSTIMESTAMP;
メンバー
Header
この NDIS_HARDWARE_CROSSTIMESTAMP 構造体を記述する NDIS_OBJECT_HEADER 構造体。 NDIS_OBJECT_HEADER構造体のメンバーを次のように設定します。
Type メンバーを NDIS_OBJECT_TYPE_DEFAULT に設定します。
Revision メンバーを NDIS_HARDWARE_CROSSTIMESTAMP_REVISION_1 に設定します。
[サイズ] メンバーを [NDIS_SIZEOF_HARDWARE_CROSSTIMESTAMP_REVISION_1] に設定します。
Flags
将来利用するために予約されています。 ミニポート ドライバーは、この値を変更することはできません。
SystemTimestamp1
KeQueryPerformanceCounter を呼び出して取得したパフォーマンス カウンター値 (QPC)。
HardwareClockTimestamp
NIC ハードウェア クロックの現在の値。 これは、NIC の生のハードウェア クロック値である必要があります。
SystemTimestamp2
KeQueryPerformanceCounter を呼び出して取得した別のパフォーマンス カウンター値 (QPC)。
注釈
ミニポート ドライバーは、OID_TIMESTAMP_GET_CROSSTIMESTAMPの OID 要求を受信すると、ドライバーは、NDIS_HARDWARE_CROSSTIMESTAMP構造でQUERY_INFORMATIONの InformationBuffer を入力して OID を完了します。
ドライバーは、 SystemTimestamp1、 HardwareClockTimestamp 、 および SystemTimestamp2 フィールドに、可能な限り近い、次の順序でタイムスタンプを入力する必要があります。
SystemTimestamp1
HardwareClockTimestamp
SystemTimestamp2
ミニポート ドライバーとハードウェアは、高度なハードウェア機能に応じて、これらのタイムスタンプのコレクションを自由に最適化できます。 ただし、OID の完了時に返される SystemTimestamp1 と SystemTimestamp2 の値は、キャプチャ時のパフォーマンス カウンター (QPC) 値に正確に対応している必要があります。 HardwareClockTimestamp は、キャプチャポイントでの NIC のハードウェア クロック値に対応している必要があります。 特定の実装で、3 つではなく 2 つのタイムスタンプ (たとえば、1 つのシステム タイムスタンプと対応する NIC ハードウェア クロック タイムスタンプ) をより正確に決定できる場合は、SystemTimestamp2 フィールドを SystemTimestamp1 と同じ値に設定する必要があります。
ミニポート ドライバーは、 SystemTimestamp1、 HardwareClockTimestamp、または SystemTimestamp2 の値を 0 に設定しないでください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 11 |
サポートされている最小のサーバー | Windows Server 2022。 NDIS 6.82 以降でサポートされています。 |
Header | ntddndis.h (ndis.h を含む) |