Поделиться через


Функция 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, которая содержит имя объекта кластера , который активировал событие. В следующем списке описывается содержимое 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
Header clusapi.h
Библиотека ClusAPI.lib
DLL ClusAPI.dll

См. также раздел

CLUSTER_CHANGE

CloseClusterNotifyPort

Функции управления кластером

CreateClusterNotifyPort

RegisterClusterNotify