Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

234 lines
5.9 KiB

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1997-2001 Microsoft Corporation
//
// Module Name:
// ClusWrap.h
//
// Description:
// Wrapper functions for Cluster APIs.
//
// Author:
// Galen Barbee (galenb) 15-Aug-1998
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef __CLUSWRAP_H
#define __CLUSWRAP_H
#include "clusapi.h"
#include "clstrcmp.h"
#define CLUS_DEFAULT_TIMEOUT 10000
//////////////////////////////////////////////////////////////////////////
// Standard cluster API wrappers.
//////////////////////////////////////////////////////////////////////////
DWORD WINAPI WrapGetClusterInformation(
IN HCLUSTER hCluster,
OUT LPWSTR * ppwszClusterName,
OUT OPTIONAL LPCLUSTERVERSIONINFO pClusterInfo
);
DWORD WINAPI WrapGetClusterQuorumResource(
IN HCLUSTER hCluster,
OUT LPWSTR * ppwszResourceName,
OUT LPWSTR * ppwszDeviceName,
OUT LPDWORD pdwMaxQuorumLogSize
);
DWORD WINAPI WrapClusterEnum(
IN HCLUSENUM hEnum,
IN DWORD dwIndex,
OUT LPDWORD pdwType,
OUT LPWSTR * plpwszName
);
DWORD WINAPI WrapGetClusterNodeId(
IN HNODE hNode,
OUT LPWSTR * ppwszNodeId
);
CLUSTER_GROUP_STATE WINAPI WrapGetClusterGroupState(
IN HGROUP hGroup,
OUT OPTIONAL LPWSTR * ppwszNodeName = NULL
);
DWORD WINAPI WrapClusterGroupEnum(
IN HGROUPENUM hGroupEnum,
IN DWORD dwIndex,
OUT LPDWORD pdwType,
OUT LPWSTR * ppwszGroupName
);
DWORD WINAPI WrapClusterNodeEnum(
IN HNODEENUM hEnum,
IN DWORD dwIndex,
OUT LPDWORD pdwType,
OUT LPWSTR * ppwszNodeName
);
DWORD WINAPI WrapClusterNetworkEnum(
IN HNETWORKENUM hEnum,
IN DWORD dwIndex,
OUT LPDWORD pdwType,
OUT LPWSTR * ppwszNetworkName
);
CLUSTER_RESOURCE_STATE WINAPI WrapGetClusterResourceState(
IN HRESOURCE hResource,
OUT OPTIONAL LPWSTR * ppwszNodeName,
OUT OPTIONAL LPWSTR * ppwszGroupName
);
DWORD WINAPI WrapClusterResourceEnum(
IN HRESENUM hResEnum,
IN DWORD dwIndex,
OUT LPDWORD pdwType,
OUT LPWSTR * ppwszResourceName
);
DWORD WINAPI WrapClusterResourceTypeEnum(
IN HRESTYPEENUM hResEnum,
IN DWORD dwIndex,
OUT LPDWORD pdwType,
OUT LPWSTR * ppwszResTyoeName
);
HRESULT HrWrapOnlineClusterResource(
HCLUSTER hCluster,
HRESOURCE hResource,
DWORD nWait = 0,
long * pbPending = NULL
);
DWORD ScWrapOnlineClusterResource(
IN HCLUSTER hCluster,
IN HRESOURCE hResource,
IN DWORD nWait = 0,
OUT long * pbPending = NULL
);
HRESULT HrWrapOfflineClusterResource(
HCLUSTER hCluster,
HRESOURCE hResource,
DWORD nWait = 0,
long * pbPending = NULL
);
DWORD ScWrapOfflineClusterResource(
IN HCLUSTER hCluster,
IN HRESOURCE hResource,
IN DWORD nWait = 0,
OUT long * pbPending = NULL
);
HRESULT HrWrapOnlineClusterGroup(
IN HCLUSTER hCluster,
IN HGROUP hGroup,
IN HNODE hNode = NULL,
IN DWORD nWait = 0,
OUT long * pbPending = NULL
);
DWORD ScWrapOnlineClusterGroup(
IN HCLUSTER hCluster,
IN HGROUP hGroup,
IN HNODE hNode = NULL,
IN DWORD nWait = 0,
OUT long * pbPending = NULL
);
HRESULT HrWrapOfflineClusterGroup(
IN HCLUSTER hCluster,
IN HGROUP hGroup,
IN DWORD nWait = 0,
OUT long * pbPending = NULL
);
DWORD ScWrapOfflineClusterGroup(
IN HCLUSTER hCluster,
IN HGROUP hGroup,
IN DWORD nWait = 0,
OUT long * pbPending = NULL
);
HRESULT HrWrapMoveClusterGroup(
IN HCLUSTER hCluster,
IN HGROUP hGroup,
IN HNODE hNode = NULL,
IN DWORD nWait = 0,
OUT long * pbPending = NULL
);
DWORD ScWrapMoveClusterGroup(
IN HCLUSTER hCluster,
IN HGROUP hGroup,
IN HNODE hNode = NULL,
IN DWORD nWait = 0,
OUT long * pbPending = NULL
);
DWORD ScWrapClusterResourceControlGet(
HRESOURCE hResourceIn
, HNODE hHostNodeIn
, DWORD dwControlCodeIn
, LPVOID lpInBufferIn
, DWORD cbInBufferSizeIn
, LPVOID * lppOutBufferOut
, LPDWORD lpcbBytesReturnedOut
);
////////////////////////////////////////////////////////////////////
// Custom helper functions/classes/etc.
////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusterNotifyPort
//
// Description:
// This class is a wrapper for the cluster notify port
//
// Inheritance:
// CObjectProperty
//
//--
/////////////////////////////////////////////////////////////////////////////
class CClusterNotifyPort
{
public:
CClusterNotifyPort();
~CClusterNotifyPort();
DWORD Create(
HCHANGE hChange = (HCHANGE) INVALID_HANDLE_VALUE,
HCLUSTER hCluster = (HCLUSTER) INVALID_HANDLE_VALUE,
DWORD dwFilter = 0,
DWORD_PTR dwNotifyKey = 0
);
DWORD Close();
DWORD Register( DWORD dwFilterType, HANDLE hObject, DWORD_PTR dwNotifyKey = 0 );
DWORD GetNotify();
DWORD_PTR m_dwNotifyKey;
DWORD m_dwFilterType;
WCHAR* m_szName;
DWORD m_cchName;
protected:
HCHANGE m_hChange;
}; //*** class CClusterNotifyPort
#endif __CLUSWRAP_H