MiniportInitialize
9/8/2008
Essa função é um exigido função que configura um adaptador rede ou rede virtual adaptador, para operações rede E/S, reivindicações todos os recursos hardware necessários para adaptador de rede no Registro e aloca recursos de driver precisa realizar operações rede E/S.
Syntax
NDIS_STATUS MiniportInitialize(
PNDIS_STATUS OpenErrorStatus,
PUINT SelectedMediumIndex,
PNDIS_MEDIUM MediumArray,
UINT MediumArraySize,
NDIS_HANDLE MiniportAdapterHandle,
NDIS_HANDLE WrapperConfigurationContext
);
Parameters
- OpenErrorStatus
[out] Aponta para uma variável que MiniportInitialize Define como um NDIS_STATUS_XXX codificar especificando informações adicionais sobre o erro se MiniportInitialize Retornará NDIS_STATUS_OPEN_ERROR.
- SelectedMediumIndex
[out] Aponta para uma variável no qual MiniportInitialize Define o índice das MediumArray elemento que especifica o tipo de mídia de driver ou adaptador sua rede usa.
- MediumArray
[no] Especifica uma matriz de NdisMediumXXX Valores de qual MiniportInitialize Seleciona um que oferece suporte ao seu adaptador rede ou que o driver oferece suporte como uma interface para drivers de nível superior.
- MediumArraySize
[no] Especifica o número de elementos no MediumArray.
- MiniportAdapterHandle
[no] Especifica um identificador que identifica rede adaptador a miniporta, que é atribuído pela biblioteca NDIS. MiniportInitialize deve salvar este identificador; é exigido um parâmetro em chamadas subseqüentes para NDISXXX funções.
- WrapperConfigurationContext
[no] Especifica um identificador usado somente durante inicialização de chamadas para NDISXXX funções configuração e inicialização. Por exemplo, este identificador é um exigido parâmetro para NdisOpenConfiguration e o NdisImmediateReadXXX e NdisImmediateWriteXXX funções.
Return Value
A seguinte tabela mostra valores status que MiniportInitialize pode retornar.
Valor | Descrição |
---|---|
NDIS_STATUS_SUCCESS |
MiniportInitialize configurado e configurar o adaptador rede e ele alocado todos os recursos de driver precisa realizar operações rede E/S. |
NDIS_STATUS_FAILURE |
MiniportInitialize Não foi possível configurar adaptador de rede para um estado operacional ou não foi possível alocar os recursos necessários. |
NDIS_STATUS_UNSUPPORTED_MEDIA |
Os valores em MediumArray Foi Não Incluir um meio de driver (ou seu adaptador rede) pode suporte. |
NDIS_STATUS_ADAPTER_NOT_FOUND |
MiniportInitialize não reconheceu adaptador de rede de sua descrição no Registro, usando NdisOpenConfiguration e NdisReadConfiguration, ou por probing adaptador de rede em um barramento E/S específico, usando um do NdisImmediateXXX ou barramento - tipo - específico NDISXXX funções configuração. Esse retorno pode ser propagado de chamar de miniporta para determinados NDISXXX funções, como NdisOpenConfiguration. |
NDIS_STATUS_OPEN_ERROR |
MiniportInitialize tentou configurar um adaptador rede mas foi malsucedido. |
NDIS_STATUS_NOT_ACCEPTED |
MiniportInitialize poderia não get seu adaptador rede para aceitar os parâmetros configuração que ela obteve a partir de Registro um barramento - tipo - ou específica NDISXXX função configuração. |
NDIS_STATUS_RESOURCES |
Ambos MiniportInitialize não pôde alocar recursos suficientes para realizar operações rede E/S ou uma tentativa reclamar barramento-relativo recursos hardware o Registro para a falha adaptador de rede. Este retorno pode ser propagado de chamar de miniporta para um NDISXXX função. |
Remarks
NDIS não envia nenhuma solicitação para um driver até que sua inicialização seja concluída.
Nos drivers adaptador de rede e intermediário que chamar NdisMRegisterMiniport do seu DriverEntry funções, chamadas NDIS MiniportInitialize No contexto de NdisMRegisterMiniport. O subjacente driver de dispositivo deve inicializar antes um intermediário driver que dependa desse dispositivo chama NdisMRegisterMiniport.
Para NDIS intermediário drivers que exportar dois ProtocolXXX e MiniportaXXX funções e que chamar NdisIMRegisterLayeredMiniport do seu DriverEntry funções, chamadas NDIS MiniportInitialize No contexto de NdisIMInitializeDeviceInstance. Tal de um driver ProtocolBindAdapter função geralmente faz a chamar para NdisIMInitializeDeviceInstance.
Em geral, os drivers de chamar adaptadores rede ISA NdisOpenConfiguration e NdisReadConfiguration Para o barramento get-relativo parâmetros configuração para seus adaptadores rede a partir de Registro. Drivers para adaptadores rede em outros tipos de E/S barramentos geralmente chamar o apropriado barramento - tipo - específico NdisReadXXX função. Drivers de adaptadores rede PCMCIA devem chamar NdisReadConfiguration Para manter seu binário compatibilidade entre Operating Systems Microsoft que suporte Microsoft® Win32®.
Quando ele chama MiniportInitialize, a biblioteca NDIS fornece uma matriz de com suporte tipos de mídia, especificados como definidos pelo sistema NdisMediumXXX Os valores. MiniportInitialize Lê os elementos matriz e fornece o índice do tipo de mídia que NDIS devem usar com este driver para adaptador sua rede. Se a miniporta está emulando um tipo de mídia, seu emulação deverá ser transparente para NDIS.
O MiniportInitialize função de um driver adaptador rede deve chamar NdisMSetAttributes Ou NdisMSetAttributesEx antes de ele chama qualquer NDISXXX função, como NdisMRegisterIoPortRange Ou NdisMMapIoSpace que alega recursos hardware o Registro para adaptador de rede.
Driver intermediário MiniportInitialize funções devem chamar NdisMSetAttributesEx Com NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER definir na AttributeFlags argumento. Definir esse sinalizador faz com que NDIS para tratar cada intermediário driver como uma miniporta full-duplex, impedindo assim raros mas intermitentes bloqueios quando simultâneo enviar e receber eventos ocorrer. Conseqüentemente, cada intermediário driver deve ser escrito como um driver full-duplex capaz de manipulação simultâneo envia e indicações.
Se intervalo tempo limite Four-Second usar como padrão da biblioteca de NDIS em pendente envia e solicitações é adaptador rede do muito Short for o driver, MiniportInitialize pode chamar NdisMSetAttributesEx Para estender o intervalo. Cada intermediário driver também deve chamar NdisMSetAttributesEx Com NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT e NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT definir na AttributeFlags Para que NDIS não tentará tempo limite envia e solicita que NDIS mantém enfileirado para o intermediário driver.
A chamar para NdisMSetAttributes Ou NdisMSetAttributesEx Inclui um MiniportAdapterContext identificador para uma área contexto driver-allocated, no qual a miniporta mantém informações do estado tempo de execução. NDIS subseqüentemente passa o fornecido MiniportAdapterContext identificador como um parâmetro de entrada para outro MiniportaXXX funções.
Conseqüentemente, o MiniportInitialize função de um intermediário driver deve chamar NdisMSetAttributesEx Para configurar a MiniportAdapterContext identificador para uma área contexto adaptador driver-allocated por - virtual - rede. Caso contrário, seria NDIS transmitir um NULL MiniportAdapterContext identificador em suas chamadas subseqüentes para o intermediário é outro driver MiniportaXXX funções.
Após um chamar para NdisMRegisterIoPortRange, uma miniporta deve chamar o NdisRawXXX funções com o PortOffset valor retornado por NdisMRegisterIoPortRange Para se comunicar com seu adaptador rede. Driver adaptador de rede pode não mais chamar o NdisImmediateRead/WritePortXXX funções. Da mesma forma, após um chamar para NdisMMapIoSpace, um driver adaptador rede pode não chamar mais NdisImmediateRead/WriteSharedMemory.
Depois ele tenha solicitado nenhum barramento-relativo recursos hardware para seu adaptador rede no Registro, uma miniporta devem não chamar mais qualquer barramento - tipo - específico NdisReadXXX função.
Após MiniportInitialize Chamadas NdisMRegisterInterrupt, do o driver MiniportISR função é chamado Se adaptador rede do driver gera uma interrupção ou se qualquer outro dispositivo com o qual o adaptador rede compartilha um IRQ interrupções. NDIS não chamar o MiniportDisableInterrupt e MiniportEnableInterrupt funções, se o driver fornecido-los durante inicialização, portanto, é responsabilidade tais de uma miniporta para confirmação e Clear gera seu adaptador rede quaisquer interrupções. Se o adaptador rede compartilha um IRQ, o driver deve primeiro determinar se seu adaptador rede gerado a interrupção; Caso contrário, a miniporta deve retornar FALSE tão logo seja possível.
Se o adaptador rede não geram interrupções, MiniportInitialize deve chamar NdisMInitializeTimer Com uma pesquisa driver-fornecido MiniportTimer função e um ponteiro para driver-allocated memória para um objeto timer. Drivers de adaptadores rede que geram interrupções e intermediário drivers também podem configurar um ou mais MiniportTimer funções, cada qual com seu próprio objeto timer. MiniportInitialize Geralmente chamadas NdisMSetPeriodicTimer Para habilitar uma pesquisa MiniportTimer função; Chama um driver NdisMSetTimer Posteriormente quando as condições ocorrer, que o driver não-pesquisa MiniportTimer função deve ser executar.
Se o driver subseqüentemente indica recebe com NdisMIndicateReceivePacket, o MiniportInitialize função deve chamar NdisAllocatePacketPool e NdisAllocateBufferPool e salvar as alças retornadas por essas funções NDIS. Os pacotes que o driver subseqüentemente indica com NdisMIndicateReceivePacket deve fazer referência descritores que foram alocadas com NdisAllocatePacket e NdisAllocateBuffer.
Se driver funções Other Than MiniportISR Ou MiniportDisableInterrupt compartilhar recursos, MiniportInitialize deve chamar NdisAllocateSpinLock Para configurar qualquer bloqueio de rotação necessárias para sincronizar acessar tais um conjunto de recursos compartilhados, especialmente em um driver full-duplex ou em um driver com uma pesquisa MiniportTimer função em vez de uma ISR. Recursos compartilhados por outras funções driver com MiniportISR ou o objeto interrupção configurado quando MiniportInitialize Chamadas NdisMRegisterInterrupt e acessados subseqüentemente por chamado NdisMSynchronizeWithInterrupt Protege MiniportDisableInterrupt, tais como registradores adaptador de rede.
Do driver adaptador qualquer rede MiniportInitialize função deve testar adaptador de rede para ter certeza de que o hardware está configurado corretamente para executar operações subseqüentes rede E/S. Se ela deve esperar para estado muda para ocorrer no hardware, MiniportInitialize pode chamar NdisMSleep.
A menos que o MiniportInitialize função de um driver adaptador rede irá retornar um status de erro, ele deve chamar NdisMRegisterAdapterShutdownHandler Com um driver-fornecido MiniportShutdown função.
Se MiniportInitialize Haverá falha de inicialização, ele deve versão todos os recursos ele já tiver alocado antes de que retornará controle.
Se MiniportInitialize Retorna NDIS_STATUS_OPEN_ERROR, NDIS pode examinar o valor retornado no OpenErrorStatus Para obter mais informações sobre o erro.
Quando MiniportInitialize Retorna NDIS_STATUS_SUCCESS, a biblioteca NDIS chama do o driver MiniportQueryInformation função próximo.
Requirements
Header | externs.h |
Windows Embedded CE | Windows CE .NET 4.0 and later |
See Also
Reference
MiniportDisableInterrupt
MiniportEnableInterrupt
MiniportISR
MiniportQueryInformation
MiniportShutdown
MiniportTimer
NdisAllocateBuffer
NdisAllocateBufferPool
NdisAllocatePacket
NdisAllocatePacketPool
NdisAllocateSpinLock
NdisIMInitializeDeviceInstance
NdisIMRegisterLayeredMiniport
NdisMIndicateReceivePacket
NdisMInitializeTimer
NdisMMapIoSpace
NdisMRegisterAdapterShutdownHandler
NdisMRegisterInterrupt
NdisMRegisterIoPortRange
NdisMRegisterMiniport
NdisMSetAttributes
NdisMSetAttributesEx
NdisMSetPeriodicTimer
NdisMSetTimer
NdisMSleep
NdisMSynchronizeWithInterrupt
NdisOpenConfiguration
NdisReadConfiguration
ProtocolBindAdapter