非同期関数の宣言
RPC 関数を非同期として宣言するには、最初にインターフェイス定義言語 (IDL) ファイルでインターフェイス定義の一部として関数を宣言します。 非同期 RPC 関数を使用する場合、IDL ファイルに対する特別な変更は必要ありません。 次の例は、1 つの非同期関数を使用するアプリケーションの IDL ファイルを示しています。
[
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);
}
アプリケーションで使用されるすべての非同期 RPC 関数については、アプリケーションの ACF ファイル内の非同期関数の宣言を変更する必要があります。 次の例に示すように、各非同期関数名に [async] 属性を適用します。
interface AsyncRPC
{
[async] AsyncFunc();
}
ACF ファイルに [async] 属性を適用すると、MIDL コンパイラによってスタブ コードに追加の非同期ハンドル パラメーターが自動的に生成されます。