NdisReadNetworkAddress 関数 (ndis.h)

NdisReadNetworkAddress 関数は、NIC がコンピューターにインストールされたときに、NIC のレジストリに格納されていたソフトウェアで構成可能なネットワーク アドレスを返します。

構文

void NdisReadNetworkAddress(
  [out] PNDIS_STATUS Status,
  [out] PVOID        *NetworkAddress,
  [out] PUINT        NetworkAddressLength,
  [in]  NDIS_HANDLE  ConfigurationHandle
);

パラメーター

[out] Status

呼び出し元が指定した変数へのポインター。この関数は、呼び出しの状態を次のいずれかとして返します。

NDIS_STATUS_SUCCESS

呼び出し元は、NIC の NetworkAddress で返されるアドレスを使用できます。

NDIS_STATUS_FAILURE

呼び出し元のレジストリ パラメーター キーに使用可能な NIC アドレス情報がなかったか、格納されている値が文字列ではありません。

[out] NetworkAddress

呼び出しが成功した場合、この関数がバイト整数のシーケンスとして格納されているネットワーク アドレス (通常は MAC アドレス) を含むバッファーへのポインターを返す呼び出し元が指定した変数へのポインター。

[out] NetworkAddressLength

呼び出し元が指定した変数へのポインター。この関数は 、NetworkAddress で返されるバイト数を返します。

[in] ConfigurationHandle

によって返される構成ハンドル NdisOpenConfigurationEx 関数。

戻り値

なし

解説

NdisReadNetworkAddress は、指定された ConfigurationHandle によって指定されたレジストリ パラメーター キーでキーワード (keyword) NetworkAddress を検索し、この文字列型エントリの値をバイト整数のシーケンスに変換し、要求された情報を内部的に格納します。 NDIS がこのようなアドレスに割り当てる記憶域は、ミニポート ドライバーが NdisCloseConfiguration 関数を呼び出すまで有効なままで、メモリを解放します。

NdisReadNetworkAddressStatus でNDIS_STATUS_SUCCESSを返さない限り、呼び出し元は NetworkAddress の変数をポインターとして使用できません。

ソフトウェアで構成可能なネットワーク アドレス指定をサポートする NIC のインストール プログラムには、NETWORKAddress キーワード (keyword) を使用してという名前の値エントリを HKLM\System\CurrentControlSet\Control\Class{4d36e972...} に格納する必要があります。レジストリの \00xx キー。

NIC インストーラーは通常、 NetworkAddress エントリの値を 16 進数の文字列としてレジストリに格納します。 必要に応じて、インストーラーは、ペアの数字の文字列などのアドレスを格納し、各ペアを次のペアからハイフンで区切ることができます。 NdisReadNetworkAddress はハイフンを破棄し、このような各ペアを 1 バイトに変換します。

どちらの形式でも、 NdisReadNetworkAddress は、文字列として指定されたアドレスを、文字列が使い果たされるまで、一度に 1 文字ずつ等価の整数に変換します。

Windows 2000 以降のバージョンのレジストリでは、インストールされているアドレス文字列に Unicode 文字が含まれています。

NDIS は NetworkAddress で値を検証しないことに注意してください。 NDIS では、この値が有効なアドレスであること、値の長さが適切であること、または値がネットワーク アドレスであることも保証されません。 そのため、 NdisReadNetworkAddress の呼び出し元は、この値に関して何も想定せず、それ自体で値を検証する必要があります。 呼び出し元が値が範囲外であると判断した場合は、 値を使用しないでください。代わりに、永続的なメディア アクセス制御 (MAC) アドレスまたは既定のアドレスを使用する必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista 以降の NDIS 6.0 以降のドライバーでサポートされています。 Windows XP 以降の NDIS 5.1 ドライバー (「NdisReadNetworkAddress (NDIS 5.1)」を参照) でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 Irql_Miscellaneous_Function(ndis)

こちらもご覧ください

NdisCloseConfiguration

NdisOpenConfigurationEx