Compartilhar via


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

A função NdkConnect (NDK_FN_CONNECT) inicia uma solicitação de conexão NDK.

Sintaxe

NDK_FN_CONNECT NdkFnConnect;

NTSTATUS NdkFnConnect(
  [in]                                      NDK_CONNECTOR *pNdkConnector,
  [in]                                      NDK_QP *pNdkQp,
                                            const PSOCKADDR pSrcAddress,
  [in]                                      ULONG SrcAddressLength,
  [in]                                      const PSOCKADDR pDestAddress,
  [in]                                      ULONG DestAddressLength,
  [in]                                      ULONG InboundReadLimit,
  [in]                                      ULONG OutboundReadLimit,
  [_In_reads_bytes_opt_(PrivateDataLength)] const PVOID pPrivateData,
  [in]                                      ULONG PrivateDataLength,
  [in]                                      NDK_FN_REQUEST_COMPLETION RequestCompletion,
  [in, optional]                            PVOID RequestContext
)
{...}

Parâmetros

[in] pNdkConnector

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

[in] pNdkQp

Um ponteiro para um objeto QP (par de fila) NDK (NDK_QP) a ser associado à conexão.

pSrcAddress

Um endereço de origem. Para AF_INET ou AF_INET6 pSrcAddress é o endereço IP de origem e a porta ND de origem.

[in] SrcAddressLength

O tamanho, em bytes, dos dados de endereço de origem no parâmetro pSrcAddress .

[in] pDestAddress

Um endereço de destino. Para AF_INET ou AF_INET6 pDestAddress é o endereço IP de destino e a porta ND de origem .

[in] DestAddressLength

O tamanho, em bytes, dos dados de endereço de destino no parâmetro pDestAddress .

[in] InboundReadLimit

O número máximo de operações de leitura em andamento fornecidas pelo consumidor para permitir no QP. Se o provedor subjacente tiver um valor MaxInboundReadLimit menor na estrutura NDK_ADAPTER_INFO , o provedor limitará o valor fornecido pelo consumidor ao máximo do provedor. Se o par tiver um valor OutboundReadLimit mais baixo, o provedor usará esse valor como o InboundReadLimit efetivo. O consumidor pode recuperar o InboundReadLimit efetivo chamando a função NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA).

[in] OutboundReadLimit

O número máximo fornecido pelo consumidor de operações de leitura em andamento de saída para permitir no QP. Se o provedor subjacente tiver um valor MaxOutboundReadLimit menor na estrutura NDK_ADAPTER_INFO , o provedor limitará o valor fornecido pelo consumidor ao máximo do provedor. Se o par tiver um InboundReadLimit menor, o provedor usará esse valor como o OutboundReadLimit efetivo. O consumidor pode recuperar o OutboundReadLimit efetivo chamando a função NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA).

[_In_reads_bytes_opt_(PrivateDataLength)] pPrivateData

Um ponteiro para dados privados enviados com a solicitação de conexão.

[in] PrivateDataLength

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

[in] RequestCompletion

Um ponteiro para uma rotina de retorno de chamada de conclusão de solicitação NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION).

[in, optional] RequestContext

Um valor de contexto a ser passado para o parâmetro Context da função de retorno de chamada especificada no parâmetro RequestCompletion .

Retornar valor

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

Código de retorno Descrição
STATUS_SUCCESS
A solicitação de conexão foi concluída com êxito.
STATUS_PENDING
A operação está pendente e será concluída posteriormente. O driver chamará a função RequestCompletion (NDK_FN_REQUEST_COMPLETION) especificada para concluir a operação pendente.
STATUS_INSUFFICIENT_RESOURCES
Falha na solicitação devido a recursos insuficientes.
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
STATUS_NETWORK_UNREACHABLE
A solicitação falhou porque a rede remota não estava acessível. A tentativa de conexão pode ser repetida.
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
STATUS_HOST_UNREACHABLE
A solicitação falhou porque o sistema de host remoto não estava acessível. A tentativa de conexão pode ser repetida.
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
STATUS_CONNECTION_REFUSED
A solicitação falhou porque o sistema remoto recusou a solicitação de conexão. Isso pode ser devido à falta de ouvinte, limites de lista de pendências ou ao par rejeitando ativamente a solicitação de conexão. A tentativa de conexão pode ser repetida.
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
STATUS_IO_TIMEOUT
A solicitação falhou porque a solicitação de conexão atingiu o tempo limite. A tentativa de conexão pode ser repetida. Os valores de tempo limite são selecionados por provedores diretos de rede para corresponder às respectivas características de rede.
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
STATUS_SHARING_VIOLATION
A solicitação falhou porque o endereço local especificado já está em uso.
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
STATUS_INVALID_ADDRESS
A solicitação falhou porque o endereço local especificado não é um endereço válido para o adaptador.
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
STATUS_TOO_MANY_ADDRESSES
A solicitação falhou porque o consumidor especificou um número de porta local de zero e o provedor direto de rede não pôde alocar uma porta do espaço de porta efêmero (portas 49152-65535).
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
STATUS_ADDRESS_ALREADY_EXISTS
A solicitação falhou porque já existe uma conexão com a combinação de endereço local, porta local, endereço remoto e porta remota.
Importante A solicitação pode falhar embutida, bem como de forma assíncrona com esse código status.
 
Outros códigos status
Ocorreu um erro.

Comentários

O NdkConnect inicia uma solicitação de conexão de um endereço local para um endereço remoto.

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

Requisitos de tempo de vida do objeto NDKPI

NDK_ADAPTER_INFO

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH

NDK_FN_DISCONNECT

NDK_FN_GET_CONNECTION_DATA

NDK_FN_REQUEST_COMPLETION

NDK_QP