次の方法で共有


NdisIMRegisterLayeredMiniport 関数 (ndis.h)

NDIS 5 です。 x は非推奨となり、NDIS 6 に置き換えられます。 x します。 新しい NDIS ドライバーの開発については、「Windows Vista 以降のネットワーク ドライバーを参照してください。 NDIS 5 の移植に関する情報。 NDIS 6 に x ドライバーを します。 x、NDIS 6.0 に NDIS 5.x ドライバーを移植するを参照してください。

NdisIMRegisterLayeredMiniport は、ドライバーの初期化時に、中間ドライバーの ミニポートXxx エントリ ポイントと名前を NDIS ライブラリに登録します。

構文

NDIS_STATUS NdisIMRegisterLayeredMiniport(
  [in]  NDIS_HANDLE                    NdisWrapperHandle,
  [in]  PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
  [in]  UINT                           CharacteristicsLength,
  [out] PNDIS_HANDLE                   DriverHandle
);

パラメーター

[in] NdisWrapperHandle

NdisMInitializeWrapperによって返されるハンドル指定します。

[in] MiniportCharacteristics

呼び出し元によって設定された NDIS XX_MINIPORT_CHARACTERISTICS 構造体へのポインター。 ミニポートCharacteristics 構造体は、次のように定義されます。

        typedef struct _NDIS_MINIPORT_CHARACTERISTICS {
            UCHAR MajorNdisVersion;
            UCHAR MinorNdisVersion;
            UINT Reserved;
            W_CHECK_FOR_HANG_HANDLER CheckForHangHandler;
            W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler;
            W_ENABLE_INTERRUPT_HANDLER  EnableInterruptHandler;
            W_HALT_HANDLER HaltHandler;
            W_HANDLE_INTERRUPT_HANDLER  HandleInterruptHandler;
            W_INITIALIZE_HANDLER InitializeHandler;
            W_ISR_HANDLER ISRHandler;
            W_QUERY_INFORMATION_HANDLER QueryInformationHandler;
            W_RECONFIGURE_HANDLER ReconfigureHandler;
            W_RESET_HANDLER ResetHandler;
            W_SEND_HANDLER SendHandler; 
            W_SET_INFORMATION_HANDLER SetInformationHandler;
            W_TRANSFER_DATA_HANDLER TransferDataHandler;
        //
        // Version used is V4.0 or V5.0
        // with following members
        //
            W_RETURN_PACKET_HANDLER ReturnPacketHandler;
            W_SEND_PACKETS_HANDLER SendPacketsHandler;
            W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
        //
        // Version used is V5.0 with the following members
        //
            W_CO_CREATE_VC_HANDLER CoCreateVcHandler;
            W_CO_DELETE_VC_HANDLER CoDeleteVcHandler;
            W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler;
            W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler;
            W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler;
            W_CO_REQUEST_HANDLER CoRequestHandler;
        //
        // Version used is V5.1 with the following members
        //
            W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler;
            W_MINIPORT_PNPEVENTNOTIFY_HANDLER PnPEventNotifyHandler;
            W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
        } NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;

