getClusterNotify 函数 (clusapi.h)
返回与为通知端口存储的下一个通知事件相关的信息。 PCLUSAPI_GET_CLUSTER_NOTIFY类型定义指向此函数的指针。
语法
DWORD GetClusterNotify(
[in] HCHANGE hChange,
[out] DWORD_PTR *lpdwNotifyKey,
[out] LPDWORD lpdwFilterType,
[out] LPWSTR lpszName,
[in, out] LPDWORD lpcchName,
[in, optional] DWORD dwMilliseconds
);
参数
[in] hChange
使用 CreateClusterNotifyPort 函数创建的通知端口的句柄。
[out] lpdwNotifyKey
指向 由 hChange 参数标识的端口的通知键的指针。
[out] lpdwFilterType
指向指示返回的事件类型的标志的指针。 此标志是 CLUSTER_CHANGE 枚举中的下列值之一。
CLUSTER_CHANGE_CLUSTER_PROPERTY (0x40000000)
当群集的内部 网络的 优先级列表发生更改时,队列会收到通知。
CLUSTER_CHANGE_CLUSTER_RECONNECT (0x00080000)
当连接到由 标识的群集时,队列会收到通知
hCluster 参数在短暂断开连接后重新建立。 在此事件之前或之后立即生成的某些事件可能已丢失。 必须关闭所有打开的连接并重新连接才能接收准确的状态信息。
CLUSTER_CHANGE_CLUSTER_STATE (0x20000000)
当群集不可用时,队列会收到通知,这意味着与群集通信的所有尝试都失败。
CLUSTER_CHANGE_GROUP_ADDED (0x00004000)
在群集中创建新 组 时,队列会收到通知。
CLUSTER_CHANGE_GROUP_DELETED (0x00002000)
删除现有组时,队列会收到通知。
CLUSTER_CHANGE_GROUP_PROPERTY (0x00008000)
当组 的属性 发生更改或从组添加或删除 资源 时,队列会收到通知。
CLUSTER_CHANGE_GROUP_STATE (0x00001000)
当组更改状态时,队列会收到通知。 有关可能的组状态值的列表,请参阅 GetClusterGroupState。
CLUSTER_CHANGE_HANDLE_CLOSE (0x80000000)
当与 群集对象 关联的句柄关闭时,队列会收到通知。
CLUSTER_CHANGE_NETINTERFACE_ADDED (0x04000000)
CLUSTER_CHANGE_NETINTERFACE_DELETED (0x02000000)
从群集节点永久删除网络接口时,队列会收到通知。
CLUSTER_CHANGE_NETINTERFACE_PROPERTY (0x08000000)
当现有网络接口 的属性 发生更改时,队列会收到通知。
CLUSTER_CHANGE_NETINTERFACE_STATE (0x01000000)
当网络接口更改状态时,队列会收到通知。 有关可能的网络接口状态值的列表,请参阅 GetClusterNetInterfaceState。
CLUSTER_CHANGE_NETWORK_ADDED (0x00400000)
将新 网络 添加到群集环境时,队列会收到通知。
CLUSTER_CHANGE_NETWORK_DELETED (0x00200000)
从群集环境中永久删除网络时,队列会收到通知。
CLUSTER_CHANGE_NETWORK_PROPERTY (0x00800000)
当现有网络 的属性 发生更改时,队列会收到通知。
CLUSTER_CHANGE_NETWORK_STATE (0x00100000)
当网络更改状态时,队列会收到通知。 有关可能网络状态值的列表,请参阅 GetClusterNetworkState。
CLUSTER_CHANGE_NODE_ADDED (0x00000004)
将新 节点 添加到群集时,队列会收到通知。 仅当群集服务最初安装在节点上时,才能添加节点。
CLUSTER_CHANGE_NODE_DELETED (0x00000002)
从群集中永久删除节点时,队列会收到通知。 可以通过调用 EvictClusterNode 函数从现有群集中永久删除节点。
CLUSTER_CHANGE_NODE_PROPERTY (0x00000008)
此通知保留供将来使用。
CLUSTER_CHANGE_NODE_STATE (0x00000001)
当节点更改状态时,队列会收到通知。 有关可能的节点状态值的列表,请参阅 GetClusterNodeState。
CLUSTER_CHANGE_QUORUM_STATE (0x10000000)
此通知保留供将来使用。
CLUSTER_CHANGE_REGISTRY_ATTRIBUTES (0x00000020)
群集数据库密钥的属性发生更改时,队列会收到通知。 当前唯一定义的群集数据库密钥属性是其安全描述符,可以使用 ClusterRegSetKeySecurity 进行更改。
CLUSTER_CHANGE_REGISTRY_NAME (0x00000010)
当群集数据库密钥的名称发生更改时,队列会收到通知。
CLUSTER_CHANGE_REGISTRY_SUBTREE (0x00000080)
指示其他 CLUSTER_CHANGE_REGISTRY 事件应用于整个群集数据库。 如果不包括此标志,则事件仅适用于指定的键。
CLUSTER_CHANGE_REGISTRY_VALUE (0x00000040)
更改或删除指定群集数据库密钥的值时,队列会收到通知。 可以使用 ClusterRegSetValue 函数更改群集数据库值,并使用 ClusterRegDeleteValue 函数删除群集数据库值。
CLUSTER_CHANGE_RESOURCE_ADDED (0x00000400)
在群集中创建新 资源 时,队列会收到通知。
CLUSTER_CHANGE_RESOURCE_DELETED (0x00000200)
删除资源时,队列会收到通知。
CLUSTER_CHANGE_RESOURCE_PROPERTY (0x00000800)
当资源 的属性、 依赖项或 可能的所有者 节点发生更改时,队列会收到通知。
CLUSTER_CHANGE_RESOURCE_STATE (0x00000100)
当资源更改状态时,队列会收到通知。 有关可能的资源状态值的列表,请参阅 GetClusterResourceState。
CLUSTER_CHANGE_RESOURCE_TYPE_ADDED (0x00020000)
在群集中创建新 资源类型 时,队列会收到通知。
CLUSTER_CHANGE_RESOURCE_TYPE_DELETED (0x00010000)
删除现有资源类型时,队列会收到通知。
CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY (0x00040000)
当资源类型的 属性 发生更改时,队列会收到通知。
[out] lpszName
指向以 null 结尾的 Unicode 字符串的指针,该字符串包含触发事件的 群集对象 的名称。 以下列表按事件类型描述了 lpszName 的内容。 请注意, 表中不包含CLUSTER_CHANGE_REGISTRY_SUBTREE ;此事件类型永远不会由 GetClusterNotify 处理。
CLUSTER_CHANGE_CLUSTER_PROPERTY (0x40000000)
已更改群集的名称。
CLUSTER_CHANGE_CLUSTER_RECONNECT (0x00080000)
断开连接的群集的名称。
CLUSTER_CHANGE_CLUSTER_STATE (0x20000000)
已更改群集的名称。
CLUSTER_CHANGE_GROUP_ADDED (0x00004000)
新 组 名称。
CLUSTER_CHANGE_GROUP_DELETED (0x00002000)
已删除组名称。
CLUSTER_CHANGE_GROUP_PROPERTY (0x00008000)
已更改组的名称。
CLUSTER_CHANGE_GROUP_STATE (0x00001000)
已更改组的名称。
CLUSTER_CHANGE_HANDLE_CLOSE (0x80000000)
正在关闭的对象的名称。
CLUSTER_CHANGE_NODE_ADDED (0x00000004)
新 节点的名称。
CLUSTER_CHANGE_NODE_DELETED (0x00000002)
已删除节点的名称。
CLUSTER_CHANGE_NODE_PROPERTY (0x00000008)
已更改节点的名称。
CLUSTER_CHANGE_NODE_STATE (0x00000001)
已更改节点的名称。
CLUSTER_CHANGE_REGISTRY_ATTRIBUTES (0x00000020)
已更改的 群集数据库 密钥的相对名称。
CLUSTER_CHANGE_REGISTRY_NAME (0x00000010)
已更改的群集数据库密钥的相对名称。
CLUSTER_CHANGE_REGISTRY_VALUE (0x00000040)
已更改的群集数据库密钥的相对名称。
CLUSTER_CHANGE_RESOURCE_ADDED (0x00000400)
新 资源 名称。
CLUSTER_CHANGE_RESOURCE_DELETED (0x00000200)
已删除的资源名称。
CLUSTER_CHANGE_RESOURCE_PROPERTY (0x00000800)
已更改资源的名称。
CLUSTER_CHANGE_RESOURCE_STATE (0x00000100)
已更改资源的名称。
CLUSTER_CHANGE_RESOURCE_TYPE_ADDED (0x00020000)
新 资源类型的名称。
CLUSTER_CHANGE_RESOURCE_TYPE_DELETED (0x00010000)
已删除的资源类型的名称。
[in, out] lpcchName
指向以字符计数表示的 lpszName 缓冲区大小的指针。 在输入时,指定缓冲区可以容纳的最大字符数,包括终止 NULL。 在输出时,指定结果名称中的字符数,不包括终止 NULL。
[in, optional] dwMilliseconds
可选的超时值,该值指定调用方愿意等待通知的时间。
返回值
如果操作成功,函数将返回 ERROR_SUCCESS。
如果操作失败,函数将返回 系统错误代码。 下面是可能的值。
返回代码/值 | 说明 |
---|---|
|
hChange 参数中表示的句柄无效或已被另一个线程关闭。 |
|
在成功返回通知之前,调用已超时。 |
|
lpszName 参数指向的缓冲区不够大,无法保存结果。 lpcchName 参数返回结果中的字符数,不包括终止 NULL。 |
备注
请注意, lpcchName 参数引用字符计数而不是字节计数,并且返回的大小在计数中不包括终止 NULL 。 有关调整缓冲区大小的详细信息,请参阅 数据大小约定。
通知是异步的,应用程序处理通知时群集的状态可能与生成通知时的群集状态不同。
示例
请参阅 通知端口示例。
要求
最低受支持的客户端 | 无受支持的版本 |
最低受支持的服务器 | Windows Server 2008 企业版、Windows Server 2008 Datacenter |
目标平台 | Windows |
标头 | clusapi.h |
Library | ClusAPI.lib |
DLL | ClusAPI.dll |