<div class="content" name="ApiGetNotifyV2" uuid="491227be-d055-4140-8b85-35cf29f31166"><p>(Protocol Version 3) The ApiGetNotifyV2 method is an
asynchronous <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_8a7f6700-8311-45bc-af10-82e10accd331" data-linktype="relative-path">RPC</a></span> method that
SHOULD<a id="Appendix_A_Target_124"></a><a aria-label="Product behavior note 124" href="1d58eff8-a042-478c-972c-8e9c76a3f978#Appendix_A_124" data-linktype="relative-path">&lt;124&gt;</a> instruct the server to return
a set of queued events from a designated version 2 notification port
corresponding to a particular context handle. The server MUST NOT complete this
method until an indication has been queued to the port or the port has been
closed through a separate call to the <span><a href="e7604a23-c316-4da7-b3b0-d31e2fd9cb5e" data-linktype="relative-path">ApiUnblockGetNotifyCall (section 3.1.4.2.107)</a></span>
or <span><a href="dc1cbfcc-936a-4967-9c71-63d34cea71d7" data-linktype="relative-path">ApiCloseNotify (section 3.1.4.2.57)</a></span>
method.</p><p>The server MUST return the notification enumeration values
registered by the client as specified in <span><a href="73d7a7d4-fef2-46e4-bd90-4c2e645094f3" data-linktype="relative-path">ApiAddNotifyV2 (section 3.1.4.2.137)</a></span>.</p><p>The server MUST NOT return these notification filter flags:</p><ul><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_RECONNECT_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_STATE_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_HANDLE_CLOSE_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_GROUP_HANDLE_CLOSE_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_RESOURCE_HANDLE_CLOSE_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_NETWORK_HANDLE_CLOSE_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_NETINTERFACE_HANDLE_CLOSE_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_NODE_HANDLE_CLOSE_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_REGISTRY_HANDLE_CLOSE_V2</p>
</li><li><p><span><span> 
</span></span>CLUSTER_CHANGE_CLUSTER_REGISTRY_SUBTREE_V2</p>
</li></ul><p>The server SHOULD accept an ApiGetNotifyV2 request if its <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_a93e2fea-3006-4a06-b48f-fdb36d9abac9" data-linktype="relative-path">protocol
server state</a></span> is read-only and MUST accept the request if it is in
the read/write state, as specified in section <span><a href="756547e7-ca64-4b7c-9f1b-2b1fbc6153d3" data-linktype="relative-path">3.1.1</a></span>.</p><p>The server MUST require that the access level associated
with the <i>hResource</i> parameter is &#34;Read&#34; (section <span><a href="a249a463-3d3b-4058-abf6-3024d81806a0" data-linktype="relative-path">3.1.4</a></span>).</p><dl>
<dd>
<div><pre> error_status_t ApiGetNotifyV2(
   [in] HNOTIFY_RPC hNotify,
   [out, size_is (,*dwNumNotifications)] 
     PNOTIFICATION_RPC* Notifications,
   [out] DWORD *dwNumNotifications
 );
