次の方法で共有


OID_GEN_CO_GET_TIME_CAPS

Note

OID_GEN_CO_GET_TIME_CAPSは OID_GEN_GET_TIME_CAPS と同じです。

OID_GEN_CO_GET_TIME_CAPS OID は、ミニポート ドライバーに、次のように定義されている、GEN_GET_TIME_CAPS 構造体として書式設定された NIC のローカル時刻を報告するための機能を返すように要求します。

typedef struct _GEN_GET_TIME_CAPS{
    ULONG   Flags;
    ULONG   ClockPrecision;
} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;

この構造体のメンバーには、次の情報が含まれています。

フラグ
次のフラグは、一緒に ORed にすることができます。 指定されていないフラグはすべて 0 に設定する必要があります。

READABLE_LOCAL_CLOCK
設定されている場合、NIC 上に読み取り可能なクロックが存在することを示します。 このようなハードウェア クロックがなくても、ミニポート ドライバーは、ClockPrecision メンバーの正しい精度を報告する限り、NdisGetCurrentSystemTime を呼び出すことによってシステム クロックを使用できます。

CLOCK_NETWORK_DERIVED
設定されている場合、NIC のローカル時刻が、空き時間のオンボード クロックではなく、ネットワーク接続から派生していることを示します。

CLOCK_PRECISION
設定されている場合、ClockPrecision メンバーに有効な情報が含まれていることを示します。

RECEIVE_TIME_INDICATION_CAPABLE
設定されている場合、NIC ハードウェアは、受信した PDU の最初のセルを受信するローカル時刻をメモし、ミニポート ドライバーがプロトコルにパケットを示すときに各 PDU のこの受信時間を伝達することを示します。

TIMED_SEND_CAPABLE
設定されている場合、NIC がローカル時刻に従って送信用のパケットをスケジュールできることを示します。 プロトコルでは、NDIS_SET_PACKET_TIME_TO_SEND を使用して、パケット記述子の帯域外データ ブロックに TimeToSend タイムスタンプを設定できます。 タイムスタンプの設定は、パケットが実際に送信されるときには影響しません。代わりに、タイムスタンプはレコードキーピングに使用されます。 プロトコル ドライバーは、タイムスタンプを使用して、パケットの送信を完了するのにかかる時間を決定できます。

TIME_STAMP_CAPABLE
設定されている場合、NIC が (送信パケットの適切なフィールドで) パケットの最初のバイトが送信される時刻をスタンプでき、NIC が受信パケットの同じフィールドからこの時刻を取得できることを示します。

ClockPrecision
クロック精度を 100 万分の 1 単位で指定します。 この情報を有効と見なすには、CLOCK_PRECISION フラグを設定する必要があります。

解説

ミニポート ドライバーは、ローカルまたはネットワーク クロックがない場合でも、特定のタイミング パラメーターのサポートを提供できます。 特に、ミニポート ドライバーは、受信時刻の表示、時間指定された送信、さらにはタイム スタンプにシステム クロックを使用できます。 NIC ベースのクロックは、システム クロックよりも精度が高く、低い待機時間でアクセスできる可能性が高いため、優れています。 いずれの場合も、ミニポート ドライバーは、使用するクロックの精度を指定する必要があります。 これにより、プロトコルは、ミニポート ドライバーのタイミングのサポートを最適に使用する方法を決定できます。

ミニポート ドライバーが読み取り可能なクロックの存在を報告する場合、OID_GEN_GET_NETCARD_TIME クエリにすぐに応答するように準備する必要があります。 この呼び出しに対するミニポート ドライバーの応答はタイム クリティカルであるため、同期的である必要があります。

要件

バージョン: Windows Vista 以降の ヘッダー: Ntddndis.h (Ndis.h を含む)