NDIS 中間ドライバーは、次のいずれかのメンバーを設定する前に、ゼロでこの構造体を初期化する必要があります。

  • MajorNdisVersion
    ドライバーが使用している NDIS ライブラリのメジャー バージョンを指定します。 現在の値は0x05ですが、NDIS ライブラリは NDIS 4.0 用に開発された既存のミニポート ドライバーを引き続きサポートします。

  • MinorNdisVersion
    ドライバーが使用している NDIS ライブラリのマイナー バージョンを指定します。 現在の値は0x00ですが、NDIS は引き続き既存のドライバーをサポートします。

  • 予約済み
    このメンバーは、システム使用のために予約されています。

  • CheckForHangHandler
    呼び出し元の ミニポートCheckForHang 関数のエントリ ポイント (存在する場合) を指定するか、NULL します。

  • DisableInterruptHandler
    NULL 指定します。

  • EnableInterruptHandler
    NULL 指定します。

  • HaltHandler
    呼び出し元の ミニポートHalt 関数のエントリ ポイントを指定します。

  • HandleInterruptHandler
    NULL 指定します。

  • InitializeHandler
    呼び出し元の ミニポート初期化 関数のエントリ ポイントを指定します。

  • ISRHandler する
    NULL 指定します。

  • QueryInformationHandler
    呼び出し元の ミニポートQueryInformation 関数のエントリ ポイントを指定します。

  • ReconfigureHandler
    NULL 指定します。

  • ResetHandler
    呼び出し元の ミニポートReset 関数のエントリ ポイントを指定します。

  • SendHandler
    呼び出し元の ミニポートエンド 関数、ミニポートWanSend 関数のエントリ ポイントを指定するか、呼び出し元が ミニポート パッケージ 関数を提供する場合は NULL します。

    ドライバーがマルチパケット送信またはメディア固有の情報をサポートしている場合は、代わりに、SendPacketsHandler メンバーを設定し、このメンバーを null 設定します。

  • SetInformationHandler 呼び出し元の ミニポート セットInformation 関数のエントリ ポイントを指定します。

  • TransferDataHandler
    呼び出し元の ミニポートTransferData 関数のエントリ ポイント (存在する場合) を指定するか、NULL します。 このミニポート ドライバー関数は、呼び出し元が WAN NIC のドライバーであるか、呼び出し元がマルチパケット受信をサポートしていない限り、必要です。したがって、ReturnPacketHandler ミニポートReturnPacket 関数エントリ ポイントを提供します。

  • ReturnPacketHandler
    呼び出し元の ミニポートReturnPacket 関数のエントリ ポイント (存在する場合) を指定するか、NULL します。

  • SendPacketsHandler
    呼び出し元の ミニポートセット 関数のエントリ ポイント (存在する場合) を指定するか、NULL します。

  • AllocateCompleteHandler
    NULL 指定します。

  • CoCreateVcHandler
    NULL 指定します。

  • CoDeleteVcHandler
    NULL 指定します。

  • CoActivateVcHandler
    NULL 指定します。

  • CoDeactivateVcHandler
    NULL 指定します。

  • CoSendPacketsHandler
    NULL 指定します。

  • CoRequestHandler
    NULL 指定します。

  • CancelSendPacketsHandler する
    呼び出し元の ミニポートCancelSendPackets 関数のエントリ ポイント (存在する場合) または null を指定します。 キューが 1 秒以上パケットを送信する中間ドライバーは、ミニポートCancelSendPackets 関数を登録する必要があります。

  • PnPEventNotifyHandler
    呼び出し元の ミニポートPnPEventNotify 関数のエントリ ポイントを指定します。 NDIS 5.1 ミニポート ドライバーは、ミニポートPnPEventNotify 関数を登録する必要があります。 WDM 下端を持つミニポート ドライバー '' は、ミニポートPnPEventNotify 関数を登録する必要があります。

  • AdapterShutdownHandler
    呼び出し元の ミニポートシュットダウン 関数のエントリ ポイント (存在する場合) を指定するか、NULL します。 NDIS 5.1 中間ドライバーは、ミニポートShutdown 関数を登録する必要があります。 NDIS 5.1 中間ドライバーは、NdisIMRegisterAdapterShutdownHandlerを呼び出すことによってではなく、NdisIMRegisterLayeredMiniportを呼び出すことによって、ミニポートShutdown 関数を登録する必要があります。

[in] CharacteristicsLength

呼び出し元が指定した特性バッファーの長さをバイト単位で指定します。 MajorNdisVersionの値に応じて、ドライバーがNDIS50_MINIPORT_CHARACTERISTICS構造体を提供する場合、このパラメーターは sizeof(NDIS50_MINIPORT_CHARACTERISTICS) であるか、ドライバーがNDIS40_MINIPORT_CHARACTERISTICS構造体を提供する場合は sizeof(NDIS40_MINIPORT_CHARACTERISTICS) である必要があります。

