Declaración de funciones asincrónicas
Para declarar una función RPC como asincrónica, primero declare la función como parte de una definición de interfaz en un archivo de lenguaje de definición de interfaz (IDL). El uso de funciones RPC asincrónicas no requiere modificaciones especiales en el archivo IDL. En el ejemplo siguiente se muestra un archivo IDL para una aplicación que usa una función asincrónica.
[
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 las funciones RPC asincrónicas que usa la aplicación, deberá modificar la declaración de las funciones asincrónicas dentro del archivo ACF de la aplicación. Aplique el atributo [async] a cada nombre de función asincrónica, como se muestra en el ejemplo siguiente:
interface AsyncRPC
{
[async] AsyncFunc();
}
Al aplicar el atributo [async] en el archivo ACF, el compilador MIDL genera automáticamente un parámetro de controlador asincrónico adicional en el código auxiliar.