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

NdisOpenAdapterStatus でエラーを返した場合に詳細情報を提供する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 によって異なります。 たとえば、SelectedMediumIndexNdisMediumAtm が返された場合、プロトコル ドライバーは XXX またはOID_CO_XXX コードOID_ATM_指定するときに NdisCoRequest を呼び出し、OID_GEN_XXX コードを指定するときに NdisRequest を呼び出します。

SelectedMediumIndexNdisMediumWan が返された場合、プロトコル ドライバーは 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

こちらもご覧ください