NdisMRegisterIoPortRange 関数 (ndis.h)
NdisMRegisterIoPortRange は、NdisRawReadPortXxx 関数と NdisRawWritePortXxx 関数を使用してデバイス I/O ポートへのドライバー アクセスを設定し、そのドライバーの NIC のレジストリ内の I/O ポート アドレスの範囲を要求します。
構文
NDIS_STATUS NdisMRegisterIoPortRange(
[out] PVOID *PortOffset,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] UINT InitialPort,
[in] UINT NumberOfPorts
);
パラメーター
[out] PortOffset
InitialPort および NumberOfPorts で指定された特定のバス相対 I/O ポート範囲のマップされたベース仮想アドレスを返す呼び出し元から指定された変数を指定します。
[in] MiniportAdapterHandle
MiniportInitializeEx へのハンドル入力を指定します。
[in] InitialPort
マップするポートの範囲のバス相対ベース ポート アドレスを指定します。
[in] NumberOfPorts
マップする範囲内のポートの数を指定します。
戻り値
NdisMRegisterIoPortRange は、次のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
指定された I/O ポートの範囲が正常にマップされたため、 PortOffset の値が有効であり、NIC のレジストリでマップされた範囲が要求されました。 |
|
レジストリ内の I/O ポート範囲を要求しようとしましたが、別のドライバーがそのデバイスの範囲を既に要求している可能性があるために失敗しました。 NdisMRegisterIoPortRange は、これが発生した場合にエラーをログに記録します。 |
|
ポート範囲をマップできなかったか、NDIS がハードウェア リソースの競合のためにレジストリをチェックにリソースを割り当てませんでした。 |
|
バスの種類またはバス番号が範囲外であるか、指定された InitialPort と NumberOfPorts が無効でした (現在のプラットフォームの I/O ポート空間内にない可能性があります)。 |
注釈
ミニポート ドライバーは、そのミニポートInitializeEx 関数から NdisMRegisterIoPortRange を呼び出します。 MiniportInitializeEx は を呼び出す必要があります NdisMRegisterIoPortRange を呼び出す前の NdisMSetMiniportAttributes。
NdisMRegisterIoPortRange は、ミニポート ドライバーが NdisRawXxx 関数を呼び出すことによって NIC 上の I/O ポート範囲にアクセスするために後で使用できるバス相対デバイス アドレス範囲をマップします。 呼び出しが成功すると、呼び出し元の NIC のレジストリ内の指定された I/O ポートの範囲が要求されます。
NdisRawXxx に渡されるパラメーターはマップされているため、これらの関数は対応する NdisImmediate よりも大幅に高速に実行されます。ポートXxx。 NdisMRegisterIoPortRange を正常に呼び出した後、ミニポート ドライバーは NdisImmediate を呼び出すことができません。ポートXxx は、バス相対アドレスまたはそのような I/O ポート範囲内のマップされた仮想アドレスを持つ機能です。
NdisMRegisterIoPortRange の呼び出しが失敗した場合、MiniportInitializeEx は NIC に既に割り当てられているすべてのリソースを解放し、その NIC の初期化に失敗します。
デバイス レジスタを備えた NIC のドライバーは、ホスト メモリ空間で NdisMMapIoSpace を呼び出し、その後、NIC レジスタにアクセスするための NdisRead/WriteRegisterXxx 関数を呼び出します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (「NdisMRegisterIoPortRange (NDIS 5.1)」を参照) でサポートされています。 Windows XP での NDIS 5.1 ドライバー (「NdisMRegisterIoPortRange (NDIS 5.1)」を参照) でサポートされています。 |
対象プラットフォーム | ユニバーサル |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | Irql_Miniport_Driver_Function(ndis)、 NdisMRegisterIoPortRange(ndis) |