NdisMRegisterDmaChannel 関数 (ndis.h)
NdisMRegisterDmaChannel 関数は、下位 NIC または ISA バス マスター NIC での DMA 操作の初期化中にシステム DMA コントローラー チャネルを要求します。
構文
NDIS_STATUS NdisMRegisterDmaChannel(
[out] PNDIS_HANDLE MiniportDmaHandle,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] UINT DmaChannel,
[in] BOOLEAN Dma32BitAddresses,
[in] PNDIS_DMA_DESCRIPTION DmaDescription,
[in] ULONG MaximumLength
);
パラメーター
[out] MiniportDmaHandle
この関数が NdisMXxx システム DMA 関数への後続の呼び出しでミニポート ドライバーが使用するハンドルを返す呼び出し元から指定された変数へのポインター。
[in] MiniportAdapterHandle
ミニポート アダプターは、 への入力を処理します。 MiniportInitializeEx 関数。
[in] DmaChannel
無視されます。 DMA チャネル (存在する場合) を DmaDescription で設定します。
[in] Dma32BitAddresses
NIC に 32 のアドレス行がある場合は TRUE のブール値。 それ以外の場合は FALSE です。
[in] DmaDescription
呼び出し元によって入力されたNDIS_DMA_DESCRIPTION構造体へのポインター。 この構造体は次のように定義されます。
typedef struct _NDIS_DMA_DESCRIPTION {
BOOLEAN DemandMode;
BOOLEAN AutoInitialize;
BOOLEAN DmaChannelSpecified;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG DmaPort;
ULONG DmaChannel;
} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION;
ドライバーは、次のメンバーを入力する前に、この構造体を 0 で初期化する必要があります。
DemandMode
下位 NIC がシステム DMA コントローラーの要求モードを使用する場合は TRUE のブール値。 それ以外の場合は FALSE です。
AutoInitialize
下位 NIC がシステム DMA コントローラーの自動初期化モードを使用する場合は TRUE のブール値。 それ以外の場合は FALSE です。
DmaChannelSpecified
DMAChannel が NIC によって使用されるシステム DMA コントローラー チャネルのバス相対値に設定されている場合は TRUE のブール値。 それ以外の場合は FALSE です。
DmaWidth
DMA 操作の転送幅( Width8Bits、 Width16Bits、 Width32Bits のいずれか)。
DmaSpeed
Compatible、TypeA、TypeB、または TypeC のいずれかとしての DMA 速度。
DmaPort
このメンバーは、サポートされなくなった MCA バスを参照します。 このメンバーは 0 である必要があります。
DmaChannel
NIC によって使用されるシステム DMA コントローラー チャネルのバス相対番号。
[in] MaximumLength
1 つの DMA 操作で NIC が転送できる最大バイト数。 NIC に無制限の転送容量がある場合は、このパラメーターを -1 に設定します。
戻り値
NdisMRegisterDmaChannel は 、次のいずれかの状態値を返すことができます。
リターン コード | 説明 |
---|---|
|
NDIS は、呼び出し元の NIC のレジストリで指定された DMA チャネルを要求し、ミニポート ドライバーによる後続の DMA 操作に必要なリソースを設定します。 |
|
別のドライバーがそのデバイスのチャネルを既に要求している可能性があるため、レジストリ内の DMA チャネルを要求しようとしましたが失敗しました。 NdisMRegisterDmaChannel は 、これが発生した場合にエラーをログに記録します。 |
|
NDIS では、このミニポート ドライバーによる DMA 操作をサポートするために必要なシステム リソースを割り当てませんでした。 |
|
バスの種類またはバス番号が範囲外であるか、ドライバーが NIC を ISA 以外の I/O バスのバス マスターとして宣言しました。 |
注釈
下位 DMA NIC のドライバーは、後続の DMA 操作のためにシステム リソースを予約し、レジストリでそれらを要求するために、その MiniportInitializeEx 関数から NdisMRegisterDmaChannel を呼び出す必要があります。
また、ISA バス マスター NIC のドライバーは、レジストリ内の NIC のシステム DMA コントローラー チャネルを要求するために、MiniportInitializeEx から NdisMRegisterDmaChannel を呼び出す必要があります。
MiniportInitializeEx は を呼び出す必要があります。 NdisMSetMiniportAttributes 関数は、 NdisMRegisterDmaChannel を呼び出す前に実行します。
MiniportInitializeEx は、レジストリから、または NdisMGetBusData 関数を呼び出すことによって、NdisMRegisterDmaChannel に渡されるバス相対値を取得しました。
このようなドライバーがデバイスに必要なシステム DMA リソースを割り当てることができない場合、 MiniportInitializeEx は、NIC に既に割り当てられているすべてのリソースを解放する必要があります。その後、その NIC の初期化に失敗します。
ドライバーが DMA チャネルを正常に登録した場合は、後で を呼び出す必要があります。DMA チャネルを登録解除するための NdisMDeregisterDmaChannel 関数。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (「NdisMRegisterDmaChannel (NDIS 5.1)」を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (NdisMRegisterDmaChannel (NDIS 5.1) を参照) でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | Irql_Miniport_Driver_Function(ndis) |