CLUS_STARTING_PARAMS 结构 (clusapi.h)

指示 节点 尝试启动 群集服务 是否表示尝试形成或加入 群集,以及该节点之前是否尝试启动此版本的群集服务。 资源 DLL 使用CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1和CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2控制代码接收CLUS_STARTING_PARAMS结构。

语法

typedef struct CLUS_STARTING_PARAMS {
  DWORD dwSize;
  BOOL  bForm;
  BOOL  bFirst;
} CLUS_STARTING_PARAMS, *PCLUS_STARTING_PARAMS;

成员

dwSize

结构的字节大小。

bForm

指示群集服务的此特定启动是表示窗体还是联接操作。

TRUE

启动群集服务的节点正在尝试形成群集。 当前没有其他节点处于活动状态。

FALSE

启动群集服务的节点正在尝试加入现有群集。 至少有一个其他节点当前处于活动状态。

bFirst

指示此版本的群集服务是否已在节点上启动。

TRUE

节点首次启动群集服务的某个版本。

FALSE

该节点以前已启动此版本的群集服务。

注解

CLUS_STARTING_PARAMS结构允许资源 DLL 响应CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1,并根据启动情况CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2控制代码。 例如,DLL 可能会在群集形成时执行特殊的初始化步骤,并执行另一组操作以响应联接。

示例

以下示例演示 ResourceTypeControl 的缩写实现。 有关详细信息,请参阅 Implementing ResourceTypeControl

const LPWSTR g_MY_RESOURCE_TYPE_NAME[] =
{
    L"MyType_0",
    L"MyType_1",
    L"MyType_2",
    L"MyType_3"
};

DWORD WINAPI MyDllResourceTypeControl(
    IN LPCWSTR ResourceTypeName,
    IN DWORD ControlCode,
    IN PVOID InBuffer,
    IN DWORD InBufferSize,
    OUT PVOID OutBuffer,
    IN DWORD OutBufferSize,
    OUT LPDWORD BytesReturned
)
{
    DWORD status;
    PCLUS_STARTING_PARAMS pStart;

    switch ( ControlCode )
    {
        case CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1:

            if( lstrcmpi( ResourceTypeName, g_MY_RESOURCE_TYPE_NAME[2] ) == 0 )
            {
                pStart = (PCLUS_STARTING_PARAMS) InBuffer;
                if( ( pStart->bForm == TRUE ) && 
                    ( pStart->bFirst == FALSE ) )
                {
                //  Hypothetical initialization code for resource type "MyType_2"
                //  Fires only when the cluster forms, but not for first-time launches of the Cluster service.
                }
            }
            else
            {
                status = ERROR_INVALID_FUNCTION;
            }

            break;

        case CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2:

            pStart = (PCLUS_STARTING_PARAMS) InBuffer;
            if( pStart->bFirst == TRUE )
            {
            //  Hypothetical verification code for all resource types supported by the DLL
            //  Fires for first-time launches of the Cluster service
            }
            else
            {
                status = ERROR_INVALID_FUNCTION;
            }

            break;

    //  case ( Other control codes )....
    //      ...
    //      break;

        default:
            status = ERROR_INVALID_FUNCTION;
            break;

    }
    // end switch

    return( status );

}
// MyDllResourceTypeControl

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2008 Enterprise、Windows Server 2008 Datacenter
标头 clusapi.h

另请参阅

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2