Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique récapitule les informations sur le développement de programmes transactionnels à l’aide d’APPC sur les systèmes d’exploitation Windows :
Classement d’octets
Valeurs des constantes définies dans WINAPPC. H et WINCSV. H dépend de l’ordre d’octets du matériel utilisé. Les macros sont utilisées pour définir les constantes sur la valeur correcte.
Par défaut, l’ordre d’octets Intel little-endian est utilisé, avec le bas octet d’une valeur 16 bits suivie de l’octet élevé. Toutefois, lors de la définition de macros inline, la macro NON_INTEL_BYTE_ORDER utilisée dans WINAPPC. H et WINCSV. H n’inverse pas (retourne) l’ordre d’octet pour les constantes. Les paramètres d’entrée non constants dans les blocs de contrôle verbe (VCB) (tels que les longueurs, les pointeurs, etc.) sont toujours au format natif.
Par exemple, le code de retour principal de AP_PARAMETER_CHECK est défini pour avoir une valeur de 0x0001. Selon l’environnement (classement d’octets), la constante AP_PARAMETER_CHECK peut ou non être 0x0001. Certains formats définissent la valeur telle qu’elle apparaît en mémoire ; d’autres le définissent comme une variable de 2 octets. Étant donné que vous ne pouvez pas supposer que l’application utilise toujours des constantes fournies plutôt que des valeurs câblées, vous pouvez définir une macro pour échanger les octets. Voici un exemple d’utilisation de la macro :
/* when NON_INTEL_BYTE_ORDER is specified, the APPC_FLIPI macro defined in WINAPPC.H macro becomes */
#define APPC_FLIPI(x) (x)
/* otherwise this macro flips bytes by defining */
#define APPC_FLIPI(X) APPC_MAKUS(APPC_HI_UC(X),APPC_LO_UC(X))
/* the AP_PARAMETER_CHECK macro is now defined using the APPC_FLIPI macro */
#define AP_PARAMETER_CHECK APPC_FLIPI (0X0001) /* X '0001' */
Événements
Pour recevoir des données de façon asynchrone, un handle d’événement est transmis dans le champ sémaphore du VCB. Cet événement doit être dans l’état non signalé lorsqu’il est passé à APPC, et le handle doit avoir le droit d’accès EVENT_MODIFY_STATE à l’événement.
Noms de bibliothèques
Pour prendre en charge la coexistence des bibliothèques d’API Win16 et Win32 sur le même ordinateur, les noms de DLL Win32 ont été modifiés.
| Anciens noms de DLL | Nouveaux noms de DLL |
|---|---|
| WINAPPC.DLL | WAPPC32.DLL |
| WINCSV.DLL | WINCSV32.DLL |
Les nouveaux noms de DLL doivent être utilisés pour les applications Win32 destinées à s’exécuter uniquement sur Host Integration Server.
Limites
Pour les systèmes d’exploitation Windows, le nombre de verbes de service communs simultanés autorisés par processus est de 64. Un seul de ces verbes par thread peut être synchrone (blocage).
À l’aide d’APPC, le nombre maximal de conversations simultanées par processus est de 15 000. Chaque processus prend en charge jusqu’à 15 000 adresses IP simultanées.
Plusieurs threads
Un TP peut avoir plusieurs threads qui émettent des verbes. Windows APPC fournit des dispositions pour les processus Windows multithreadés. Un processus contient un ou plusieurs threads d’exécution. Toutes les références aux threads font référence aux threads réels dans les environnements Windows multithreads.
À l’exception de RECEIVE_AND_POST, MC_RECEIVE_AND_POST, RECEIVE_AND_WAIT et MC_RECEIVE_AND_WAIT, un seul verbe de conversation peut être en attente à la fois sur n’importe quelle conversation ; toutefois, d’autres verbes peuvent être émis pour d’autres conversations. Cette directive s’applique également aux verbes TP et aux TP. Bien que plusieurs verbes TP puissent être émis, un seul verbe TP peut être en attente à la fois sur un TP. Cela s’applique aux applications multithread et aux applications monothread qui utilisent des appels asynchrones.
Emballage
Pour des raisons de performance, les disjoncteurs verticaux ne sont pas assemblés. Les éléments membres de la structure VCB, à partir du deuxième élément, sont alignés soit sur la taille du type de membre, soit sur les limites de DWORD (4 octets), en fonction de laquelle est la plus petite. Par conséquent, les DWORD sont alignés sur les limites DWORD, les WORD sont alignés sur les limites WORD et les BYTE sont alignés sur les limites BYTE. Cela signifie, par exemple, qu’il existe un écart de 2 octets entre les codes de retour principal et secondaire. Par conséquent, les éléments d’un VCB doivent être accessibles uniquement à l’aide des structures fournies.
Cette option pour l’alignement des membres de structure et d’union est le comportement par défaut pour les compilateurs Microsoft C/C++. Pour la compatibilité avec les bibliothèques DUA (Logical Unit Application) fournies, veillez à utiliser une option de compression de membre de structure et de membre d’union équivalente lors de l’utilisation d’autres compilateurs C/C++ ou lors de la spécification explicite d’une option d’alignement de structure lors de l’utilisation des compilateurs Microsoft.
Inscription et annulation de l’inscription d’applications
Toutes les applications Windows APPC doivent appeler WinAPPCStartup au début de la session pour inscrire l’application et WinAPPCCleanup à la fin de la session pour désinscrire l’application.
Toutes les applications CSV Windows doivent appeler l’extension Windows SNA WinCSVStartup au début de la session pour inscrire l’application et WinCSVCleanup pour désinscrire l’application une fois la session terminée.
Liaison au moment de l’exécution
Pour qu’un TP soit lié dynamiquement à APPC au moment de l’exécution, le TP doit émettre les appels suivants :
LoadLibrary pour charger les bibliothèques de liens dynamiques WINAPPC.DLL ou WAPPC32.DLL.
GetProcAddress pour spécifier APPC sur tous les points d’entrée souhaités vers la DLL comme APPC, WinAsyncAPPC, WinAPPCStartup et WinAPPCCleanup.
Pour qu’un TP soit lié dynamiquement au csv au moment de l’exécution, le TP doit émettre les appels suivants :
LoadLibrary pour charger WINCSV.DLL ou WINCSV32.DLL, les bibliothèques de liens dynamiques pour le csv Windows.
GetProcAddress pour spécifier csv sur tous les points d’entrée souhaités vers la DLL, comme ACSSVC, WinAsyncCSV, WinCSVStartup et WinCSVCleanup.
Le TP doit émettre l’appel FreeLibrary lorsque la bibliothèque APPC ou CSV n’est plus nécessaire.
Céder à d'autres composants
Étant donné que les environnements Windows sont multithreadés, il n'est pas nécessaire de laisser la priorité à d'autres composants.