notify 属性
[notify] 属性は、アプリケーションのサーバー側で [notify] プロシージャの呼び出しを生成するように MIDL コンパイラに指示します。
[notify] procedure-name();
-
procedure-name
-
通知プロシージャーが関連付けられるリモート・プロシージャーの名前。
[notify] 属性の結果として呼び出される [notify] プロシージャは、サーバー上の特定のリモート プロシージャに関連付けられます。 これは、概念的にはコールバック関数と似ています。 スタブは、関連付けられているリモート プロシージャのすべての出力引数がマーシャリングされ、パラメーターに関連付けられているすべてのメモリが解放された後、 [notify] プロシージャを呼び出します。 [notify] ルーチンは、サーバー ルーチンが実行される前に呼び出しが失敗した場合に呼び出されます。 たとえば、クライアントからの不適切なデータの受信が原因でマーシャリング解除中にサーバーが失敗した場合、[notify] ルーチンが呼び出されます。
[notify] 属性は、リモート プロシージャでリソースを取得するアプリケーションを開発するのに役立ちます。 これらのリソースは、リモート プロシージャの出力パラメーターが完全にマーシャリングされた後、[ notify] プロシージャで解放されます。
[notify] プロシージャ名は、_notifyによってサフィックスが付いたリモート プロシージャの名前です。 _notify プロシージャはパラメーターを必要とせず、結果を返しません。 このプロシージャのプロトタイプもヘッダー ファイルで生成されます。 たとえば、IDL ファイルに次のものが含まれている場合です。
MyProcedure([in] short S);
_NOTIFY呼び出しを生成するには、MIDL の ACF で次を指定します。
[notify] MyProcedure();
MIDL コンパイラは、 _notify プロシージャの次の呼び出しを含むサーバー スタブ コードを生成します。
MyProcedure_notify();
ヘッダー ファイルにはプロトタイプが含まれます。
void MyProcedure_notify(void);
[notify] MyProcedure();