Compartilhar via


função MINIPORT_SYNCHRONOUS_OID_REQUEST (ndis.h)

O NDIS chama a função de retorno de chamada MiniportSynchronousOidRequest de um driver de miniport para emitir uma solicitação de OID síncrona.

Sintaxe

NDIS_STATUS MINIPORT_SYNCHRONOUS_OID_REQUEST(
  [in] NDIS_HANDLE      MiniportAdapterContext,
  [in] NDIS_OID_REQUEST *OidRequest
);

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.

[in] OidRequest

Um ponteiro para uma estrutura de NDIS_OID_REQUEST que contém o buffer e o pacote de solicitação para o driver de miniporto a ser manipulado. Dependendo da solicitação, o driver retorna informações solicitadas na estrutura fornecida.

Valor de retorno

miniportSynchronousOidRequest pode retornar um dos seguintes valores de status:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
O driver de miniporte definiu ou obteve os dados conforme solicitado.
NDIS_STATUS_INVALID_OID
A solicitação que OidRequest especificada era inválida ou não reconhecida.
NDIS_STATUS_NOT_SUPPORTED
A solicitação que OidRequest especificada foi reconhecida, mas o driver de miniporto não dá suporte a ele.
NDIS_STATUS_BUFFER_TOO_SHORT
O buffer que OidRequest suprimentos era muito pequeno para armazenar os dados solicitados.
NDIS_STATUS_INVALID_LENGTH
O valor especificado no InformationBufferLength membro da estrutura NDIS_OID_REQUEST em OidRequest está incorreto para o código dexxx OID_ especificado.
NDIS_STATUS_INVALID_DATA
Um ou mais dos parâmetros especificados para a solicitação em OidRequest eram inválidos.
NDIS_STATUS_INDICATION_REQUIRED
O driver de miniporto fornecerá um status de conclusão OID com uma indicação de status subsequente. Um driver de miniporto não pode retornar NDIS_STATUS_INDICATION_REQUIRED a menos que o OID específico o permita. Para determinar se esse status é permitido, consulte a página de referência OID. Para obter mais informações sobre NDIS_STATUS_INDICATION_REQUIRED, consulte NDIS_OID_REQUEST e NDIS_STATUS_INDICATION.
NDIS_STATUS_NOT_ACCEPTED
Depois de chamar o função MiniportDevicePnPEventNotify para indicar uma remoção surpresa, o NDIS chamou a função miniportHaltEx do driver. Se o driver recebeu solicitações OID antes das chamadas do NDIS MiniportHaltEx, ele deverá concluir imediatamente essas solicitações com um valor de status de NDIS_STATUS_NOT_ACCEPTED.

Os drivers de miniporto nem sempre são obrigados a retornar NDIS_STATUS_NOT_ACCEPTED para todos os OIDs após uma remoção surpresa, mas isso ajuda a explicar por que a chamada falhou.

Observações

miniportSynchronousOidRequest é uma função opcional. Um driver de miniporto registrará essa função se ela manipular solicitações OID síncronas. O driver especifica o ponto de entrada MiniportSynchronousOidRequest quando chama a função NdisMRegisterMiniportDriver, usando o membro SynchronousOidRequestHandler da estrutura NDIS_MINIPORT_DRIVER_CHARACTERISTICS.

Os drivers de miniporto não devem retornar NDIS_STATUS_PENDING ou NDIS_STATUS_REQUEST_ABORTED de MiniportSynchronousOidRequest. Solicitações OID síncronas não podem ser pendentes ou canceladas.

Os drivers de miniport podem retornar NDIS_STATUS_NOT_ACCEPTED após chamadas NDIS MiniportDevicePnPEventNotify para notificar o driver sobre a remoção surpresa do dispositivo. No entanto, os drivers de miniporto ainda poderão concluir a solicitação de OID com um código de status diferente, se for possível fazer isso. Para obter mais informações, consulte a documentação específica de cada OID.

Espera-se que os drivers de miniporto preencham rapidamente solicitações OID síncronas sem bloquear, aguardar ou dormir. Solicitações OID síncronas são usadas apenas para operações de baixa latência, e os drivers de miniporto devem se esforçar para concluí-las dentro de vários milissegundos. A maioria das solicitações de OID é entregue a MiniportOidRequest, que tem permissão para aguardar ou aguardar por durações mais longas.

O NDIS não serializa solicitações OID síncronas entre si, em relação a outras solicitações de OID, em MiniportPause, em miniportResetExou em transições de energia. É responsabilidade do driver de miniporto implementar sua própria sincronização e falhar nas solicitações que são entregues em um momento em que a solicitação não pode ser tratada com êxito.

O NDIS serializa solicitações OID síncronas em MiniportHaltEx; O NDIS garante que nenhuma solicitação OID síncrona estará ativa quando miniportHaltEx for invocado.

Os drivers de miniport que implementam a Suspensão Seletiva do NDIS são incompatíveis com OIDs síncronos e não devem registrar um manipulador de MiniportSynchronousOidRequest.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10, versão 1709
da Plataforma de Destino Windows
cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL

Consulte também

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportPause

MiniportResetEx

NDIS_MINIPORT_DRIVER_CHARACTERISTICS

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMRegisterMiniportDriver

interface de solicitação OID síncrona no NDIS 6.80