Compartilhar via


Função NdisIMRegisterLayeredMiniport (ndis.h)

Nota NDIS 5. x foi preterido e substituído pelo NDIS 6. x. Para obter um novo desenvolvimento de driver NDIS, consulte Drivers de rede começando com o Windows Vista. Para obter informações sobre como portar o NDIS 5. x drivers para NDIS 6. x, consulte Portabilidade de drivers NDIS 5.x para NDIS 6.0.

NdisIMRegisterLayeredMiniport registra os pontos de entrada miniportXxx de um driver intermediário e o nome com a biblioteca NDIS quando o driver é inicializado.

Sintaxe

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

Parâmetros

[in] NdisWrapperHandle

Especifica o identificador retornado por NdisMInitializeWrapper.

[in] MiniportCharacteristics

Ponteiro para uma estrutura NDIS XX_MINIPORT_CHARACTERISTICS configurada pelo chamador. A estrutura em MiniportCharacteristics é definida da seguinte maneira:

        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;

Um driver intermediário do NDIS deve inicializar essa estrutura com zeros antes de configurar qualquer um dos seguintes membros:

  • MajorNdisVersion
    Especifica a versão principal da biblioteca NDIS que o driver está usando. O valor atual é 0x05, embora a biblioteca NDIS continue a dar suporte a drivers de miniporta existentes desenvolvidos para NDIS 4.0.

  • MinorNdisVersion
    Especifica a versão secundária da biblioteca NDIS que o driver está usando. O valor atual é 0x00, embora o NDIS continue a dar suporte a drivers existentes.

  • Reserved
    Esse membro é reservado para uso do sistema.

  • CheckForHangHandler
    Especifica o ponto de entrada da função MiniportCheckForHang do chamador, se houver, ou NULL.

  • DisableInterruptHandler
    Especifica NULL.

  • EnableInterruptHandler
    Especifica NULL.

  • HaltHandler
    Especifica o ponto de entrada da função MiniportHalt do chamador.

  • HandleInterruptHandler
    Especifica NULL.

  • Initializehandler
    Especifica o ponto de entrada da função MiniportInitialize do chamador.

  • ISRHandler
    Especifica NULL.

  • QueryInformationHandler
    Especifica o ponto de entrada da função MiniportQueryInformation do chamador.

  • ReconfigureHandler
    Especifica NULL.

  • ResetHandler
    Especifica o ponto de entrada da função MiniportReset do chamador.

  • SendHandler
    Especifica o ponto de entrada da função MiniportSend do chamador, a função MiniportWanSend ou NULL se o chamador fornecer uma função MiniportSendPackets .

    Se o driver der suporte a envios de vários pacotes ou informações específicas da mídia, ele definirá o membro SendPacketsHandler e definirá esse membro como NULL.

  • SetInformationHandler Especifica o ponto de entrada da função MiniportSetInformation do chamador.

  • TransferDataHandler
    Especifica o ponto de entrada da função MiniportTransferData do chamador, se houver, ou NULL. Essa função de driver de miniporto é necessária, a menos que o chamador seja o driver de uma NIC wan ou o chamador dê suporte a recebimentos multipacket e, portanto, forneça o ponto de entrada de sua função MiniportReturnPacket em ReturnPacketHandler.

  • ReturnPacketHandler
    Especifica o ponto de entrada da função MiniportReturnPacket do chamador, se houver, ou NULL.

  • SendPacketsHandler
    Especifica o ponto de entrada da função MiniportSendPackets do chamador, se houver, ou NULL.

  • AllocateCompleteHandler
    Especifica NULL.

  • CoCreateVcHandler
    Especifica NULL.

  • CoDeleteVcHandler
    Especifica NULL.

  • CoActivateVcHandler
    Especifica NULL.

  • CoDeactivateVcHandler
    Especifica NULL.

  • CoSendPacketsHandler
    Especifica NULL.

  • CoRequestHandler
    Especifica NULL.

  • CancelSendPacketsHandler
    Especifica o ponto de entrada da função MiniportCancelSendPackets do chamador, se houver, ou NULL. Os drivers intermediários que enviam pacotes por mais de um segundo devem registrar uma função MiniportCancelSendPackets .

  • PnPEventNotifyHandler
    Especifica o ponto de entrada da função MiniportPnPEventNotify do chamador. Os drivers de miniporto NDIS 5.1 devem registrar uma função MiniportPnPEventNotify . Os drivers de miniport '', que têm uma borda inferior do WDM, devem registrar uma função MiniportPnPEventNotify .

  • AdapterShutdownHandler
    Especifica o ponto de entrada da função MiniportShutdown do chamador, se houver, ou NULL. Os drivers intermediários do NDIS 5.1 devem registrar uma função MiniportShutdown . Os drivers intermediários do NDIS 5.1 devem registrar uma função MiniportShutdown chamando NdisIMRegisterLayeredMiniport, não chamando NdisMRegisterAdapterShutdownHandler.

