Condividi tramite


considerazioni CPI-C per Windows

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

Notifica di completamento asincrono 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 il conversation_return_code dall'operazione che viene completata. I relativi valori dipendono dall'operazione originariamente rilasciata. L'argomento IParam contiene il CM_PTR al conversation_ID specificato nella chiamata di funzione originale.

Notifica di completamento asincrono con eventi Win32®
Quando un verbo viene emesso 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 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 così come è attualmente, ovvero pubblicando un messaggio nella finestra che l'applicazione ha registrato con la libreria di CPI-C.

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

Events
Per ricevere i dati in modo asincrono, viene passato un handle di evento nel campo semaforo del VCB. Questo evento deve trovarsi nello stato non assegnato quando viene 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 eseguono 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 multithreading.

Imballaggio
Per motivi di prestazioni, i vcb non vengono compressi. Di conseguenza, I DWORD si trovano nei limiti DWORD, nei WORD e negli BYTEs. È necessario accedere ai vcb usando le strutture fornite.

Collegamento in fase di esecuzione
Affinché un TP venga collegato dinamicamente a CPI-C in fase di esecuzione, il tp deve emettere:

  • LoadLibrary per caricare dinamicamente 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 di CPI-C non è più necessaria.

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

    Terminazione delle applicazioni
    Nei sistemi operativi Windows CPI-C non è in grado di indicare quando un'applicazione termina. Pertanto, se un'applicazione deve chiudersi (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 CPI-C e i verbi di Common Service (CSV), potrebbe essere necessario che il codice della libreria restituisca per consentire a un altro componente, ad esempio SnaBase, di ricevere messaggi e passarli all'applicazione. A tale scopo, è possibile usare le estensioni di Windows WinCPICSetBlockingHook e WinCPICUnhookBlockingHook.

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