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

如果操作失败,函数将返回 系统错误代码。 下面是可能的值。

返回代码/值 说明
ERROR_INVALID_HANDLE
6
hChange 参数中表示的句柄无效或已被另一个线程关闭。
WAIT_TIMEOUT
258 (0x102)
在成功返回通知之前,调用已超时。
ERROR_MORE_DATA
234 (0xEA)
lpszName 参数指向的缓冲区不够大,无法保存结果。 lpcchName 参数返回结果中的字符数,不包括终止 NULL

备注

请注意, lpcchName 参数引用字符计数而不是字节计数,并且返回的大小在计数中不包括终止 NULL 。 有关调整缓冲区大小的详细信息,请参阅 数据大小约定

通知是异步的,应用程序处理通知时群集的状态可能与生成通知时的群集状态不同。

示例

请参阅 通知端口示例

要求

   
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2008 企业版、Windows Server 2008 Datacenter
目标平台 Windows
标头 clusapi.h
Library ClusAPI.lib
DLL ClusAPI.dll

另请参阅

CLUSTER_CHANGE

CloseClusterNotifyPort

群集管理功能

CreateClusterNotifyPort

RegisterClusterNotify