Declarando funções assíncronas
Para declarar uma função RPC como assíncrona, primeiro declare a função como parte de uma definição de interface em um arquivo IDL (Interface Definition Language). O uso de funções RPC assíncronas não requer alterações especiais no arquivo IDL. O exemplo a seguir mostra um arquivo IDL para um aplicativo que usa uma função assíncrona.
[
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);
}
Para todas as funções RPC assíncronas que seu aplicativo usa, você precisará modificar a declaração das funções assíncronas no arquivo ACF do aplicativo. Aplique o atributo [assíncrono] a cada nome de função assíncrona, conforme mostrado no exemplo a seguir:
interface AsyncRPC
{
[async] AsyncFunc();
}
Quando você aplica o atributo [async] no arquivo ACF, o compilador MIDL gera automaticamente um parâmetro de identificador assíncrono adicional no código stub.