Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O OID_PNP_SET_POWER OID notifica um driver de miniporto de que seu adaptador de rede subjacente fará a transição para o estado de energia do dispositivo especificado no doInformationBuffer. O estado de energia do dispositivo é especificado como um dos seguintes valores de NDIS_DEVICE_POWER_STATE:
- NdisDeviceStateD0
- NdisDeviceStateD1
- NdisDeviceStateD2
- NdisDeviceStateD3
Uma solicitação OID_PNP_SET_POWER pode ser precedida por uma solicitação de OID_PNP_QUERY_POWER.
A partir do NDIS 6.30, o NDIS não pausará e reiniciará os drivers NDIS na pilha de driver durante as transições de estado de energia se as seguintes condições forem verdadeiras:
O driver de miniporto subjacente define o sinalizador NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND na estrutura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES. O driver passa um ponteiro para essa estrutura em sua chamada para a função NdisMSetMiniportAttributes.
Todos os drivers de filtro que estão anexados ao driver de miniporto dão suporte ao NDIS 6.30 ou versões posteriores do NDIS.
Todos os drivers de protocolo que estão associados ao driver de miniporto dão suporte ao NDIS 6.30 ou versões posteriores do NDIS.
Transição para um estado de Low-Power (D1-D3)
Quando o driver de miniporto lida com uma solicitação definida de OID_PNP_SET_POWER para fazer a transição para um estado de baixa potência, ele deve fazer o seguinte:
Prepare totalmente o adaptador de rede para o estado de energia do dispositivo de rede indicado. A tarefa executada pelo driver de miniporto para fazer isso depende do dispositivo.
Aguarde as chamadas para a função NdisMIndicateReceiveNetBufferLists retornar.
Aguarde a conclusão das solicitações de envio processadas pelo adaptador de rede. Depois de concluído, o driver de miniporto deve chamar a função NdisMSendNetBufferListsComplete. O driver deve definir o membro status em cada estrutura NET_BUFFER_LIST com o valor NDIS_STATUS_ xxx apropriado.
Conclua todas as solicitações de envio pendentes chamando a função NdisMSendNetBufferListsComplete. O driver deve definir o membro status em cada estrutura NET_BUFFER_LIST para NDIS_STATUS_LOW_POWER_STATE.
Rejeite todas as novas solicitações de envio feitas à funçãoMiniportSendNetBufferLists imediatamente chamando a funçãoNdisMSendNetBufferListsComplete. O driver deve definir o membro status em cada estrutura NET_BUFFER_LIST para NDIS_STATUS_LOW_POWER_STATE.
O driver de miniporto que dá suporte ao NDIS 6.30 e versões posteriores do NDIS também deve fazer o seguinte:
Não aguarde a conclusão de indicações de recebimento pendentes por meio de chamadas para sua funçãoMiniportReturnNetBufferLists. Além disso, o driver de miniporto não deve alterar a estrutura de NET_BUFFER_LIST ou os dados para quaisquer pacotes que estejam aguardando a conclusão.
Manipule a solicitação OID_PNP_SET_POWER para um estado de baixa potência dos estados do adaptador pausado ou em execução. Para obter mais informações sobre esses estados, consulte Miniport Adapter States and Operations.
Antes que o adaptador de rede faça a transição para o estado D3, o driver de miniporto deve desativar tudo sob o controle do driver de miniporto executando as seguintes tarefas:
Desabilite as interrupções e o mecanismo de DMA no adaptador de rede.
Interrompa o mecanismo de recebimento no adaptador de rede.
Não desaloque nem modifique os descritores de recebimento e os buffers de pacote associados a indicações de recebimento pendentes.
Cancele todos os temporizadores do NDIS.
Observação Um driver de miniporto não pode acessar o adaptador de rede depois que o driver de ônibus fez a transição do adaptador de rede para o estado D3.
Transição para o estado de Full-Power (D0)
Quando o driver de miniporto lida com uma solicitação definida de OID_PNP_SET_POWER para fazer a transição para um estado de energia total, ele deve restaurar o mecanismo de recebimento do adaptador de rede para o mesmo estado em que o mecanismo de recebimento estava antes de o adaptador ser transferido para o estado de baixa potência.
Observação O driver de miniporto não deve acessar nem alterar os buffers de recebimento associados a indicações de recebimento pendentes.
O NDIS chama a funçãominiportRestartdo driver de miniportuário após a transição para um estado de potência total somente se o NDIS chamar a função MiniportPause do driver antes da transição para um estado de baixa potência.
Observação Um driver intermediário sempre deve retornar NDIS_STATUS_SUCCESS a uma consulta de OID_PNP_SET_POWER. Um driver intermediário nunca deve propagar uma solicitação de OID_PNP_SET_POWER para um driver de miniporto subjacente.
Retornar códigos de status
A funçãoMiniportOidRequestdo driver de miniporto retorna um dos seguintes valores para esta solicitação:
| Prazo | Descrição |
|---|---|
NDIS_STATUS_SUCCESS |
O driver de miniporto concluiu a solicitação com êxito. |
NDIS_STATUS_PENDING |
O driver de miniporto concluirá a solicitação de forma assíncrona. Depois que o driver de miniporto concluir todo o processamento, ele deverá ter êxito na solicitação chamando a funçãoNdisMOidRequestComplete, passando NDIS_STATUS_SUCCESS para o parâmetro status. |
NDIS_STATUS_NOT_ACCEPTED |
O driver de miniporto está sendo redefinido. |
Requisitos
Versão |
Com suporte para NDIS 5.1 e NDIS 6.0 e posterior. |
Cabeçalho |
Ntddndis.h (inclua Ndis.h) |
Consulte também
NdisMIndicateReceiveNetBufferLists