Compartir a través de


Función NdisIMRegisterLayeredMiniport (ndis.h)

Nota NDIS 5. x ha quedado en desuso y se sustituye por NDIS 6. x. Para el nuevo desarrollo de controladores NDIS, consulte Controladores de red a partir de Windows Vista. Para obtener información sobre cómo migrar NDIS 5. x controladores a NDIS 6. x, consulte Migración de controladores NDIS 5.x a NDIS 6.0.

NdisIMRegisterLayeredMiniport registra los puntos de entrada MiniportXxx del controlador intermedio y el nombre con la biblioteca NDIS cuando se inicializa el controlador.

Sintaxis

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

Parámetros

[in] NdisWrapperHandle

Especifica el identificador devuelto por NdisMInitializeWrapper.

[in] MiniportCharacteristics

Puntero a una estructura NDIS XX_MINIPORT_CHARACTERISTICS configurada por el autor de la llamada. La estructura en MiniportCharacteristics se define de la siguiente manera:

        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;

Un controlador intermedio NDIS debe inicializar esta estructura con ceros antes de configurar cualquiera de los miembros siguientes:

  • MajorNdisVersion
    Especifica la versión principal de la biblioteca NDIS que usa el controlador. El valor actual es 0x05, aunque la biblioteca NDIS sigue admitiendo los controladores de miniporte existentes desarrollados para NDIS 4.0.

  • MinorNdisVersion
    Especifica la versión secundaria de la biblioteca NDIS que usa el controlador. El valor actual es 0x00, aunque NDIS sigue admitiendo controladores existentes.

  • Reserved
    Este miembro está reservado para uso del sistema.

  • CheckForHangHandler
    Especifica el punto de entrada de la función MiniportCheckForHang del autor de la llamada, si existe, o NULL.

  • DisableInterruptHandler
    Especifica NULL.

  • EnableInterruptHandler
    Especifica NULL.

  • HaltHandler
    Especifica el punto de entrada de la función MiniportHalt del autor de la llamada.

  • HandleInterruptHandler
    Especifica NULL.

  • InitializeHandler
    Especifica el punto de entrada de la función MiniportInitialize del autor de la llamada.

  • ISRHandler
    Especifica NULL.

  • QueryInformationHandler
    Especifica el punto de entrada de la función MiniportQueryInformation del autor de la llamada.

  • Volver a configurarHandler
    Especifica NULL.

  • ResetHandler
    Especifica el punto de entrada de la función MiniportReset del autor de la llamada.

  • SendHandler
    Especifica el punto de entrada de la función MiniportSend del autor de la llamada, la función MiniportWanSend o NULL si el autor de la llamada proporciona una función MiniportSendPackets .

    Si el controlador admite envíos multipaquete o información específica de medios, establece el miembro SendPacketsHandler en su lugar y establece este miembro en NULL.

  • SetInformationHandler Especifica el punto de entrada de la función MiniportSetInformation del autor de la llamada.

  • TransferDataHandler
    Especifica el punto de entrada de la función MiniportTransferData del autor de la llamada, si existe o NULL. Esta función de controlador de minipuerto es necesaria a menos que el autor de la llamada sea el controlador de una NIC WAN o el autor de la llamada admita la recepción de varios paquetes y, por lo tanto, proporciona el punto de entrada de su función MiniportReturnPacket en ReturnPacketHandler.

  • ReturnPacketHandler
    Especifica el punto de entrada de la función MiniportReturnPacket del autor de la llamada, si existe o NULL.

  • SendPacketsHandler
    Especifica el punto de entrada de la función MiniportSendPackets del autor de la llamada, si existe, o NULL.

  • AllocateCompleteHandler
    Especifica NULL.

  • CoCreateVcHandler
    Especifica NULL.

  • CoDeleteVcHandler
    Especifica NULL.

  • CoActivateVcHandler
    Especifica NULL.

  • CoDeactivateVcHandler
    Especifica NULL.

  • CoSendPacketsHandler
    Especifica NULL.

  • CoRequestHandler
    Especifica NULL.

  • CancelSendPacketsHandler
    Especifica el punto de entrada de la función MiniportCancelSendPackets del autor de la llamada, si existe o NULL. Los controladores intermedios que envían paquetes en cola durante más de un segundo deben registrar una función MiniportCancelSendPackets .

  • PnPEventNotifyHandler
    Especifica el punto de entrada de la función MiniportPnPEventNotify del autor de la llamada. Los controladores de miniporte NDIS 5.1 deben registrar una función MiniportPnPEventNotify . Los controladores miniport '' que tienen un borde inferior WDM deben registrar una función MiniportPnPEventNotify .

  • AdapterShutdownHandler
    Especifica el punto de entrada de la función MiniportShutdown del autor de la llamada, si existe, o NULL. Los controladores intermedios NDIS 5.1 deben registrar una función MiniportShutdown . Los controladores intermedios NDIS 5.1 deben registrar una función MiniportShutdown llamando a NdisIMRegisterLayeredMiniport--not llamando a NdisMRegisterAdapterShutdownHandler.

