Funzione WsCloseChannel (webservices.h)

Chiude un canale specificato.

Sintassi

HRESULT WsCloseChannel(
  [in]           WS_CHANNEL             *channel,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR               *error
);

Parametri

[in] channel

Puntatore a una struttura WS_CHANNEL che rappresenta il canale da chiudere.

[in, optional] asyncContext

Puntatore a una struttura di dati WS_ASYNC_CONTEXT contenente informazioni per richiamare la funzione in modo asincrono. Passare un valore NULL per chiamare la funzione in modo sincrono.

[in, optional] error

Puntatore a una struttura WS_ERROR in cui vengono archiviate informazioni di errore aggiuntive se la funzione ha esito negativo.

Valore restituito

Se la funzione ha esito positivo, restituisce NO_ERROR; in caso contrario, restituisce un codice di errore HRESULT.

Codice restituito Descrizione
WS_S_ASYNC
L'operazione asincrona è ancora in sospeso.
WS_E_OPERATION_ABORTED
La chiusura del canale è stata interrotta da una chiamata a WsAbortChannel mentre il canale è stato chiuso.
WS_E_INVALID_OPERATION
Il canale era in uno stato inappropriato (vedere la sezione Osservazioni).
WS_E_ENDPOINT_DISCONNECTED
La connessione con l'endpoint remoto è stata terminata.
WS_E_ENDPOINT_FAILURE
L'endpoint remoto non è riuscito a elaborare la richiesta.
WS_E_INVALID_FORMAT
I dati di input non erano nel formato previsto o non hanno il valore previsto.
WS_E_OPERATION_TIMED_OUT
L'operazione non è stata completata entro il tempo assegnato.
WS_E_QUOTA_EXCEEDED
È stata superata una quota.
E_OUTOFMEMORY
Memoria insufficiente per completare l'operazione.
E_INVALIDARG
Uno o più argomenti non sono validi.
Altri errori
Questa funzione può restituire altri errori non elencati sopra.

Commenti

Se si apre un canale o si accetta correttamente un canale, è necessario chiuderlo quando non è più necessario. Dopo la chiusura di un canale, le risorse associate possono essere liberate in modo sicuro.

Il processo di chiusura del canale attende il completamento di eventuali operazioni di I/O già avviate.

Se non sono presenti messaggi attualmente letti o scritti per il canale, il canale tenta un arresto normale. In caso contrario, tutte le operazioni di I/O ancora in sospeso sul canale stesso vengono interrotte e il canale esegue un arresto rude.

Se il canale tenta un arresto normale ma rileva un errore, WsCloseChannel restituirà un errore, ma il canale verrà comunque chiuso.

Questa operazione è consentita solo se il canale si trova in WS_CHANNEL_STATE_OPEN o WS_CHANNEL_STATE_FAULTED stati.

La chiusura di un canale impedisce automaticamente l'accesso a tutti i messaggi che si trovano nel processo di lettura o scrittura. Pertanto, non è necessario chiamare WsAbandonMessage prima di chiamare WsCloseChannel.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione webservices.h
Libreria WebServices.lib
DLL WebServices.dll