Compartir a través de


PFN_WSK_DISCONNECT función de devolución de llamada (wsk.h)

La función WskDisconnect desconecta un socket orientado a la conexión o secuencia de una dirección de transporte remota.

Sintaxis

PFN_WSK_DISCONNECT PfnWskDisconnect;

NTSTATUS PfnWskDisconnect(
  [in]           PWSK_SOCKET Socket,
  [in, optional] PWSK_BUF Buffer,
  [in]           ULONG Flags,
  [in, out]      PIRP Irp
)
{...}

Parámetros

[in] Socket

Puntero a una estructura WSK_SOCKET que especifica el objeto de socket para el socket que se está desconectando.

[in, optional] Buffer

Puntero a una estructura WSK_BUF. Esta estructura describe un búfer de datos que contiene los datos que el subsistema de WSK transmite a la dirección de transporte remota antes de desconectar el socket. Si no hay dichos datos que se van a transmitir, la aplicación WSK establece este puntero en NULL. Si se especifica WSK_FLAG_ABORTIVE en el parámetro Flags de, el parámetro buffer de debe ser null.

[in] Flags

Valor de ULONG que contiene la marca siguiente o cero:

WSK_FLAG_ABORTIVE

Dirige el subsistema WSK para realizar una desconexión abortiva del socket. Si una aplicación WSK no especifica esta marca, el subsistema WSK realizará una desconexión correcta del socket.

[in, out] Irp

Puntero a un IRP asignado por el autor de la llamada que usa el subsistema WSK para completar la operación de desconexión de forma asincrónica. Para obtener más información sobre el uso de IRP con funciones WSK, consulte Uso de IRP con funciones del kernel de Winsock.

Valor devuelto

WskDisconnect devuelve uno de los siguientes códigos NTSTATUS:

Código devuelto Descripción
STATUS_SUCCESS
El socket se desconectaba correctamente de la dirección de transporte remota. El IRP se completará con el estado correcto.
STATUS_PENDING
El subsistema WSK no pudo desconectar el socket inmediatamente. El subsistema WSK completará el IRP después de desconectar el socket de la dirección de transporte remota. El estado de la operación de desconexión se devolverá en el campo IoStatus.Status del IRP.
STATUS_FILE_FORCED_CLOSED
El socket ya no es funcional. El IRP se completará con el estado de error. La aplicación WSK debe llamar a la función WskCloseSocket para cerrar el socket lo antes posible.
otros códigos de estado
Error. El IRP se completará con el estado de error.

Observaciones

Una aplicación WSK puede llamar a la WskDisconnect función solo en un socket orientado a la conexión o secuencia que anteriormente se conectó a una dirección de transporte remota o en un socket que aceptó en un socket de escucha.

WskDisconnect hace que el subsistema WSK notifique a la dirección de transporte remota, a través de cualquier medio adecuado para el transporte subyacente, que la conexión se está desconectando. Si el parámetro buffer de no esNULL, el subsistema WSK transmite los datos del búfer a la dirección de transporte remota antes de desconectar el socket.

Si se realiza una desconexión correcta, el subsistema WSK espera hasta que se envíen todos los datos de transmisión pendientes antes de desconectar el socket. Una vez desconectado el socket, la aplicación WSK no puede enviar datos adicionales a la dirección de transporte remota. Sin embargo, la aplicación WSK todavía puede recibir datos adicionales de la dirección de transporte remoto hasta que la aplicación remota desconecte su final del socket.

Tenga en cuenta que no todos los transportes admiten conexiones medias abiertas. Si un transporte no admite conexiones medias abiertas, la aplicación WSK no recibirá datos adicionales de la dirección de transporte remota después de realizar una desconexión correcta.

Con una desconexión correcta, el IRP solo se completa cuando el protocolo de transporte completa la operación de desconexión. Para algunos protocolos de transporte, es posible que el IRP no se complete si hay un problema al transmitir datos a la dirección de transporte remota. En esta situación, la aplicación WSK puede recuperar llamando a la función WskDisconnect de y especificando la marca de WSK_FLAG_ABORTIVE o llamando a la función WskCloseSocket. En cualquier situación, el subsistema WSK desconectará de forma anulativa el socket y forzará la finalización del IRP pendiente.

Si se realiza una desconexión abortiva, el subsistema WSK cancela todas las operaciones de transmisión en curso y pendientes y no espera a desconectar el socket. Después de una desconexión abortiva, la aplicación WSK no puede enviar datos adicionales a la dirección de transporte remota ni recibir datos adicionales de la dirección de transporte remoto.

Una aplicación WSK puede cerrar completamente la conexión llamando a la función WskCloseSocket.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
de la plataforma de destino de Universal
encabezado de wsk.h (incluya Wsk.h)
irQL <= DISPATCH_LEVEL

Consulte también

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskConnect

WskDisconnectEvent de

WskSocketConnect