MINIPORT_RESTART função de retorno de chamada (ndis.h)
A função MiniportRestart inicia uma solicitação de reinicialização para um adaptador de miniporto que está pausado.
Sintaxe
MINIPORT_RESTART MiniportRestart;
NDIS_STATUS MiniportRestart(
[in] NDIS_HANDLE MiniportAdapterContext,
PNDIS_MINIPORT_RESTART_PARAMETERS RestartParameters
)
{...}
Parâmetros
[in] MiniportAdapterContext
Um identificador para uma área de contexto que o driver de miniporto alocou em sua função MiniportInitializeEx. O driver de miniporto usa essa área de contexto para manter informações de estado para um adaptador de miniporto.
RestartParameters
Um ponteiro para um NDIS_MINIPORT_RESTART_PARAMETERS estrutura que define os parâmetros de reinicialização para o adaptador de miniporto.
Valor de retorno
MiniportRestart retorna um dos seguintes valores de status:
Código de retorno | Descrição |
---|---|
|
MiniportRestart reiniciou com êxito o fluxo de dados de rede por meio do adaptador de miniporto. |
|
miniportRestart não concluiu a operação de reinicialização e a operação será concluída de forma assíncrona. O driver de miniporto deve chamar a função NdisMRestartComplete quando a operação for concluída. |
|
|
|
Nenhum dos valores de status anteriores se aplica. Nessa situação, o driver deve chamar a função NdisWriteErrorLogEntry com parâmetros que especificam o motivo da falha. |
Observações
Um driver especifica o miniportRestart ponto de entrada quando ele chama o função NdisMRegisterMiniportDriver.
O adaptador de miniporto especificado pelo parâmetro MiniportAdapterContext insere o estado Reiniciando quando o NDIS chama miniportRestart.
Quando o NDIS chama MiniportRestart, um driver de miniporto:
- Deve concluir todas as tarefas necessárias para retomar as operações de envio e recebimento.
- Opcionalmente, modifica os atributos de reinicialização especificados no RestartAttributes membro do NDIS_MINIPORT_RESTART_PARAMETERS estrutura. Se o ponteiro em RestartAttributes for NULL, o driver de miniporto não deverá modificar ou adicionar à lista de atributos de reinicialização. Se o ponteiro em RestartAttributes não forNULL, ele apontará para uma estrutura NDIS_RESTART_ATTRIBUTES. Se um driver de miniporto não for reiniciado, ele não deverá modificar nenhum atributo.
- Pode fornecer indicações de status com o função NdisMIndicateStatusEx.
- Deve lidar com solicitações de status na função MiniportOidRequest.
- Pode adicionar novos atributos específicos à mídia à lista de atributos de reinicialização. Nessa situação, o driver de miniporto deve alocar um novo NDIS_RESTART_ATTRIBUTES estrutura, por exemplo, com o função NdisAllocateMemoryWithTagPriority e fornecer espaço de memória para os novos atributos. Depois de propagar os atributos de reinicialização para drivers em excesso, o NDIS libera a memória de atributos para os drivers de miniporto.
- Pode modificar os atributos específicos da mídia na lista de atributos de reinicialização. Se o driver de miniporto exigir mais espaço de memória, ele poderá liberar uma estrutura de NDIS_RESTART_ATTRIBUTES com a função NdisFreeMemory e alocar uma nova estrutura para conter as informações modificadas. Depois de propagar os atributos de reinicialização para drivers em excesso, o NDIS libera a memória de atributos para os drivers de miniporto.
- Pode modificar qualquer campo no NDIS_RESTART_GENERAL_ATTRIBUTES estrutura. Quando o NDIS fornece um ponteiro deNULL não no RestartAttributes membro do NDIS_MINIPORT_RESTART_PARAMETERS estrutura, a lista de atributos contém uma entrada na qual o membro Oid na estrutura NDIS_RESTART_ATTRIBUTES é OID_GEN_MINIPORT_RESTART_ATTRIBUTES e o membro de Dados contém uma estrutura de NDIS_RESTART_GENERAL_ATTRIBUTES.
- Deve ter certeza de que o NDIS_RESTART_GENERAL_ATTRIBUTES estrutura contém as informações corretas. Para verificar se a estrutura de NDIS_RESTART_GENERAL_ATTRIBUTES contém as informações necessárias, primeiro você deve determinar a versão da estrutura verificando o membro revisão de na estrutura de NDIS_OBJECT_HEADER especificada no membro cabeçalho da estrutura NDIS_RESTART_GENERAL_ATTRIBUTES.
Depois que o driver de miniporto reiniciar com êxito as operações de envio e recebimento, ele deverá concluir a operação de reinicialização. Se o driver retornar NDIS_STATUS_SUCCESS de miniportRestart, a operação de reinicialização será concluída. Se o driver retornar NDIS_STATUS_PENDING, ele poderá continuar as operações de reinicialização. A operação de reinicialização é concluída depois que o driver chama a função NdisMRestartComplete. Depois que a operação de reinicialização for concluída, o adaptador de miniporto estará no estado Executando.
O driver de miniporto pode retomar indicando pacotes recebidos para o adaptador de miniporto imediatamente após chamadas NDIS MiniportRestart e antes que o driver chame NdisMRestartComplete. O driver de miniporto deve estar pronto para aceitar solicitações de envio depois que o driver concluir a solicitação de reinicialização.
Se o driver de miniporto não reiniciar as operações de envio e recebimento, o driver deverá retornar um status de falha apropriado de miniportRestart. Nessa situação, o driver deve interromper as operações de envio ou recebimento iniciadas e, em seguida, retornar ao estado de pausado.
Chamadas NDIS MiniportRestart no IRQL = PASSIVE_LEVEL.
exemplos de
Para definir uma função MiniportRestart, primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda Análise de Código para Drivers, SDV (Verificador de Driver Estático) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.Por exemplo, para definir uma função MiniportRestart chamada "MyRestart", use o tipo MINIPORT_RESTART conforme mostrado neste exemplo de código:
MINIPORT_RESTART MyRestart;
Em seguida, implemente sua função da seguinte maneira:
_Use_decl_annotations_
NDIS_STATUS
MyRestart(
NDIS_HANDLE MiniportAdapterContext,
PNDIS_MINIPORT_RESTART_PARAMETERS RestartParameters
)
{...}
O tipo de função MINIPORT_RESTART é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função MINIPORT_RESTART no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.
Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Com suporte no NDIS 6.0 e posterior. |
da Plataforma de Destino | Windows |
cabeçalho | ndis.h (inclua Ndis.h) |
IRQL | PASSIVE_LEVEL |