NdisIMRegisterLayeredMiniport 関数 (ndis.h)

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

NdisIMRegisterLayeredMiniport は、ドライバーの初期化時に、中間ドライバーの MiniportXxx エントリ ポイントと名前を 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 構造体へのポインター。 MiniportCharacteristics の構造体は、次のように定義されます。

        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 中間ドライバーは、次のいずれかのメンバーを設定する前に、0 でこの構造体を初期化する必要があります。

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

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

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

  • CheckForHangHandler
    呼び出し元の MiniportCheckForHang 関数のエントリ ポイント (存在する場合) または NULL を指定します

  • DisableInterruptHandler
    NULL を指定します

  • EnableInterruptHandler
    NULL を指定します

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

  • HandleInterruptHandler
    NULL を指定します

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

  • ISRHandler
    NULL を指定します

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

  • ReconfigureHandler
    NULL を指定します

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

  • SendHandler
    呼び出し元の MiniportSend 関数、MiniportWanSend 関数、または呼び出し元MiniportSendPackets 関数を提供する場合は NULL のエントリ ポイントを指定します。

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

  • SetInformationHandler 呼び出し元の MiniportSetInformation 関数のエントリ ポイントを指定します。

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

  • ReturnPacketHandler
    呼び出し元の MiniportReturnPacket 関数のエントリ ポイント (存在する場合) または NULL を指定します

  • SendPacketsHandler
    呼び出し元の MiniportSendPackets 関数のエントリ ポイント (存在する場合) または NULL を指定します

  • AllocateCompleteHandler
    NULL を指定します

  • CoCreateVcHandler
    NULL を指定します

  • CoDeleteVcHandler
    NULL を指定します

  • CoActivateVcHandler
    NULL を指定します

  • CoDeactivateVcHandler
    NULL を指定します

  • CoSendPacketsHandler
    NULL を指定します

  • CoRequestHandler
    NULL を指定します

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

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

  • AdapterShutdownHandler
    呼び出し元の MiniportShutdown 関数のエントリ ポイント (存在する場合) または NULL を指定します。 NDIS 5.1 中間ドライバーは 、ミニポートShutdown 関数を登録する必要があります。 NDIS 5.1 中間ドライバーは、NdisMRegisterAdapterShutdownHandler を呼び出すことによって NdisIMRegisterLayeredMiniport--not を呼び出すことによって、ミニポート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 は、MiniportCharacteristics のバッファーで指定された MajorNdisVersion に対して小さすぎます。
NDIS_STATUS_BAD_VERSION 特性構造で指定された MajorNdisVersion または MajorNdisVersion が無効です。
NDIS_STATUS_RESOURCES リソース (メモリ) の不足により、NDIS ライブラリが呼び出し元をミニポート ドライバーとして登録することを妨げる可能性があります。
NDIS_STATUS_FAILURE これは既定のエラー状態であり、上記のエラーのいずれも登録に失敗しなかった場合に返されます。 たとえば、NDIS ライブラリがドライバーのイメージを読み込んでシステム メモリにロックできない場合、このエラーが返されます。

注釈

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

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

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

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

要件

要件
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください