Considerazioni su CPI-C per Windows

Questo argomento riepiloga le informazioni da tenere presente quando si sviluppano programmi basati sui sistemi operativi Windows.

Notifica di completamento asincrona tramite la registrazione dei 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 la conversation_return_code dell'operazione completata. I valori dipendono da quale operazione è stata originariamente rilasciata. L'argomento IParam contiene l'CM_PTR al conversation_ID specificato nella chiamata di funzione originale.

Notifica di completamento asincrona con eventi Win32®
Quando un verbo viene rilasciato in una conversazione non sbloccata, 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 Common Programming Interface for Communications (CPI-C) di determinare questo handle di eventi. Al termine del verbo, l'applicazione deve chiamare Wait_For_Conversationper determinare il codice restituito per il verbo asincrono. La funzione Cancel_Conversationpuò essere chiamata per annullare un'operazione e la conversazione stessa.

È responsabilità dell'applicazione reimpostare l'evento, come avviene con altre API.

Se non è stato registrato alcun evento, il verbo asincrono viene completato man mano che è presente, che viene pubblicato un messaggio alla finestra registrata dall'applicazione con la libreria CPI-C.

Ordinamento byte
Per impostazione predefinita, viene usato l'ordinamento intel-byte. Per gli ambienti inline, la definizione di NON_INTEL_BYTE_ORDER esegue tutto il capovolgimento necessario per le costanti. I parametri di input non distant nei blocchi di controllo verbo (VCBs) , ad esempio le lunghezze e i puntatori, sono sempre in formato nativo.

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

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

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

Compressione
Per motivi di prestazioni, i VCB non vengono compressi. Di conseguenza, I DWORD si trovano su limiti DWORD, WORD su WORD e BYTEs in BYTEs. I VCB devono essere accessibili usando le strutture fornite.

Collegamento in fase di esecuzione
Affinché un TP sia collegato dinamicamente a CPI-C in fase di esecuzione, il TP deve rilasciare:

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

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

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

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

    Terminazione delle applicazioni
    Nei sistemi operativi Windows, CPI-C non può indicare quando un'applicazione termina. Pertanto, se un'applicazione deve chiudere (ad esempio, riceve un messaggio WM_CLOSE come risultato di UN ALT+F4 da un utente), l'applicazione deve chiamare WinCPICCleanup.

    Resa ad altri componenti
    Quando si elaborano verbi CPI-C e Common Service Verbs (CSV), potrebbe essere necessario che il codice della libreria venga restituito per abilitare un altro componente, ad esempio SnaBase, per ricevere messaggi e passarli all'applicazione. Questa operazione può essere eseguita usando le estensioni di Windows WinCPICSetBlockingHook e WinCPICUnhookBlockingHook.

    WinCPICSetBlockingHook consente a un'implementazione CPI-C di Windows 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)