NdisOpenAdapter 関数 (ndis.h)
メモ NDIS 5。 x は非推奨となり、NDIS 6 に置き換えられます。 x があります。 新しい NDIS ドライバーの開発については、「 Windows Vista 以降のネットワーク ドライバー」を参照してください。 NDIS 5 の移植について説明します。 x ドライバーを NDIS 6 に設定します。 x については、「 NDIS 5.x ドライバーを NDIS 6.0 に移植する」を参照してください。
NdisOpenAdapter は 、呼び出し元のプロトコルと特定の基になる NIC ドライバーまたは NDIS 中間ドライバーの間のバインドを設定します。
構文
void NdisOpenAdapter(
[out] PNDIS_STATUS Status,
[out] PNDIS_STATUS OpenErrorStatus,
[out] PNDIS_HANDLE NdisBindingHandle,
[out] PUINT SelectedMediumIndex,
[in] PNDIS_MEDIUM MediumArray,
[in] UINT MediumArraySize,
[in] NDIS_HANDLE NdisProtocolHandle,
[in] NDIS_HANDLE ProtocolBindingContext,
[in] PNDIS_STRING AdapterName,
[in] UINT OpenOptions,
[in, optional] PSTRING AddressingInformation
);
パラメーター
[out] Status
呼び出し元が指定した変数へのポインター。この関数からの戻り値には、次のいずれかの値を指定できます。
STATUS_SUCCESS
要求されたバインディングが設定され、呼び出し元は NdisBindingHandle および SelectedMediumIndex で返される値を NdisXxx への後続の呼び出しで使用できるようになります。NDIS_STATUS_PENDING
要求された操作は非同期的に処理されており、オープンが完了すると呼び出し元の ProtocolOpenAdapterComplete 関数が呼び出されます。NDIS_STATUS_RESOURCES
NDIS が十分なメモリを割り当てられなかったか、開いているバインディングを追跡するために使用する状態を初期化できなかったため、要求された操作が失敗しました。NDIS_STATUS_ADAPTER_NOT_FOUND
AdapterName の名前がシステム オブジェクト名前空間に見つからなかったため、要求された操作が失敗しました。NDIS_STATUS_UNSUPPORTED_MEDIA
MediumArray の配列では、NDIS または基になるドライバーによってサポートされているメディアが指定されませんでした。NDIS_STATUS_CLOSING
呼び出し元または AdapterName で指定された物理デバイスまたは仮想デバイスが閉じられています。NDIS_STATUS_OPEN_FAILED
上記の特定の理由がない場合、オープン試行は失敗しました。 たとえば、NDIS が選択したメディアのフィルター パッケージを初期化できなかった可能性があります。
[out] OpenErrorStatus
NdisOpenAdapter が Status でエラーを返した場合に詳細情報を提供するNDIS_STATUS_XXX エラーを含めることができる呼び出し元が指定した変数へのポインター。 たとえば、トークン リング NIC のドライバーは、この変数でリング エラーを返す可能性があります。
[out] NdisBindingHandle
呼び出し元から指定された変数へのポインター。NDIS は、呼び出し元と AdapterName で指定された特定の物理または仮想 NIC との間の正常なバインドを表すハンドルを返します。
[out] SelectedMediumIndex
基になる NDIS ドライバーが使用するメディアの種類を指定する配列要素のインデックスを返す、呼び出し元が指定した変数へのポインター。
[in] MediumArray
呼び出し元がサポートできるメディアの種類を指定するNDIS_MEDIUM型の値の配列へのポインター。 可能な要素には、次の適切なサブセットが含まれます。
NdisMedium802_3
イーサネット (802.3) ネットワークを指定します。NdisMedium802_5
トークン リング (802.5) ネットワークを指定します。NdisMediumFddi
ファイバー分散データ インターフェイス (FDDI) ネットワークを指定します。NdisMediumWan
ワイド エリア ネットワークを指定します。 この型は、さまざまな形式のポイントツーポイントおよび WAN NIC、およびバインディングの確立後にプロトコル ドライバーと基になるドライバーの間でネゴシエートする必要があるバリアント 型のアドレス/ヘッダー形式を対象としています。NdisMediumLocalTalk
LocalTalk ネットワークを指定します。NdisMediumDix
ドライバーが DIX イーサネット ヘッダー形式を使用するイーサネット ネットワークを指定します。NdisMediumArcnetRaw
ARCNET ネットワークを指定します。NdisMediumArcnet878_2
ARCNET (878.2) ネットワークを指定します。NdisMediumAtm
ATM ネットワークを指定します。 接続指向のクライアント プロトコルは、この値を返す基になるミニポート ドライバーに自分自身をバインドできます。 それ以外の場合、レガシ プロトコルはシステム提供の LanE 中間ドライバーにバインドします。これにより、LanE ドライバーがネットワーク管理者によって構成される方法に応じて、そのメディアの種類が NdisMedium802_3 または NdisMedium802_5として報告されます。NdisMediumWirelessWan
ワイヤレス ネットワークを指定します。 ワイヤレス LAN (WLAN) またはワイヤレス WAN (WWAN) パケットをサポートする NDIS 5.X ミニポート ドライバーは、そのメディア をNdisMedium802_3 として宣言し、上位レベルの NDIS ドライバーにイーサネットをエミュレートします。メモ このメディアの種類は、Windows Vista 以降では使用できません。
NdisMediumIrda
赤外線 (IrDA) ネットワークを指定します。NdisMediumCoWan
接続指向環境のワイド エリア ネットワークを指定します。NdisMedium1394
IEEE 1394 (Fire Wire) ネットワークを指定します。
[in] MediumArraySize
MediumArray の要素の数を指定します。
[in] NdisProtocolHandle
NdisRegisterProtocol によって返されるハンドルを指定します。
[in] ProtocolBindingContext
プロトコルが確立された後にこのバインディングに関する状態を維持する、呼び出し元が指定した常駐コンテキスト領域のハンドルを指定します。
[in] AdapterName
システムの既定の文字セットで指定されたカウントされた文字列を含むNDIS_STRING型へのポインター。NIC または基になる NDIS ドライバーの仮想アダプターに名前を付けます。 このドライバーは、一連の上端 ( MiniportXxx) 関数をエクスポートします。 Windows 2000 以降のドライバーの場合、このカウントされる文字列には Unicode 文字が含まれます。 つまり、Windows 2000 以降の場合、NDIS はNDIS_STRING型を UNICODE_STRING 型として定義します。
[in] OpenOptions
呼び出し元が NIC ドライバーと見なされる次の下位ドライバーに渡すフラグを含むビットマスクを指定します。 現在、このパラメーターはシステムで使用するために予約されています。
[in, optional] AddressingInformation
NIC ドライバーがネットカードのプログラミングに使用できる、基になる NIC に固有の情報を含む、省略可能な可変長カウント文字列へのポインター。 このポインターは NULL にすることができます。
指定された場合、アドレス指定情報は、開いている操作が完了するまで有効なままである必要があります。 非同期モデムをサポートする基になる NIC ドライバーは、ダイヤルにこの情報を使用できます。
戻り値
なし
解説
プロトコル ドライバーは、ProtocolBindAdapter 関数から NdisOpenAdapter を呼び出します。 NDIS では、レガシ (V3.0) プロトコルで使用できるオプションであった DriverEntry 関数からの NdisOpenAdapter の呼び出しがサポートされなくなりました。 NDIS は V3.0 プロトコルをサポートしなくなりました。 NDIS は、ProtocolBindAdapter のコンテキスト外で NdisOpenAdapter を呼び出そうとしても失敗します。
AdapterName の文字列は、状態でNDIS_STATUS_PENDINGを返す場合でも、NdisOpenAdapter がコントロールを返すまで有効なままです。
NdisBindingHandle および SelectedMediumIndex の変数は、NdisOpenAdapter がNDIS_STATUS_PENDINGを返す場合に ProtocolOpenAdapterComplete 関数が呼び出されるまで無視する必要があります。 ProtocolOpenAdapterComplete が呼び出されるまで、これらの変数は無効なままになる可能性があるため、スタック上に配置することはできません。 通常、このハンドルは ProtocolOpenAdapterComplete への入力パラメーターであるため、これらの変数は ProtocolBindingContext 領域に存在します。
プロトコル ドライバーは、 NdisProtocolHandle で返されるハンドルを保持する必要があります。 これは、ドライバーが後で呼び出す他の NdisXxx 関数に必要なパラメーターです。 指定された ProtocolBindingContext は呼び出し元の ProtocolXxx 関数への入力パラメーターであるため、プロトコルは通常、NdisOpenAdapter の呼び出しで呼び出し元によって割り当てられたコンテキスト領域のどこかにある変数に NdisProtocolHandle ポインターを渡します。
呼び出し元は、後続の NdisRequest または NdisCoRequest の呼び出しで SelectedMediumIndex で返される値を使用します。 要求パケットに設定する OID は、返される NdisMediumXxx によって異なります。 たとえば、SelectedMediumIndex で NdisMediumAtm が返された場合、プロトコル ドライバーは XXX またはOID_CO_XXX コードOID_ATM_指定するときに NdisCoRequest を呼び出し、OID_GEN_XXX コードを指定するときに NdisRequest を呼び出します。
SelectedMediumIndex で NdisMediumWan が返された場合、プロトコル ドライバーは NdisRequest を呼び出し、クエリでOID_WAN_MEDIUM_SUBTYPEを指定して、基になるドライバーが使用する WAN メディアの種類を決定します。
以前にワイヤレス メディアのOID_NETWORK_TYPEのグローバル クエリが、ドライバーと基になる NIC が複数の NdisMediumWirelessWan 型メディアをサポートしていることを示している場合、プロトコルは、NDIS がバインドを設定し、プロトコルがヘッダー形式を選択する前に、サポートされているメディアのいずれかを選択する必要があります。
プロトコル ドライバーがバインドされた NDIS ドライバーとのネゴシエートに使用する一般的な OID と中固有の OID の詳細については、「 NDIS オブジェクト識別子」を参照してください。
- ターゲット プラットフォーム: ユニバーサル
- バージョン: Windows Vista の NDIS 6.0 ドライバーではサポートされていません。 代わりに NdisOpenAdapterExを使用してください。 Windows Vista および Windows XP の NDIS 5.1 ドライバーでサポートされています。
要件
要件 | 値 |
---|---|
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
こちらもご覧ください
- ANSI_STRING
- NDIS プロトコル ドライバーの DriverEntry
- MiniportInitialize
- MiniportQueryInformation
- MiniportSendPackets
- MiniportSetInformation
- NdisCloseAdapter
- NdisClOpenAddressFamily
- NdisCoRequest
- NdisCmRegisterAddressFamily
- NdisIMInitializeDeviceInstance
- NdisIMRegisterLayeredMiniport
- NdisMIndicateReceivePacket
- NDIS_PACKET_OOB_DATA
- NdisRegisterProtocol
- NdisRequest
- NdisSendPackets
- ProtocolBindAdapter
- ProtocolOpenAdapterComplete
- ProtocolReceivePacket
- UNICODE_STRING