WinAsyncAPPCIOCP
La funzione WinAsyncAPPCIOCP fornisce un punto di ingresso asincrono per tutti i verbi APPC. Usare questa funzione anziché le versioni di blocco dei verbi per consentire la gestione di più sessioni nello stesso thread usando le porte di completamento di I/O. Questo verbo è supportato solo in Microsoft Windows e usa porte di completamento di I/O Win32.
Sintassi
HANDLE WINAPI WinAsyncAPPCIOCP(
APPC_IOCP_INFO *iocp_handle,
longlpVcb);
Parametri
iocp_handle
Puntatore a una struttura APPC_IOCP_INFO usata per passare le informazioni sulla porta di completamento di I/O.
lpVcb
Puntatore al blocco di controllo verbo
La struttura APPC_IOCP_INFO ha il prototipo seguente:
APPC_CompletionPort;APPC_NumberOfBytesTransferred;
APPC_CompletionKey;
APPC_pOverlapped;
APPC_CompletionPort
Questo parametro fornito è handle restituito dalla chiamata alla funzione CreateIoCompletionPort quando viene creata la porta di completamento di I/O. La porta di completamento di I/O deve essere creata prima di chiamare la funzione WinAsyncAPPCIOCP . Al termine del verbo, la libreria APPC chiama la funzione PostQueuedCompletionStatus con i campi rimanenti nella struttura come input e questi campi vengono semplicemente passati alla funzione GetQueuedCompletionStatus rilasciata dall'applicazione.
APPC_NumberOfBytesTransferred
Questo parametro fornito viene ignorato. Al termine del verbo APPC, la libreria APPC chiama la funzione PostQueuedCompletionStatus con questo campo come input e il valore restituito per dwNumberOfBytesTransferred viene semplicemente passato alla funzione GetQueuedCompletionStatus rilasciata dall'applicazione.
APPC_CompletionKey
Questo parametro fornito viene ignorato. Al termine del verbo APPC, la libreria APPC chiama la funzione PostQueuedCompletionStatus con questo campo come input e il valore restituito per dwCompletionKey viene semplicemente passato alla funzione GetQueuedCompletionStatus rilasciata dall'applicazione.
APPC_pOverlapped
Questo parametro fornito viene ignorato. Al termine del verbo APPC, la libreria APPC chiama la funzione PostQueuedCompletionStatus con questo campo come input e il valore restituito per lpOverlapped viene semplicemente passato alla funzione GetQueuedCompletionStatus rilasciata dall'applicazione.
Valore restituito
Il valore restituito specifica se la richiesta di risoluzione asincrona ha avuto esito positivo. Se la funzione ha esito positivo, il valore restituito è un handle attività asincrono. Se la funzione non è riuscita, viene restituito uno zero.
Quando questa funzione restituisce un valore riuscito, questa operazione non indica che la chiamata APPC restituirà correttamente. Indica solo che è stato possibile che la libreria APPC tenti la chiamata appC in modo asincrono usando una porta di completamento di I/O per la notifica.
Commenti
Questa funzione è destinata all'uso con CreateIoCompletionPort e GetQueuedCompletionStatus nell'API Win32. Queste funzioni sono descritte nella sezione "Riferimento" della documentazione di Microsoft Platform SDK.
Per un esempio di come usare questo verbo in TP multithreaded, vedere l'esempio di ricezione multithreaded TP (MRCVIO situato nella cartella SNA\MSENDRCV) usando le porte di completamento di I/O incluse in Host Integration Server SDK.
I verbi APPC usati nelle conversazioni di base che possono bloccare sono i seguenti:
-
I verbi APPC usati nelle conversazioni mappate che possono bloccare sono i seguenti:
-
Quando si usano le versioni sincrone o asincrone di un verbo, un'applicazione può avere una sola funzione in corso in una conversazione alla volta. Un tentativo di avviare una seconda funzione genera il codice di errore AP_CONV_BUSY.
Le eccezioni al paragrafo precedente sono RECEIVE_AND_POST, MC_RECEIVE_AND_POST, RECEIVE_AND_WAIT e MC_RECEIVE_AND_WAIT.
Per consentire l'uso completo del supporto asincrono, RECEIVE_AND_WAIT e MC_RECEIVE_AND_WAIT verbi sono stati modificati per agire come i verbiRECEIVE_AND_POST e MC_RECEIVE_AND_POST. In particolare, mentre una versione asincrona di uno di questi verbi è in sospeso, i verbi seguenti possono essere rilasciati nella stessa conversazione:
DEALLOCATE (AP_ABEND_PROG, AP_ABEND_SVC o AP_ABEND_TIMER)
-
Ciò consente a un'applicazione, in particolare, a un'applicazione server di usare un RECEIVE_AND_WAIT asincrono o MC_RECEIVE_AND_WAIT di ricevere dati. Mentre RECEIVE_AND_POST,MC_RECEIVE_AND_POST, RECEIVE_AND_WAITo MC_RECEIVE_AND_WAIT è in sospeso, può comunque usare SEND_ERRORo MC_SEND_ERRORe REQUEST_TO_SENDo MC_REQUEST_TO_SEND. È consigliabile usare questa funzionalità per il supporto asincrono completo e, in particolare, per il supporto di più conversazioni nello stesso thread.
Al termine dell'operazione asincrona, l'applicazione viene notificata tramite la funzione GetQueuedCompletionStatus . Al completamento di I/O, esaminare il codice restituito primario appC e il codice restituito secondario nel blocco di controllo verbo per eventuali condizioni di errore.