</pre></div>
</dd></dl><p><b>hNotify: </b>An HNOTIFY_RPC context handle that
was obtained from a previous call to <span><a href="deeb2cd8-1135-4f9c-9f2b-824db8b44a5d" data-linktype="relative-path">ApiCreateNotifyV2 (section 3.1.4.2.136)</a></span>.</p><p><b>Notifications: </b>A pointer to an array of one or
more <span><a href="440a6d2d-e5be-49f3-8c96-fadc746705d5" data-linktype="relative-path">NOTIFICATION_RPC (section 2.2.3.24)</a></span>
structures corresponding to notification events that have been generated on the
designated notification port since the previous call to ApiGetNotifyV2 or since
the client registered for events with ApiAddNotifyV2. For each NOTIFICATION_RPC
element in the array, the <b>dwNotifyKey</b> member is set to the value
provided by the client in the previous ApiAddNotifyV2 call corresponding to the
event indication contained in the NOTIFICATION_RPC structure. Each
NOTIFICATION_RPC structure contains a <span><a href="806ea3ef-9089-4737-88a6-14b48adc1360" data-linktype="relative-path">NOTIFICATION_DATA_RPC (section 2.2.3.23)</a></span>
structure, which is populated according to the particular notification event.</p><dl>
<dd>
<p>For event indications pertaining to a cluster
object, as specified for <span><a href="89d26712-45d8-452e-9e8a-bb0750a5f978" data-linktype="relative-path">CLUSTER_OBJECT_TYPE_CLUSTER (section 2.2.2.11)</a></span>,
the server MUST set the NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_CLUSTER (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="d529b7a9-9f5b-4191-b093-dbb38ffa4277" data-linktype="relative-path">CLUSTER_CHANGE_CLUSTER_V2 (section 2.2.2.12)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ObjectId:
an empty <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_b069acb4-e364-453e-ac83-42d469bb339e" data-linktype="relative-path">Unicode string</a></span>.</p>
</li><li><p><span><span>  </span></span>Type:
an empty Unicode string.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The remaining fields are set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>buffer</p>
   </th>
   <th>
   <p>ObjectId</p>
   </th>
   <th>
   <p>ParentId</p>
   </th>
   <th>
   <p>Name</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_CLUSTER_GROUP _ADDED_V2</td>
  <td>A DWORD containing the type of the group.</td>
  <td>The ID of the group.</td>
  <td>The ID of the node where the group is hosted.</td>
  <td>The name of the group</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER_NETWORK _ADDED_V2</td>
  <td>Empty.</td>
  <td>The ID of the cluster network.</td>
  <td>An empty Unicode string.</td>
  <td>The name of the cluster network.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER_NODE _ADDED_V2</td>
  <td>A DWORD containing the state of the node, as specified in 3.1.4.2.69</td>
  <td>The ID of the cluster node.</td>
  <td>An empty Unicode string.</td>
  <td>The name of the cluster node.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER_RESOURCE _TYPE_ADDED_V2</td>
  <td>Empty.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
  <td>The name of the new resource type.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER_COMMON _PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER_PRIVATE _PROPERTY</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER_LOST _NOTIFICATIONS_V2</td>
  <td>Empty.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER _RENAME_V2</td>
  <td>Empty.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
  <td>The new name of the cluster.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER _MEMBERSHIP_V2</td>
  <td>A CLUSTER_MEMBERSHIP_INFO (section 2.2.3.42) containing new information about the cluster membership.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_CLUSTER _UPGRADED_V2</td>
  <td>A DWORD containing the cluster operating version.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
 </tr></tbody></table>
</dd>
<dd>
<p>For event indications pertaining
to a group object as specified for
CLUSTER_OBJECT_TYPE_GROUP (section 2.2.2.11), the server MUST set the
NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_GROUP (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="a4c12a3c-3c9b-4b81-ac40-79cb5018474a" data-linktype="relative-path">CLUSTER_CHANGE_GROUP_V2 (section 2.2.2.13)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ParentId:
ID of the node on which the group is hosted.</p>
</li><li><p><span><span>  </span></span>Type:
an empty Unicode string.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The remaining fields are set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>buffer</p>
   </th>
   <th>
   <p>ObjectId</p>
   </th>
   <th>
   <p>Name</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_GROUP_DELETED_V2</td>
  <td>Empty.</td>
  <td>The ID of the group.</td>
  <td>The name of the group.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_GROUP_COMMON_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
  <td>The ID of the group.</td>
  <td>The name of the group.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_GROUP_PRIVATE_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
  <td>The ID of the group.</td>
  <td>The name of the group.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_GROUP_STATE_V2</td>
  <td>A DWORD containing the new group state (see section 3.1.4.2.46).</td>
  <td>The ID of the group.</td>
  <td>The name of the group.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_GROUP_OWNER_NODE_V2</td>
  <td>The ID of the new owner node.</td>
  <td>The ID of the group.</td>
  <td>The name of the group.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_GROUP_PREFERRED_OWNER_V2</td>
  <td>A MULTI_SZ list of string IDs of the preferred owners, as would be set for a multiSzNodeList in a call to ApiSetGroupNodeList (section 3.1.4.2.55).</td>
  <td>The ID of the group.</td>
  <td>The name of the group.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_GROUP_RESOURCE_ADDED_V2</td>
  <td>The ID of the group.</td>
  <td>The ID of the resource created in the cluster and contained in this group (see ApiCreateResource (section 3.1.4.2.10)).</td>
  <td>The name of the resource created in the cluster and contained in this group (see ApiCreateResource (section 3.1.4.2.10)).</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_GROUP_RESOURCE_GAINED_V2</td>
  <td>The ID of the resource added to this group, either by ApiCreateResource (section 3.1.4.2.10) or ApiChangeResourceGroup (section 3.1.4.2.26) or ApiChangeResourceGroupEx (section 3.1.4.2.166).</td>
  <td>The ID of the group.</td>
  <td>The name of the group.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_GROUP_RESOURCE_LOST_V2</td>
  <td>The ID of the resource removed from this group, either by ApiDeleteResource (section 3.1.4.2.11) or ApiChangeResourceGroup (section 3.1.4.2.26) or ApiChangeResourceGroupEx (section 3.1.4.2.166).</td>
  <td>The ID of the group.</td>
  <td>The name of the group.</td>
 </tr></tbody></table>
</dd>
<dd>
<p>For event indications pertaining
to a resource object as specified for
CLUSTER_OBJECT_TYPE_RESOURCE (section 2.2.2.11), the server MUST set
the NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_RESOURCE (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="95b267da-b5d7-4788-acd0-1a0815579e61" data-linktype="relative-path">CLUSTER_CHANGE_RESOURCE_V2 (section 2.2.2.14)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ObjectId:
ID of the resource.</p>
</li><li><p><span><span>  </span></span>ParentId:
ID of the group that contains the resource.</p>
</li><li><p><span><span>  </span></span>Name:
the name of the resource.</p>
</li><li><p><span><span>  </span></span>Type:
the name of the resource type.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The remaining fields are set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>buffer</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_RESOURCE_COMMON_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_PRIVATE_PROPERTY_V2</td>
  <td>Empty.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_STATE_V2</td>
  <td>A DWORD containing the resource state (see 3.1.4.2.13).</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_OWNER_GROUP_V2</td>
  <td>The ID of the group that now contains the resource.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_DEPENDENCIES_V2</td>
  <td>A new dependency expression, as would be returned by a call to ApiGetResourceDependencyExpression (section 3.1.4.2.110).</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_DEPENDENTS_V2</td>
  <td>A MULTI_SZ list of resource ID strings that now list this resource as a provider.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_POSSIBLE_OWNERS_V2</td>
  <td>A MULTI_SZ list of node IDs that can host the resource.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_DELETED_V2</td>
  <td>The ID of the group that contained the resource before it was deleted.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_DLL_UPGRADED_V2</td>
  <td>The ID of the node that issued CLUSCTL_RESOURCE_UPGRADED_DLL (section 3.1.4.3.1.27).</td>
 </tr></tbody></table>
</dd>
<dd>
<p>For event indications pertaining
to a resource type object as specified for
CLUSTER_OBJECT_TYPE_RESOURCE_TYPE (section 2.2.2.11), the server MUST
set the NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_RESOURCE_TYPE (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="aec62676-9b9f-4d49-914c-dd3d5bd7fcb3" data-linktype="relative-path">CLUSTER_CHANGE_RESOURCE_TYPE_V2 (section 2.2.2.15)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ObjectId:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>ParentId:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>Name:
the name of the resource type.</p>
</li><li><p><span><span>  </span></span>Type:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The <b>buffer</b> field is set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>buffer</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_RESOURCE_TYPE_DELETED_V2</td>
  <td>Empty.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_TYPE_COMMON_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_TYPE_PRIVATE_PROPERTY_V2</td>
  <td>Empty.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_TYPE_POSSIBLE_OWNERS_V2</td>
  <td>A MULTI_SZ list of cluster node IDs that can host this resource type.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_RESOURCE_TYPE_DLL_UPGRADED_V2</td>
  <td>The ID of the node that issued CLUSCTL_RESOURCE_UPGRADED_DLL (section 3.1.4.3.1.27).</td>
 </tr><tr>
  <td>CLUSTER_RESOURCE_TYPE_SPECIFIC_V2</td>
  <td>The same buffer field that a resource DLL used when it raised the notification.</td>
 </tr></tbody></table>
</dd>
<dd>
<p>For event indications pertaining
to a cluster network interface as specified for
CLUSTER_OBJECT_TYPE_NETWORK_INTERFACE (section 2.2.2.11), the server
MUST set the NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_NETWORK_INTERFACE (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="866c77e9-f692-4ecb-982b-38b682895492" data-linktype="relative-path">CLUSTER_CHANGE_NETINTERFACE_V2 (section 2.2.2.16)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ObjectId:
ID of the cluster network interface.</p>
</li><li><p><span><span>  </span></span>ParentId:
ID of the node associated with the cluster network interface.</p>
</li><li><p><span><span>  </span></span>Name:
the name of the cluster network interface.</p>
</li><li><p><span><span>  </span></span>Type:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The <b>buffer</b> field is set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>buffer</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_NETINTERFACE_DELETED_V2</td>
  <td>Empty.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NETINTERFACE_COMMON_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NETINTERFACE_PRIVATE_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NETINTERFACE_STATE_V2</td>
  <td>A DWORD containing the cluster network interface state as would be returned from a call to ApiGetNetInterfaceState (section 3.1.4.2.94).</td>
 </tr></tbody></table>
</dd>
<dd>
<p>For event indications pertaining
to a cluster network object as specified for
CLUSTER_OBJECT_TYPE_NETWORK (section 2.2.2.11), the server MUST set
the NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_NETWORK (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="e6d7a85b-b667-420d-8b0a-7f2f738c6215" data-linktype="relative-path">CLUSTER_CHANGE_NETWORK_V2 (section 2.2.2.17)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ObjectId:
ID of the cluster network.</p>
</li><li><p><span><span>  </span></span>ParentId:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>Name:
the name of the cluster network.</p>
</li><li><p><span><span>  </span></span>Type:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The <b>buffer</b> field is set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>Buffer</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_NETWORK_DELETED_V2</td>
  <td>Empty.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NETWORK_COMMON_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NETWORK_PRIVATE_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NETWORK_STATE_V2</td>
  <td>A DWORD containing the cluster network state, as would be returned by a call to ApiGetNetworkState (section 3.1.4.2.83).</td>
 </tr></tbody></table>
</dd>
<dd>
<p>For event indications pertaining
to a cluster node object as specified for
CLUSTER_OBJECT_TYPE_NODE (section 2.2.2.11), the server MUST set the
NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_NODE (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="7db74409-6418-40f6-aa53-f323bdc6e346" data-linktype="relative-path">CLUSTER_CHANGE_NODE_V2 (section 2.2.2.18)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ParentId:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>Type:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The remaining fields are set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>buffer</p>
   </th>
   <th>
   <p>ObjectId</p>
   </th>
   <th>
   <p>Name</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_NODE_NETINTERFACE_ADDED_V2</td>
  <td>The ID of the cluster node.</td>
  <td>The ID of the cluster network interface.</td>
  <td>The name of the cluster network interface.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NODE_DELETED_V2</td>
  <td>A DWORD containing the state of the cluster node as would be returned from a call to ApiGetNodeState (section 3.1.4.2.69).</td>
  <td>The ID of the cluster node.</td>
  <td>The name of the cluster node.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NODE_COMMON_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
  <td>The ID of the cluster node.</td>
  <td>The name of the cluster node.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NODE_PRIVATE_PROPERTY_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) with updated values.</td>
  <td>The ID of the cluster node.</td>
  <td>The name of the cluster node.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NODE_STATE_V2</td>
  <td>A DWORD containing the state of the cluster node as would be returned from a call to ApiGetNodeState (section 3.1.4.2.69).</td>
  <td>The ID of the cluster node.</td>
  <td>The name of the cluster node.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NODE_GROUP_GAINED_V2</td>
  <td>The ID of the group that has moved to this node.</td>
  <td>The ID of the cluster node.</td>
  <td>The name of the cluster node.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_NODE_GROUP_LOST_V2</td>
  <td>The ID of the group that has moved away from this node.</td>
  <td>The ID of the cluster node.</td>
  <td>The name of the cluster node.</td>
 </tr></tbody></table>
</dd>
<dd>
<p>For event indications pertaining
to a cluster registry key object as specified for
CLUSTER_OBJECT_TYPE_REGISTRY (section 2.2.2.11), the server MUST set
the NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_REGISTRY (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="3ec56e14-7d7c-461a-95bf-9650d73876ff" data-linktype="relative-path">CLUSTER_CHANGE_REGISTRY_V2 (section 2.2.2.19)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ParentId:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>Type:
An empty Unicode string.</p>
</li><li><p><span><span>  </span></span>buffer:
An empty buffer.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
0x00000000.</p>
</li></ul><dl>
<dd>
<p>The remaining fields are set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>ObjectId</p>
   </th>
   <th>
   <p>Name</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_REGISTRY_ATTRIBUTES_V2</td>
  <td>An empty Unicode string.</td>
  <td>Relative name of the cluster database key whose attributes changed.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_REGISTRY_NAME_V2</td>
  <td>The name of the changed value.</td>
  <td>Relative name of the renamed cluster database key.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_REGISTRY_SUBTREE_V2</td>
  <td>An empty Unicode string.</td>
  <td>An empty Unicode string.</td>
 </tr><tr>
  <td>CLUSTER_CHANGE_REGISTRY_VALUE_V2</td>
  <td>The name of the changed value.</td>
  <td>Relative name of the changed cluster database key.</td>
 </tr></tbody></table>
</dd>
<dd>
<p>For event indications pertaining
to a cluster quorum as specified for
CLUSTER_OBJECT_TYPE_QUORUM (section 2.2.2.11), the server MUST set
the NOTIFICATION_DATA_RPC structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_QUORUM (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the CLUSTER_CHANGE_QUORUM_V2 (section 2.2.2.19)
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ParentId:
NULL.</p>
</li><li><p><span><span>  </span></span>Type:
NULL.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The remaining fields are set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>buffer</p>
   </th>
   <th>
   <p>ObjectId</p>
   </th>
   <th>
   <p>Name</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_QUORUM_STATE_V2</td>
  <td>A DWORD describing the new state of the resource, as would be returned from a call to ApiGetResourceState (section 3.1.4.2.13).</td>
  <td>The ID of the resource.</td>
  <td>The name of the resource.</td>
 </tr></tbody></table>
</dd>
<dd>
<p><b>Note</b>  For the
CLUSTER_CHANGE_QUORUM_STATE_V2 value, if and only if a quorum disk resource is
included, a payload will also be provided and the target will be the resource.</p>
</dd>
<dd>
<p>For event indications pertaining
to a shared <span><a href="694e5e7a-5833-4f3d-b47e-323ee1d452c2#gt_9a876829-33a1-4f0b-8b81-8552b7e5561c" data-linktype="relative-path">volume</a></span> as specified
for CLUSTER_OBJECT_TYPE_SHARED_VOLUME (section 2.2.2.11), the server
SHOULD<a id="Appendix_A_Target_125"></a><a aria-label="Product behavior note 125" href="1d58eff8-a042-478c-972c-8e9c76a3f978#Appendix_A_125" data-linktype="relative-path">&lt;125&gt;</a> set the <b>NOTIFICATION_DATA_RPC</b>
structure as follows:</p>
</dd></dl><ul><li><p><span><span>  </span></span>FilterAndType.dwObjectType:
CLUSTER_OBJECT_TYPE_SHARED_VOLUME (section 2.2.2.11).</p>
</li><li><p><span><span>  </span></span>FilterAndType.FilterFlags:
one flag from the <span><a href="f84ad01b-d0e5-4dc1-945c-4c39d90fab13" data-linktype="relative-path">CLUSTER_CHANGE_SHARED_VOLUME_V2 (section 2.2.2.21)</a></span>
enumeration, indicating the event that occurred.</p>
</li><li><p><span><span>  </span></span>ParentId:
NULL.</p>
</li><li><p><span><span>  </span></span>Type:
NULL.</p>
</li><li><p><span><span>  </span></span>dwBufferSize:
the number of bytes in the <b>buffer</b> field.</p>
</li></ul><dl>
<dd>
<p>The remaining fields are set
depending on the event that occurred, identified by the <b>FilterAndType.FilterFlags</b>
field, as specified in the following table.</p>
</dd>
<dd>
<table><thead>
  <tr>
   <th>
   <p>FilterAndType.FilterFlags</p>
   </th>
   <th>
   <p>buffer</p>
   </th>
   <th>
   <p>ObjectId</p>
   </th>
   <th>
   <p>Name</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>CLUSTER_CHANGE_SHARED_VOLUME_STATE_V2</td>
  <td>A Property List (section 2.2.3.10) containing one or more Property Values (section 2.2.3.10.1) of type binary value, with each binary data value representing a CLUSTER_SHARED_VOLUME_STATE_INFO_EX (section 2.2.3.32) structure.</td>
  <td>The ID of the cluster shared volume resource.</td>
  <td>The name of the cluster shared volume resource.</td>
 </tr></tbody></table>
</dd></dl><p><b>dwNumNotifications: </b>A pointer to a DWORD that
contains the count of NOTIFICATION_RPC structures.</p><p><b>rpc_status: </b>A 32-bit integer used to indicate
success or failure. The RPC runtime MUST indicate, by writing to this
parameter, whether it succeeded in executing this method on the server. The
encoding of the value passed in this parameter MUST conform to encoding for
comm_status and fault_status, as specified in Appendix E of <span><a href="https://go.microsoft.com/fwlink/?LinkId=89824" data-linktype="external">[C706]</a></span>.</p><p><b>Return Values: </b>This method MUST return the
following error codes for the following conditions.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Return value/code</p>
   </th>
   <th>
   <p>Description</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>0x00000000 ERROR_SUCCESS</td>
  <td>The method completed successfully.</td>
 </tr><tr>
  <td>0x00000006 ERROR_INVALID_HANDLE</td>
  <td>The data that is pointed to by the hNotify parameter does not represent a valid HNOTIFY_RPC context handle.</td>
 </tr><tr>
  <td>0x00000103 ERROR_NO_MORE_ITEMS</td>
  <td>The notification port represented by the hNotify parameter has been closed.</td>
 </tr><tr>
  <td>0x00000001 ERROR_INVALID_FUNCTION</td>
  <td>Either the ApiUnblockGetNotifyCall (section 3.1.4.2.107) method or the ApiCloseNotify (section 3.1.4.2.57) method has been called in another thread. The client SHOULD terminate the notification thread.</td>
 </tr></tbody></table>
</dd></dl><p>For any other condition, the server returns a value that is
not one of the values listed in the preceding table. The client MUST treat all
such values identically, with the exception of errors specified in section <span><a href="ca75805a-4b39-4074-8b5b-dbaae6e81b1f" data-linktype="relative-path">3.2.4.6</a></span>,
which are recoverable and for which the client SHOULD initiate the reconnect
procedure.</p></div>