Função NdisCoOidRequest (ndis.h)
A função NdisCoOidRequest encaminha uma solicitação para drivers CoNDIS de destino para consultar ou definir informações especificadas por OID do driver de destino.
Sintaxe
NDIS_STATUS NdisCoOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in, optional] NDIS_HANDLE NdisAfHandle,
[in, optional] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, out] PNDIS_OID_REQUEST OidRequest
);
Parâmetros
[in] NdisBindingHandle
Um identificador que a função NdisOpenAdapterEx retornou que identifica o adaptador de destino para a associação.
[in, optional] NdisAfHandle
Um identificador que identifica a AF (família de endereços) que é compartilhada entre o cliente, o gerenciador de chamadas e o NDIS. Esse identificador foi obtido da seguinte maneira:
- Se o chamador for um cliente que está fazendo uma solicitação para o gerenciador de chamadas, o cliente originalmente obteve esse identificador de uma chamada bem-sucedida para o Função NdisClOpenAddressFamilyEx .
- Se o chamador for um gerenciador de chamadas autônomo ou mcm (gerenciador de chamadas de miniporto) que está fazendo uma solicitação a um cliente, o gerenciador de chamadas ou MCM obteve originalmente esse identificador como um parâmetro de entrada para sua função ProtocolCmOpenAf .
[in, optional] NdisVcHandle
Um identificador que identifica a VC (conexão virtual) para a qual o chamador está solicitando ou definindo informações, se a solicitação for específica de VC. Caso contrário, se esse parâmetro for NULL, a solicitação não será específica de VC. Para qualquer solicitação específica de VC, o chamador originalmente obteve esse identificador quando criou a VC com a função NdisCoCreateVc ou como um parâmetro de entrada para sua função ProtocolCoCreateVc . Para uma solicitação específica de VC que é direcionada para o driver de miniporto subjacente, esse identificador identifica a VC, enquanto NdisAfHandle e NdisPartyHandle são NULL.
[in, optional] NdisPartyHandle
Um identificador que identifica a parte em uma VC de vários pontos para a qual o chamador está solicitando ou definindo informações, se a solicitação for específica da parte. Caso contrário, se esse parâmetro for NULL, a solicitação não será específica da parte. Para qualquer solicitação específica de parte, um cliente obteve originalmente esse identificador de uma chamada bem-sucedida para a função NdisClAddParty ou a função NdisClMakeCall ou o gerenciador de chamadas obteve esse identificador como um parâmetro de entrada para sua função ProtocolCmAddParty . Se NdisAfHandle for NULL, NdisPartyHandle também será NULL.
[in, out] OidRequest
Um ponteiro para uma estrutura NDIS_OID_REQUEST que especifica a operação solicitada com um determinado código OID_XXX para consultar ou definir informações.
Retornar valor
O driver de destino determina qual código NDIS_STATUS_XXXretornado por NdisCoOidRequest , geralmente um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
A operação de solicitação foi concluída com êxito. |
|
A solicitação está sendo tratada de forma assíncrona e o NDIS chamará o chamador Função ProtocolCoOidRequestComplete quando a solicitação é concluída. |
|
O código OID_XXX especificado no membro Oid da estrutura NDIS_OID_REQUEST no parâmetro OidRequest é inválido ou sem suporte pelo driver subjacente. |
|
O valor especificado no membro InformationBufferLength do buffer estruturado NDIS_OID_REQUEST em OidRequest não corresponde aos requisitos do código OID_XXX fornecido. Se o buffer de informações for muito pequeno, o membro BytesNeeded de NDIS_OID_REQUEST conterá o valor correto para InformationBufferLength, quando NdisCoOidRequest retornar. |
|
Os dados fornecidos no InformationBuffer na estrutura de NDIS_OID_REQUEST fornecida são inválidos para o código OID_XXX fornecido. |
|
O driver subjacente não dá suporte à operação solicitada. |
|
A solicitação não pôde ser atendida devido a uma escassez de recursos. Normalmente, esse valor retornado indica que uma tentativa de alocar memória não foi bem-sucedida, mas não indica necessariamente que a mesma solicitação, se enviada posteriormente, falhará pelo mesmo motivo. |
|
O driver subjacente tentou a operação solicitada, geralmente uma solicitação definida, mas a operação falhou. Por exemplo, uma tentativa de definir muitos endereços multicast pode fazer com que NdisCoOidRequest retorne esse valor. |
|
O driver subjacente falhou na operação solicitada porque uma operação de fechamento está em andamento. |
|
O driver de miniporto subjacente não pode atender à solicitação no momento porque está redefinindo a NIC afetada no momento. A função ProtocolStatusEx do chamador foi ou será chamada com NDIS_STATUS_RESET_START para indicar que uma redefinição está em andamento. Esse valor retornado não indica necessariamente que a mesma solicitação, se enviada posteriormente, falhará pelo mesmo motivo. |
|
Esse valor geralmente é um valor padrão não específico retornado quando nenhum dos NDIS_STATUS_XXX mais específicos fez com que o driver subjacente falhasse na solicitação. |
|
O driver de miniporta parou de processar a solicitação. Por exemplo, o NDIS chamou miniportresetEx de um miniportor subjacente ou Função MiniportCancelOidRequest . |
Comentários
Clientes coNDIS e gerenciadores de chamadas autônomos podem chamar a função NdisCoOidRequest para enviar uma solicitação OID para consultar ou definir informações especificadas por OID em um driver de destino. O driver de destino pode ser outro driver de protocolo CoNDIS ou um driver subjacente.
O chamador de NdisCoOidRequest deve alocar memória suficiente para manter o buffer de informações associado ao OID especificado. O chamador também deve alocar e configurar o buffer em OidRequest antes de chamar NdisCoOidRequest. Ambos os buffers devem ser alocados do pool nãopagado porque o driver de destino pode ser executado no IRQL gerado enquanto processa a solicitação.
Alguns erros retornados por NdisCoOidRequest são recuperáveis, incluindo o seguinte:
- NDIS_STATUS_INVALID_OID
- NDIS_STATUS_INVALID_LENGTH
- NDIS_STATUS_BUFFER_TOO_SHORT
- NDIS_STATUS_INVALID_DATA
- NDIS_STATUS_RESOURCES
- NDIS_STATUS_RESET_IN_PROGRESS
Dependendo do valor do parâmetro NdisAfHandle , clientes e gerenciadores de chamadas autônomos chamam NdisCoOidRequest para se comunicar entre si ou com o driver de miniporto orientado a conexões subjacente.
Se um driver passar NULL para NdisVcHandle, a solicitação será global por natureza, independentemente de a solicitação ser direcionada ao cliente, ao gerenciador de chamadas ou ao driver de miniporte. Por exemplo, se o chamador fornecer um valor não NULL para NdisVcHandle, uma solicitação OID OID_GEN_CO_RCV_CRC_ERROR para um driver de miniporto orientado a conexão subjacente retornará o número de erros de CRC (marcar de redundância cíclica) que foram encontrados para uma VC específica. Para a mesma solicitação com NULL para NdisVcHandle, o driver de miniporto subjacente retorna o número total de erros de CRC encontrados para todos os VCs.
Os clientes e os gerenciadores de chamadas autônomos devem chamar a função NdisOidRequest para todos os OIDs que não são orientados à conexão, como aqueles que são retornados em uma consulta OID_GEN_SUPPORTED_LIST , que normalmente é emitida durante a inicialização depois que o driver de protocolo se vincula ao driver NIC subjacente.
Se NdisCoOidRequest retornar NDIS_STATUS_PENDING, a solicitação será tratada de forma assíncrona e o NDIS chamará o do driver Função ProtocolCoOidRequestComplete quando a solicitação é concluída. Se NdisCoOidRequest retornar qualquer outra status, a solicitação será concluída quando NdisCoOidRequest retornar e o NDIS não chamar ProtocolCoOidRequestComplete.
Para obter mais informações sobre os conjuntos de OIDs definidos para uso com NdisCoOidRequest e NdisOidRequest, consulte OIDs do NDIS.
Somente clientes e gerenciadores de chamadas autônomos, que são drivers de protocolo, podem chamar NdisCoOidRequest. Os MCMs chamam a função NdisMCmOidRequest para se comunicar com seus clientes.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte no NDIS 6.0 e posterior. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | ndis.h (inclua Ndis.h) |
Biblioteca | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade da DDI | Irql_Connection_Function(ndis) |