[in, string] et [out, string] Prototype

Le prototype de fonction suivant utilise deux paramètres : un paramètre [in, string] et un paramètre [out, string].

void Analyze(
    [in, string]                       *pszInput,
    [out, string, size_is(STRSIZE)]    *pszOutput);

Le premier paramètre est [in] uniquement. Cette chaîne d’entrée est uniquement transmise du client au serveur. Le serveur l’utilise comme base pour un traitement ultérieur. La chaîne n’est pas modifiée et n’est pas requise à nouveau par le client. Elle n’a donc pas besoin d’être retournée au client.

Le deuxième paramètre, qui représente la réponse du médecin, est [out] uniquement. Cette chaîne de réponse est uniquement transmise du serveur au client. La taille d’allocation est fournie afin que les stubs du serveur puissent allouer de la mémoire pour celle-ci. Étant donné que pszOutput est un pointeur [ref], le client doit disposer d’une mémoire suffisante allouée pour la chaîne avant l’appel. La chaîne de réponse est écrite dans cette zone de mémoire lorsque la procédure distante retourne.