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


Функция ClusterGroupControl (clusapi.h)

Инициирует операцию, влияющую на группу. Выполняемая операция зависит от кода элемента управления , переданного параметру dwControlCode .

Синтаксис

DWORD ClusterGroupControl(
  [in]            HGROUP  hGroup,
  [in, optional]  HNODE   hHostNode,
  [in]            DWORD   dwControlCode,
  [in, optional]  LPVOID  lpInBuffer,
  [in]            DWORD   nInBufferSize,
  [out, optional] LPVOID  lpOutBuffer,
  [in]            DWORD   nOutBufferSize,
  [out, optional] LPDWORD lpBytesReturned
);

Параметры

[in] hGroup

Дескриптор для затронутой группы.

[in, optional] hHostNode

Если значение не равно NULL, обратитесь к узлу, чтобы выполнить операцию, представленную кодом элемента управления. Если значение РАВНО NULL, операция выполняется узлом , которому принадлежит группа. Указание hHostNode является необязательным.

[in] dwControlCode

Код элемента управления группы, указывающий операцию, которую необходимо выполнить. Синтаксис, связанный с кодом элемента управления, см. в разделе
Архитектура кода управления и следующие разделы:

[in, optional] lpInBuffer

Указатель на входной буфер, содержащий сведения, необходимые для операции, или значение NULL , если информация не требуется.

[in] nInBufferSize

Выделенный размер (в байтах) входного буфера.

[out, optional] lpOutBuffer

Указатель на выходной буфер для получения данных, полученных в результате операции, или значение NULL , если данные не будут возвращены.

[in] nOutBufferSize

Выделенный размер (в байтах) выходного буфера.

[out, optional] lpBytesReturned

Возвращает фактический размер (в байтах) данных, полученных в результате операции. Если эти сведения не требуются, передайте значение NULL для lpBytesReturned.

Возвращаемое значение

Функция возвращает одно из следующих значений.

Код возврата Описание
ERROR_SUCCESS
Операция выполнена успешно. Если операция требовала выходного буфера, lpBytesReturned (если не ЗНАЧЕНИЕ NULL для входных данных) указывает на фактический размер данных, возвращаемых в буфере.
ERROR_MORE_DATA
Выходной буфер, на который указывает lpOutBuffer , не был достаточно велик для хранения данных, полученных в результате операции. Параметр lpBytesReturned (если не NULL для входных данных) указывает на размер, необходимый для выходного буфера. Только операции, для которых требуется выходной буфер, возвращают ERROR_MORE_DATA. Если параметр lpOutBuffer имеет значение NULL , а параметр nOutBufferSize равен нулю, можно вернуть ERROR_SUCCESS , а не ERROR_MORE_DATA.
Код системной ошибки
Операция не была успешной. Если для операции требуется выходной буфер, значение, заданное параметром lpBytesReturned (если для входных данных не задано значение NULL ), является ненадежным.

Комментарии

Если ClusterGroupControl возвращает ERROR_MORE_DATA, задайте для nOutBufferSize число байтов, на которые указывает lpBytesReturned , и вызовите функцию еще раз.

Не передайте маркеры LPC и RPC в один вызов функции. В противном случае вызов вызовет исключение RPC и может иметь дополнительные разрушительные последствия. Сведения о создании дескрипторов LPC и RPC см. в разделах LPC и RPC Handles и OpenCluster.

ClusterGroupControl — это одна из функций кода элемента управления. Дополнительные сведения о кодах элементов управления и функциях кода элементов управления см. в разделе Использование кодов элементов управления.

Примеры

В следующем фрагменте кода демонстрируется вызов ClusterGroupControl.

// Allocate buffer.
lpPropList = LocalAlloc( LPTR, cbAllocated );

// Initial call.
dwResult = ClusterGroupControl( hCluster,
                                NULL,
                                CLUSCTL_GROUP_GET_COMMON_PROPERTIES, 
                                NULL,
                                0,
                                lpPropList,
                                cbAllocated,
                                &cbReturned );

// If the buffer was too small, reallocate it to the necessary size,
// returned in cbReturned.
if ( dwResult == ERROR_MORE_DATA )
{
  LocalFree( lpPropList );
  cbAllocated = cbReturned;
  lpPropList = LocalAlloc( LPTR, cbAllocated );
  if ( lpPropList == NULL )
  {
    // Respond to error.
  }
  dwResult = ClusterGroupControl( hCluster,
                                  NULL,
                                  CLUSCTL_GROUP_GET_COMMON_PROPERTIES,
                                  NULL,
                                  0,
                                  lpPropList,
                                  cbAllocated,
                                  &cbReturned );
}

if ( dwResult != ERROR_SUCCESS )
{
  // Respond to error.
}

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows Server 2008 Корпоративная, Windows Server 2008 Datacenter
Целевая платформа Windows
Header clusapi.h
Библиотека ClusAPI.lib
DLL ClusAPI.dll

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

Коды элементов управления группы

OpenCluster