Considerazioni su CPI-C per Windows

In questo argomento vengono riepilogate le informazioni da tenere presenti quando si sviluppano programmi basati Windows sistemi operativi.

Notifica di completamento asincrona tramite la pubblicazione di messaggi
Al termine di un'operazione asincrona, la finestra delle applicazioni hwndNotify riceve il messaggio restituito da RegisterWindowMessage con "WinAsyncCPIC" come stringa di input. Il valore wParam contiene il conversation_return_code dall'operazione in corso di completamento. I valori dipendono dall'operazione eseguita in origine. L'argomento IParam contiene CM_PTR al conversation_ID specificato nella chiamata di funzione originale.

Notifica di completamento asincrono tramite eventi Win32®
Quando un verbo viene rilasciato in una conversazione non bloccante, restituisce CM_OPERATION_INCOMPLETE se verrà completato in modo asincrono. Se un evento è stato registrato con la conversazione, l'applicazione può chiamare WaitForSingleObject o WaitForMultipleObjects per ricevere una notifica del completamento del verbo. WinCPICExtractEvent consente a un'applicazione CPI-C (Common Programming Interface for Communications) di determinare questo handle di evento. Dopo il completamento del verbo, l'applicazione deve chiamare Wait_For_Conversation per determinare il codice restituito per il verbo asincrono. La Cancel_Conversation può essere chiamata per annullare un'operazione e la conversazione stessa.

È responsabilità dell'applicazione reimpostare l'evento, come per le altre API.

Se non è stato registrato alcun evento, il verbo asincrono viene completato come al momento, ovvero pubblicando un messaggio nella finestra che l'applicazione ha registrato con la libreria CPI-C.

Ordinamento dei byte
Per impostazione predefinita, viene usato l'ordinamento dei byte Intel. Per gli ambienti inline, la NON_INTEL_BYTE_ORDER esegue tutte le capovolgimenti necessarie per le costanti. I parametri di input non conformi nei blocchi di controllo dei verbi (VCB), ad esempio lunghezze e puntatori, sono sempre nel formato nativo.

Eventi
Per ricevere i dati in modo asincrono, viene passato un handle di evento nel campo semaforo del VCB. Questo evento deve essere nello stato non EVENT_MODIFY_STATE quando viene passato a CPI-C e l'handle deve avere accesso EVENT_MODIFY_STATE'evento.

Nome libreria
Il nome della DLL Win32® è WINCPIC32.DLL.

Più thread
Un programma di transazione può avere più thread che emettere verbi. Windows CPI-C effettua il provisioning per i processi Windows multithreading basati su . Un processo contiene uno o più thread di esecuzione. Tutti i riferimenti ai thread fanno riferimento ai thread effettivi in un ambiente Windows multithreading.

Imballaggio
Per motivi di prestazioni, i vcb non sono di tipo pack. Di conseguenza, le DWORD sono in base a limiti DWORD, WORD su WORD e BYTE su BYTE. È consigliabile accedere ai vcb usando le strutture fornite.

Collegamento in fase di esecuzione
Per un TP da collegare dinamicamente a CPI-C in fase di esecuzione, il TP deve emettere:

  • LoadLibrary per caricare in modo WINCPIC.DLL o WINCPIC32.DLL, le librerie per WINCPIC.

  • GetProcAddress per specificare WINCPIC come punto di ingresso desiderato per la libreria a collegamento dinamico (DLL).

  • FreeLibrary quando la libreria CPI-C non è più necessaria.

    Conversazioni simultanee
    Un programma può partecipare simultaneamente a un numero di conversazioni fino a 64 per processo.

    Terminazione delle applicazioni
    Nei Windows, CPI-C non è in grado di terminare un'applicazione. Pertanto, se un'applicazione deve chiudersi (ad esempio, riceve un messaggio WM_CLOSE come risultato di alt+F4 da un utente), l'applicazione deve chiamare WinCPICCleanup.

    Cedendo ad altri componenti
    Durante l'elaborazione di CPI-C e common service verbs (CSV), può essere necessario che il codice della libreria cedere per consentire a un altro componente, ad esempio SnaBase, di ricevere messaggi e passarli all'applicazione. Questa operazione può essere eseguita usando le estensioni Windows WinCPICSetBlockingHook e WinCPICUnhookBlockingHook.

    WinCPICSetBlockingHook consente a Windows'implementazione CPI-C di bloccare le chiamate di funzione CPI-C tramite una nuova funzione. Per chiamare WinCPICSetBlockingHook:

FARPROC WINAPI WinCPICSetBlockingHook (FARPROC 1pBlockFunc)  

WinCPICUnhookBlockingHook rimuove qualsiasi hook di blocco precedente installato e reinstalla il meccanismo di blocco predefinito. Per chiamare WinCPICUnhookBlockingHook:

BOOL WINAPI WinCPICUnhookBlockingHook (void)