NdisMMapIoSpace 関数 (ndis.h)
NdisMMapIoSpace 、特定のバス相対 "物理" 範囲のデバイス RAM またはレジスタをシステム空間仮想範囲にマップします。
構文
NDIS_STATUS NdisMMapIoSpace(
[out] PVOID *VirtualAddress,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] NDIS_PHYSICAL_ADDRESS PhysicalAddress,
[in] UINT Length
);
パラメーター
[out] VirtualAddress
呼び出しが成功した場合に変換された仮想アドレスに設定される呼び出し元が指定した変数へのポインター。
[in] MiniportAdapterHandle
ミニポートInitializeEx をするハンドル入力を指定します。
[in] PhysicalAddress
マップするデバイス メモリ範囲のバス相対ベース物理アドレスを指定します。
[in] Length
マップするバイト数を指定します。
戻り値
NdisMMapIoSpace は、次のいずれかの状態値を返すことができます。
リターン コード | 形容 |
---|---|
|
デバイス のメモリ範囲が正常にマップされたため、VirtualAddress の値が有効であり、NIC のレジストリでマップされた範囲が要求されました。 |
|
別のドライバーがそのデバイスの範囲を既に要求しているために、レジストリ内のデバイス メモリの範囲を要求しようとしましたが失敗しました。 NdisMMapIoSpace 、これが発生した場合にエラーをログに記録します。 |
|
メモリをマップできなかったか、十分な仮想メモリを割り当てませんでした。 |
|
バスの種類またはバス番号が範囲外であるか、指定された PhysicalAddress と の長さ が無効でした (現在のプラットフォームの I/O 領域内にない可能性があります)。 |
備考
この関数は、ホストの I/O 空間に表示されるオンボード メモリまたはデバイス レジスタのバンクを持つ NIC のドライバーによって呼び出されます。 たとえば、PIO を使用する NIC のドライバーは、NdisMMapIoSpace 呼び出します。
NdisMMapIoSpace 呼び出しが成功すると、ドライバーの NIC のレジストリ内のハードウェア リソースが要求されます。 したがって、ミニポートInitializeEx 関数のみが NdisMMapIoSpace 呼び出します。
NdisMMapIoSpace は、virtualAddress の変数、NDIS_STATUS_SUCCESSを返さない場合は NULL を に設定します。
MiniportInitializeEx は、ドライバーの パラメーター レジストリ キーから PhysicalAddress 値を取得するか、NdisXxx構成関数をバスの種類固有の を呼び出すことによって取得します。 指定された物理アドレス範囲は、現在のプラットフォームの I/O 空間内に収まるようにする必要があります。 これは、ホストの物理メモリ アドレス NdisMMapIoSpace を呼び出すプログラミング エラーです。
ミニポート ドライバーは、ミニポートInitializeEx が後で NIC の初期化に失敗した場合、NIC がコンピューターから削除された場合、またはドライバーがアンロードするときに、システム リソースに対する要求を解放するために、NdisMUnmapIoSpace の逆数 を呼び出す必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (NdisMMapIoSpace (NDIS 5.1) を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (NdisMMapIoSpace (NDIS 5.1) を参照) でサポートされています。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | ndis.h (Ndis.h を含む) |
ライブラリ | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | Irql_Miniport_Driver_Function(ndis)、 NdisMMapIoSpace(ndis) |
関連項目
NdisMGetBusData の
NdisMUnmapIoSpace の
NdisOpenConfigurationEx の
NdisReadRegisterUchar の
NdisReadRegisterUlong の
NdisReadRegisterUshort の
NdisWriteRegisterUchar の
NdisWriteRegisterUlong の