Udostępnij za pośrednictwem


Deklarowanie funkcji asynchronicznych

Aby zadeklarować funkcję RPC jako asynchroniczną, najpierw zadeklaruj funkcję jako część definicji interfejsu w pliku IDL (Interface Definition Language). Użycie asynchronicznych funkcji RPC nie wymaga żadnych specjalnych zmian w pliku IDL. W poniższym przykładzie pokazano plik IDL dla aplikacji, która używa jednej funkcji asynchronicznej.

[ 
    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);
}

W przypadku wszystkich asynchronicznych funkcji RPC używanych przez aplikację należy zmodyfikować deklarację funkcji asynchronicznych w pliku ACF aplikacji. Zastosuj atrybut [async] do każdej asynchronicznej nazwy funkcji, jak pokazano w poniższym przykładzie:

interface AsyncRPC
{
    [async] AsyncFunc();
}

Po zastosowaniu atrybutu [async] w pliku ACF kompilator MIDL automatycznie generuje dodatkowy parametr asynchronicznego uchwytu w kodzie wycinkowym.