> Tech > Au coeur du module CallerID

Au coeur du module CallerID

Tech - Par iTPro - Publié le 24 juin 2010
email

La figure 1 présente le code du module CallerID.
Voici une description des paramètres avancés du module.

Les paramètres passés à  l'API QMHSNDPM sont définis en A. Etant donné que nous envoyons un message informationnel immédiat, l'identificateur du message (Pm_MsgId) et le nom qualifié du fichier de messages (Pm_MsgF)

Au coeur du module CallerID

ne sont pas nécessaires. Ces
zones ne sont indispensables que lorsqu’un message d’échappement, de notification
ou d’état prédéfini est envoyé. Nous pouvons simplement les initialiser à  *BLANKS.

Le paramètre données du message (Pm_MsgDta) peut contenir n’importe quelle valeur
car le message sera retiré de la file d’attente des messages immédiatement après
son émission. Il suffit de s’assurer que la longueur du message (Pm_Length) est
appropriée quelle que soit la valeur spécifiée. CallerID met la longueur à  12
en D.

Nous utilisons le type de message (Pm_MType) *INFO car ce type ne requiert pas
l’utilisation d’un message ou d’une clé de message prédéfinis. L’API QMHSNDPM
assigne la clé de message (Pm_MKey) lorsque le message est envoyé.

Pour le paramètre entrée de la pile d’appel (Pm_CSEntry), nous utilisons la valeur
‘*’ pour indiquer que nous souhaitons démarrer le comptage à  partir de l’entrée
de la pile d’appel courante (module CallerID). Le paramètre compteur de la pile
d’appel est positionné à  4, comme décrit précédemment.

Avant d’appeler l’API QMHSNDPM, CallerID ajoute 16 à  QusBPrv, la sous-zone fournie
dans la structure de données de gestion des erreurs (en C) pour informer l’API
que pour la gestion des erreurs, une structure de données de 16 octets est utilisée.
L’appel de l’API QMHSNDPM se fait en E.

Après l’envoi du message, le programme vérifie cette sous-zone de la structure
de données de gestion des erreurs(QusBAv1)
pour garantir qu’aucune erreur ne s’est produite (en F). La valeur de la sous-zone
est égale à  0 lorsqu’aucune erreur ne s’est produite.

La plupart des paramètres de QMHSNDPM peuvent être réutilisés pour l’appel de
l’API QMHRCVPM. Trois paramètres additionnels, définis en B, sont utilisés pour
extraire le message. Le nom du format (Pm_Format) indique le format dans lequel
le système retournera les informations du message. Nous utilisons RCVM0200, qui
intègre toutes les informations du message (la bibliothèque QSYSINC de l’AS/400
contient les structures de données de ces différents formats). Etant donné que
nous savons que le message se trouve déjà  dans la file d’attente de messages,
le paramètre délai d’attente (Pm_Wait) est mis à  0 pour que le programme n’attende
pas de message. Comme action sur le message (Pm_Action), nous indiquons *REMOVE,
pour que le message soit supprimé de la file d’attente, évitant qu’elle ne se
remplisse de messages inutiles.

Avant d’appeler QMHRCVPM, il est indispensable de s’assurer que la structure de
données contenant les informations du message (RCVM0200) est vide. Il est également
nécessaire de réinitialiser la longueur du message pour gérer les informations
retournées. CallerID exécute ces étapes en G. Nous souhaitons récupérer le nom
du programme, lequel occupe les positions 111 à  120 dans les informations renvoyées.
Par conséquent, nous réglons la longueur du champ contenant des informations du
message à  120.

Si l’API revient sans erreur après réception du message, CallerID transmet le
nom du programme au module principal du trigger (en H). C’est tout ce qu’il y
a à  retenir sur CallerID!

Téléchargez gratuitement cette ressource

Endpoint Security : Guide de Mise en œuvre

Endpoint Security : Guide de Mise en œuvre

Détournement d’applications légitimes, élévation de privilèges, logiciels malveillants furtifs : comment les solutions de Endpoint Security permettent elles de faire face aux nouvelles techniques d'attaques complexes ? Découvrez, dans ce Guide Endpoint Security, les perspectives associées à leur mise en œuvre.

Tech - Par iTPro - Publié le 24 juin 2010