[in] CharacteristicsLength

Especifica la longitud en bytes del búfer de características proporcionadas por el autor de la llamada. Dependiendo del valor de MajorNdisVersion, este parámetro debe ser sizeof(NDIS50_MINIPORT_CHARACTERISTICS) si el controlador proporciona una estructura de NDIS50_MINIPORT_CHARACTERISTICS o sizeof(NDIS40_MINIPORT_CHARACTERISTICS) si el controlador proporciona una estructura de NDIS40_MINIPORT_CHARACTERISTICS.

Si el controlador incluye la instrucción de compilación NDIS50_MINIPORT (o NDIS40_MINIPORT, según corresponda) en sus orígenes o si el escritor de controladores usa -NDIS50_MINIPORT (o .). 40..) modificador del compilador, este parámetro se establece cuando se compila el controlador.

[out] DriverHandle

Puntero a una variable en la que NdisIMRegisterLayeredMiniport, si esta llamada es correcta, devuelve un identificador que el autor de la llamada debe guardar. Posteriormente, el autor de la llamada debe pasar este identificador a NdisIMInitializeDeviceInstance, normalmente desde su función ProtocolBindAdapter .

Valor devuelto

NdisIMRegisterLayeredMiniport devuelve NDIS_STATUS_SUCCESS si registró el autor de la llamada como un controlador de minipuerto o puede devolver uno de los siguientes valores de estado:

Código devuelto Descripción
NDIS_STATUS_BAD_CHARACTERISTICS El elemento CharacteristicsLength es demasiado pequeño para majorNdisVersion especificado en el búfer en MiniportCharacteristics.
NDIS_STATUS_BAD_VERSION MajorNdisVersion o MajorNdisVersion especificados en la estructura de características no son válidos.
NDIS_STATUS_RESOURCES Una escasez de recursos, posiblemente memoria, impedía que la biblioteca NDIS registrara al autor de la llamada como un controlador de minipuerto.
NDIS_STATUS_FAILURE Se trata de un estado de error predeterminado, devuelto cuando ninguno de los errores anteriores provocó un error en el registro. Por ejemplo, si la biblioteca NDIS no puede cargar la imagen del controlador y bloquearla en la memoria del sistema, devuelve este error.

Comentarios

Cualquier controlador intermedio de NDIS que exporte las funciones MiniportXxx y ProtocolXxx configura una estructura de características y llama a NdisIMRegisterLayeredMiniport desde su función DriverEntry después de que DriverEntry llame a NdisMInitializeWrapper. Esta estructura se copia en la solicitud NdisIMRegisterLayeredMiniport al almacenamiento interno de la biblioteca NDIS. Por lo tanto, una vez registrado, este controlador no puede cambiar sus funciones de controlador.

Después de que un controlador intermedio de NDIS haya llamado correctamente a NdisIMRegisterLayeredMiniport , debe llamar a NdisRegisterProtocol para registrar sus funciones ProtocolXxx con la biblioteca NDIS. Este controlador normalmente tiene funciones ProtocolBindAdapter y ProtocolUnbindAdapter . Su función ProtocolBindAdapter se llamará a continuación cuando el controlador NIC subyacente se haya inicializado correctamente. A continuación, ProtocolBindAdapter puede establecer un enlace a ese controlador NIC con NdisOpenAdapter.

Un controlador intermedio NDIS debe tener una función MiniportSendPackets si un controlador NIC subyacente podría admitir envíos multipaquete o consumir información específica del medio, como prioridades de paquetes, enviadas en una matriz de paquetes desde un protocolo de nivel superior. Un controlador intermedio NDIS debe tener una función MiniportReturnPacket si un controlador NIC subyacente podría admitir indicaciones de recepción de varios paquetes o indicar matrices de paquetes que contienen información específica del medio. La biblioteca NDIS controla las matrices de paquetes transferidas entre un controlador NIC subyacente y un protocolo de nivel superior que admite solo transferencias de paquetes únicos en nombre de dicho controlador intermedio.

  • Plataforma de destino: Universal
  • Versión: no se admite para controladores NDIS 6.0 en Windows Vista. En su lugar, use NdisMRegisterMiniportDriver. Compatible con controladores NDIS 5.1 en Windows Vista y Windows XP.

Requisitos

Requisito Valor
Header ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL

Consulte también