NdisMSetupDmaTransfer マクロ (ndis.h)
NdisMSetupDmaTransfer 関数は、DMA 転送用のホスト DMA コントローラーを設定します。
構文
void NdisMSetupDmaTransfer(
_S,
_H,
_B,
_O,
_L,
_M_
);
パラメーター
_S
この関数が要求の状態を返す呼び出し元が指定した変数へのポインター。次のいずれかになります。
NDIS_STATUS_SUCCESS
DMA コントローラーは、データの整合性を維持するために、デバイス間でフラッシュされた、指定されたデータを転送するように設定されています。
NDIS_STATUS_RESOURCES
MiniportDmaHandle によって指定されたチャネルが現在データの転送中であるか、指定された長さが無効であるため、転送用の DMA コントローラーを設定できませんでした。
_H
初期化中に NdisMRegisterDmaChannel 関数によって返される DMA ハンドル。
_B
データの転送元または転送先となるホスト メモリの範囲をマッピングするバッファー記述子へのポインター。
_O
転送を開始するマップされたバッファー内のバイト オフセット。 0 は、 バッファー で指定された範囲の初期バイトから転送を開始する必要があることを示します。
_L
転送するデータのバイト数。 Offset と Length で指定される範囲は、Buffer で指定した範囲の適切な部分範囲である必要があります。
_M_
NIC を介したシステムからの送信転送に 対して TRUE のブール値。 それ以外の場合は FALSE です。
戻り値
なし
解説
下位 DMA NIC のドライバーは、ドライバーが WriteToDevice を TRUE に設定する受信送信要求に応答して NdisMSetupDmaTransfer を呼び出します。 NIC から受信したデータをホスト メモリに転送するときに 、WriteToDeviceを FALSE に設定します。
NdisMSetupDmaTransfer の呼び出し元は、転送のターゲットであるホスト メモリ範囲、またはホストから NIC へのダウンロード操作のデータを含むホスト メモリ範囲をマッピングするバッファー記述子を提供します。 NIC の DMA 制約に合わせてサイズ設定された転送を指定するために、呼び出し元は、必要に応じて Offset パラメーターと Length パラメーターを使用して転送するサブ範囲を設定できます。
呼び出し元は、 WriteToDevice が FALSE の場合に NIC から受信データを転送するホスト範囲を指定するバッファー記述子を指定する必要があります。 それ以外の場合、Buffer の バッファー 記述子は、ミニポート ドライバーへのパケット記述子入力にチェーンされました MiniportSendNetBufferLists 関数。
長さが 256 バイト未満の送信要求など、小さな送信要求のパフォーマンスを向上させるために、ミニポート ドライバーは、パケット データを内部ステージング バッファーにコピーし、そのバッファーを NdisMSetupDmaTransfer にドライバー割り当てバッファー記述子マッピングを渡すことができます。
NdisMSetupDmaTransfer から返されると、転送用にホスト DMA コントローラーがプログラムされています。 その後、ミニポート ドライバーは、転送操作の NIC をプログラムします。
転送が完了すると、ミニポート ドライバーは を呼び出す必要があります。 NdisMCompleteDmaTransfer 関数。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (「NdisMSetupDmaTransfer (NDIS 5.1)」を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (「NdisMSetupDmaTransfer (NDIS 5.1)」を参照) でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis.h (Ndis.h を含む) |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | Irql_Miniport_Driver_Function(ndis) |