[in] CharacteristicsLength

Especifica o comprimento em bytes do buffer de características fornecido pelo chamador. Dependendo do valor de MajorNdisVersion, esse parâmetro deverá ser sizeof(NDIS50_MINIPORT_CHARACTERISTICS) se o driver fornecer uma estrutura NDIS50_MINIPORT_CHARACTERISTICS ou sizeof(NDIS40_MINIPORT_CHARACTERISTICS) se o driver fornecer uma estrutura NDIS40_MINIPORT_CHARACTERISTICS.

Se o driver incluir a instrução de build NDIS50_MINIPORT (ou NDIS40_MINIPORT, conforme apropriado) em suas fontes ou se o gravador de driver usar -NDIS50_MINIPORT (ou .. 40..) comutador do compilador, esse parâmetro é definido quando o driver é compilado.

[out] DriverHandle

Ponteiro para uma variável na qual NdisIMRegisterLayeredMiniport, se essa chamada for bem-sucedida, retornará um identificador que o chamador deve salvar. Posteriormente, o chamador deve passar esse identificador para NdisIMInitializeDeviceInstance, geralmente de sua função ProtocolBindAdapter .

Retornar valor

NdisIMRegisterLayeredMiniport retornará NDIS_STATUS_SUCCESS se ele registrou o chamador como um driver de miniporte ou pode retornar um dos seguintes valores de status:

Código de retorno Descrição
NDIS_STATUS_BAD_CHARACTERISTICS O CharacteristicsLength é muito pequeno para o MajorNdisVersion especificado no buffer em MiniportCharacteristics.
NDIS_STATUS_BAD_VERSION O MajorNdisVersion ou MajorNdisVersion especificado na estrutura de características é inválido.
NDIS_STATUS_RESOURCES Uma escassez de recursos, possivelmente memória, impediu que a biblioteca NDIS registrasse o chamador como um driver de miniporta.
NDIS_STATUS_FAILURE Esse é um erro padrão status, retornado quando nenhum dos erros anteriores causou falha no registro. Por exemplo, se a biblioteca NDIS não puder carregar a imagem do driver e bloqueá-la na memória do sistema, ela retornará esse erro.

Comentários

Qualquer driver intermediário do NDIS que exporta as funções MiniportXxx e ProtocolXxx configura uma estrutura de características e chama NdisIMRegisterLayeredMiniport de sua função DriverEntry após DriverEntry chamar NdisMInitializeWrapper. Essa estrutura é copiada na solicitação NdisIMRegisterLayeredMiniport para o armazenamento interno da biblioteca NDIS. Assim, depois de registrado, esse driver não pode alterar suas funções de manipulador.

Depois que esse driver intermediário do NDIS tiver chamado NdisIMRegisterLayeredMiniport com êxito, ele deverá chamar NdisRegisterProtocol para registrar suas funções ProtocolXxx com a biblioteca NDIS. Esse driver geralmente tem as funções ProtocolBindAdapter e ProtocolUnbindAdapter . Sua função ProtocolBindAdapter será chamada em seguida quando o driver NIC subjacente tiver sido inicializado com êxito. Em seguida, ProtocolBindAdapter pode estabelecer uma associação a esse driver NIC com NdisOpenAdapter.

Um driver intermediário do NDIS deve ter uma função MiniportSendPackets se um driver NIC subjacente pode dar suporte a envios de vários pacotes ou consumir informações específicas da mídia, como prioridades de pacote, enviadas em uma matriz de pacotes de um protocolo de nível superior. Um driver intermediário do NDIS deve ter uma função MiniportReturnPacket se um driver NIC subjacente pode dar suporte a indicações de recebimento de vários pacotes ou indicar matrizes de pacotes que contêm informações específicas da mídia. A biblioteca NDIS manipula matrizes de pacotes transferidas entre um driver NIC subjacente e um protocolo de nível superior que dão suporte apenas a transferências de pacote único em nome desse driver intermediário.

  • Plataforma de destino: Universal
  • Versão: não há suporte para drivers NDIS 6.0 no Windows Vista. Em vez disso, use NdisMRegisterMiniportDriver. Com suporte para drivers NDIS 5.1 no Windows Vista e windows XP.

Requisitos

Requisito Valor
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL PASSIVE_LEVEL

Confira também