NDK_FN_GET_CONNECTION_DATA função de retorno de chamada (ndkpi.h)

A função NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA) obtém valores de limite de leitura e os dados privados enviados pelo par.

Sintaxe

NDK_FN_GET_CONNECTION_DATA NdkFnGetConnectionData;

NTSTATUS NdkFnGetConnectionData(
  [in]            NDK_CONNECTOR *pNdkConnector,
  [out, optional] ULONG *pInboundReadLimit,
  [out, optional] ULONG *pOutboundReadLimit,
                  PVOID pPrivateData,
                  ULONG *pPrivateDataLength
)
{...}

Parâmetros

[in] pNdkConnector

Um ponteiro para um objeto de conector NDK (NDK_CONNECTOR).

[out, optional] pInboundReadLimit

O número máximo de operações de leitura em andamento recebidas para permitir no QP é retornado nesse local.

[out, optional] pOutboundReadLimit

O número máximo de operações de leitura em andamento de saída para permitir no QP é retornado nesse local.

pPrivateData

Um ponteiro para dados privados retornados.

pPrivateDataLength

O comprimento, em bytes, dos dados privados fornecidos no parâmetro pPrivateData .

Nota O valor de saída não indica o comprimento real dos dados privados armazenados no buffer. Os consumidores de NDK devem negociar o formato e o comprimento dos dados privados reais. Para obter mais informações sobre dados privados, consulte a seção Comentários.
 

Retornar valor

A função NdkGetConnectionData retorna um dos seguintes códigos NTSTATUS.

Código de retorno Descrição
STATUS_SUCCESS
A operação foi concluída com sucesso.
STATUS_BUFFER_TOO_SMALL
O valor no parâmetro *pPrivateDataLength especificou um tamanho de buffer muito pequeno para manter os dados privados de conexão. *pPrivateDataLength é atualizado com o tamanho necessário.
Outros códigos status
Ocorreu um erro.

Comentários

A função NdkGetConnectionData obtém os dados privados enviados pelo par com solicitações de conexão, aceita ou rejeição e os valores efetivos de limite de leitura de entrada e saída. Esses valores são derivados dos valores solicitados dos pares locais e remotos e dos limites máximos do provedor.

Para acessar os dados privados e os valores efetivos de IRD (limite de leitura de entrada) e ORD (limite de leitura de saída) do lado ativo, um consumidor do NDK pode chamar NdkGetConnectionData para um objeto de conector que foi passado para a função NDK_FN_CONNECT_EVENT_CALLBACK .

Para acessar os dados privados e os valores efetivos de IRD e ORD do lado passivo, o consumidor pode chamar NdkGetConnectionData para um objeto de conector para o qual NDK_FN_CONNECT ou NDK_FN_CONNECT_WITH_SHARED_ENDPOINT concluído com êxito Um consumidor do NDK não chamará essa função depois de chamar a função NDK_FN_ACCEPT no lado passivo ou na função NDK_FN_COMPLETE_CONNECT no lado ativo.

Se o parâmetro pPrivateData for NULL e *pPrivateDataLength for zero, um provedor de NDK deverá retornar STATUS_SUCCESS e armazenar o tamanho necessário do buffer de dados privado (RDS) em *pPrivateDataLength.

Nota O RDS (tamanho do buffer de dados privado) necessário não indica que o par enviou tantos dados privados. O consumidor do NDK deve, em ambas as extremidades, ter um esquema comum para permitir que a extremidade receptora determine se há dados privados ou não no buffer de dados privados. O RDS pode ser diferente para cada conexão.
 
Se pPrivateData for NULL e *pPrivateDataLength for maior que zero, essa será uma solicitação inválida. Um consumidor nunca deve fazer isso.

Se pPrivateData não for NULL, o provedor deverá copiar os dados privados para o buffer em pPrivateData até o menor de *pPrivateDataLength ou RDS em bytes.

Se *pPrivateDataLength for maior ou igual a RDS, o provedor deverá retornar STATUS_SUCCESS. Caso contrário, o provedor deverá retornar STATUS_BUFFER_TOO_SMALL. Em ambos os casos, o provedor deve armazenar o RDS em *pPrivateDataLength antes de retornar.

Requisitos

Requisito Valor
Cliente mínimo com suporte Nenhum com suporte, com suporte no NDIS 6.30 e posterior.
Servidor mínimo com suporte Windows Server 2012
Plataforma de Destino Windows
Cabeçalho ndkpi.h (inclua Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Confira também

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH