NDK_FN_CONNECT función de devolución de llamada (ndkpi.h)

La función NdkConnect (NDK_FN_CONNECT) inicia una solicitud de conexión de NDK.

Sintaxis

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

Puntero a un objeto de conector NDK (NDK_CONNECTOR).

[in] pNdkQp

Puntero a un par de colas de NDK (QP) (NDK_QP) que se va a asociar a la conexión.

pSrcAddress

Una dirección de origen. Para AF_INET o AF_INET6 pSrcAddress es la dirección IP de origen y el puerto ND de origen.

[in] SrcAddressLength

Tamaño, en bytes, de datos de dirección de origen en el parámetro pSrcAddress .

[in] pDestAddress

Una dirección de destino. Para AF_INET o AF_INET6 pDestAddress es la dirección IP de destino y el puerto ND de origen .

[in] DestAddressLength

El tamaño, en bytes, de los datos de dirección de destino en el parámetro pDestAddress .

[in] InboundReadLimit

El número máximo proporcionado por el consumidor de las operaciones de lectura en curso entrantes para permitir en el QP. Si el proveedor subyacente tiene un valor MaxInboundReadLimit inferior en la estructura NDK_ADAPTER_INFO , el proveedor limitará el valor proporcionado por el consumidor al máximo del proveedor. Si el elemento del mismo nivel tiene un valor OutboundReadLimit inferior, el proveedor usará ese valor como inboundReadLimit efectivo. El consumidor puede recuperar inboundReadLimit efectivo llamando a la función NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA).

[in] OutboundReadLimit

El número máximo proporcionado por el consumidor de las operaciones de lectura en curso salientes para permitir en el QP. Si el proveedor subyacente tiene un valor MaxOutboundReadLimit inferior en la estructura NDK_ADAPTER_INFO , el proveedor limitará el valor proporcionado por el consumidor al máximo del proveedor. Si el elemento del mismo nivel tiene un valor InboundReadLimit inferior, el proveedor usará ese valor como outboundReadLimit efectivo. El consumidor puede recuperar outboundReadLimit efectivo llamando a la función NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA).

[_In_reads_bytes_opt_(PrivateDataLength)] pPrivateData

Puntero a datos privados que se envían con la solicitud de conexión.

[in] PrivateDataLength

Longitud, en bytes, de los datos privados que se proporcionan en el parámetro pPrivateData .

[in] RequestCompletion

Puntero a una rutina de devolución de llamada de finalización de solicitud NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION).

[in, optional] RequestContext

Valor de contexto que se va a pasar al parámetro Context de la función de devolución de llamada que se especifica en el parámetro RequestCompletion .

Valor devuelto

La función NdkConnect devuelve uno de los siguientes códigos NTSTATUS.

Código devuelto Descripción
STATUS_SUCCESS
La solicitud de conexión se completó correctamente.
STATUS_PENDING
La operación está pendiente y se completará más adelante. El controlador llamará a la función RequestCompletion (NDK_FN_REQUEST_COMPLETION) especificada para completar la operación pendiente.
STATUS_INSUFFICIENT_RESOURCES
Error en la solicitud debido a recursos insuficientes.
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
STATUS_NETWORK_UNREACHABLE
Error en la solicitud porque no se pudo acceder a la red remota. Se puede reintentar el intento de conexión.
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
STATUS_HOST_UNREACHABLE
Error en la solicitud porque no se pudo acceder al sistema host remoto. Se puede reintentar el intento de conexión.
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
STATUS_CONNECTION_REFUSED
Error en la solicitud porque el sistema remoto rechazó la solicitud de conexión. Esto puede deberse a la falta de agentes de escucha, límites de trabajo pendiente o al mismo nivel que rechaza activamente la solicitud de conexión. Se puede reintentar el intento de conexión.
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
STATUS_IO_TIMEOUT
Error en la solicitud porque se agota el tiempo de espera de la solicitud de conexión. Se puede reintentar el intento de conexión. Los proveedores de Network Direct seleccionan los valores de tiempo de espera para que coincidan con sus características de red respectivas.
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
STATUS_SHARING_VIOLATION
Error en la solicitud porque la dirección local especificada ya está en uso.
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
STATUS_INVALID_ADDRESS
Error en la solicitud porque la dirección local especificada no es una dirección válida para el adaptador.
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
STATUS_TOO_MANY_ADDRESSES
Error en la solicitud porque el consumidor especificó un número de puerto local de cero y el proveedor de Network Direct no pudo asignar un puerto desde el espacio de puertos efímeros (puertos 49152-65535).
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
STATUS_ADDRESS_ALREADY_EXISTS
Error en la solicitud porque ya existe una conexión con la combinación de dirección local, puerto local, dirección remota y puerto remoto.
Importante La solicitud puede producir un error en línea, así como de forma asincrónica con este código de estado.
 
Otros códigos de estado
Se produjo un error.

Comentarios

NdkConnect inicia una solicitud de conexión desde una dirección local a una dirección remota.

Requisitos

Requisito Value
Cliente mínimo compatible Ninguno compatible, compatible con NDIS 6.30 y versiones posteriores.
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Windows
Encabezado ndkpi.h (incluya Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Consulte también

Requisitos de duración del objeto NDKPI

NDK_ADAPTER_INFO

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH

NDK_FN_DISCONNECT

NDK_FN_GET_CONNECTION_DATA

NDK_FN_REQUEST_COMPLETION

NDK_QP