ドライバーのソースにビルド命令NDIS50_MINIPORT (または必要に応じてNDIS40_MINIPORT) が含まれている場合、またはドライバー ライターが -NDIS50_MINIPORT (または ..40..) コンパイラ スイッチ。このパラメーターは、ドライバーのビルド時に設定されます。

[out] DriverHandle

NdisIMRegisterLayeredMiniport 変数へのポインター 。この呼び出しが成功した場合、呼び出し元が保存するハンドルを返します。 呼び出し元は、このハンドルを渡して NdisIMInitializeDeviceInstanceする必要があります。通常は、ProtocolBindAdapter 関数から渡されます。

戻り値

NdisIMRegisterLayeredMiniport 、呼び出し元をミニポート ドライバーとして登録した場合にNDIS_STATUS_SUCCESSを返すか、次のいずれかの状態値を返すことができます。

リターン コード 形容
NDIS_STATUS_BAD_CHARACTERISTICS CharacteristicsLength が小さすぎます。MajorNdisVersion ミニポート文字 のバッファーで指定
NDIS_STATUS_BAD_VERSION MajorNdisVersion または MajorNdisVersion が無効です。
NDIS_STATUS_RESOURCES リソースの不足 (場合によってはメモリ) により、NDIS ライブラリがミニポート ドライバーとして呼び出し元を登録することを妨げている。
NDIS_STATUS_FAILURE これは既定のエラー状態であり、上記のエラーのいずれも登録が失敗しなかった場合に返されます。 たとえば、NDIS ライブラリがドライバーのイメージを読み込んでシステム メモリにロックできない場合、このエラーが返されます。

備考

ミニポートXxxProtocolXxx 関数の両方をエクスポートするすべての NDIS 中間ドライバーは、特性構造を設定し、DriverEntry 関数から NdisIMRegisterLayeredMiniport を呼び出、NdisMInitializeWrapper呼び出。 この構造体は、ndisIMRegisterLayeredMiniport NDIS ライブラリの内部記憶域への 要求にコピーされます。 したがって、登録されると、このようなドライバーはハンドラー関数を変更できません。

このような NDIS 中間ドライバーは、ndisIMRegisterLayeredMiniport 正常に呼び出された後、ndisregisterProtocol を呼び出して、その ProtocolXxx 関数を NDIS ライブラリに登録する必要があります。 このようなドライバーには、通常、ProtocolBindAdapter と ProtocolUnbindAdapter関数があります。 その ProtocolBindAdapter 関数は、基になる NIC ドライバーが正常に初期化されたときに次に呼び出されます。 ProtocolBindAdapter 、NdisOpenAdapterを使用して、その NIC ドライバーへのバインド確立できます。

基になる NIC ドライバーがマルチパケット送信をサポートするか、上位レベルのプロトコルからパケット配列で送信などのメディア固有の情報を使用する場合は、NDIS 中間ドライバーは、ミニポートSendPackets 関数を持つ必要があります。 基になる NIC ドライバーがマルチパケット受信表示をサポートする場合、またはメディア固有の情報を含むパケット配列を示す場合、NDIS 中間ドライバーには、ミニポートReturnPacket 関数が必要です。 NDIS ライブラリは、基になる NIC ドライバーと、このような中間ドライバーの代わりに単一パケット転送のみをサポートする上位レベルのプロトコルの間で転送されたパケット配列を処理します。

  • ターゲット プラットフォーム: ユニバーサル
  • バージョン: Windows Vista の NDIS 6.0 ドライバーではサポートされていません。 代わりに、NdisMRegisterMiniportDriver使用してください。 Windows Vista および Windows XP の NDIS 5.1 ドライバーでサポートされています。

必要条件

要件 価値
ヘッダー ndis.h (Ndis.h を含む)
ライブラリ Ndis.lib
IRQL PASSIVE_LEVEL

関連項目