notify 属性
[notify] 属性指示 MIDL 编译器在应用程序的服务器端生成对 [notify] 过程的调用。
[notify] procedure-name();
-
procedure-name
-
通知过程将与之关联的远程过程的名称。
由于 [notify] 属性调用的 [notify] 过程与服务器上的特定远程过程相关联。 它在概念上类似于回调函数。 存根调用 [notify] 过程后,已封送与它关联的远程过程的所有输出参数,并释放与参数关联的任何内存。 如果在服务器例程执行之前调用失败,则调用 [notify] 例程。 例如,如果服务器在取消封送期间由于从客户端收到错误数据而失败,则会调用 [notify] 例程。
[notify] 属性可用于开发在远程过程中获取资源的应用程序。 然后,在远程过程的输出参数完全封送后 ,在 [notify] 过程中释放这些资源。
[notify] 过程名称是_notify后缀的远程过程的名称。 _notify过程不需要任何参数,也不会返回结果。 此过程的原型也会在头文件中生成。 例如,如果 IDL 文件包含以下项:
MyProcedure([in] short S);
在 ACF for MIDL 中指定以下内容以生成 _notify 调用:
[notify] MyProcedure();
MIDL 编译器将生成服务器存根代码,其中包含对 _notify 过程的以下调用:
MyProcedure_notify();
头文件将包含一个原型:
void MyProcedure_notify(void);
[notify] MyProcedure();