Déclaration de fonctions asynchrones

Pour déclarer une fonction RPC comme asynchrone, déclarez d’abord la fonction dans le cadre d’une définition d’interface dans un fichier IDL (Interface Definition Language). L’utilisation de fonctions RPC asynchrones ne nécessite aucune modification spéciale de votre fichier IDL. L’exemple suivant montre un fichier IDL pour une application qui utilise une fonction asynchrone.

[ 
    uuid (7f6c4340-eb67-11d1-b9d7-00c04fad9a3b),
    version(1.0),
    pointer_default(unique)
]
interface AsyncRPC
{
    const long DEFAULT_ASYNC_DELAY        = 10000;
    const short APP_ERROR                 = -1;
    const char* DEFAULT_PROTOCOL_SEQUENCE = "ncacn_ip_tcp";
    const char* DEFAULT_ENDPOINT          = "8765";
 
    void NonAsyncFunc(handle_t hBinding,
                      [in, string] unsigned char * pszMessage);
 
    void AsyncFunc(handle_t hBinding,
                   [in] unsigned long nAsychDelay);
 
    void Shutdown(handle_t hBinding);
}

Pour toutes les fonctions RPC asynchrones utilisées par votre application, vous devez modifier la déclaration des fonctions asynchrones dans le fichier ACF de votre application. Appliquez l’attribut [async] à chaque nom de fonction asynchrone, comme illustré dans l’exemple suivant :

interface AsyncRPC
{
    [async] AsyncFunc();
}

Lorsque vous appliquez l’attribut [async] dans le fichier ACF, le compilateur MIDL génère automatiquement un paramètre de handle asynchrone supplémentaire dans le code stub.