ResUtilEnumResources 函数 (resapi.h)
枚举本地群集中的所有资源,并为每个资源启动用户定义的操作。 PRESUTIL_ENUM_RESOURCES类型定义指向此函数的指针。
语法
DWORD ResUtilEnumResources(
[in] HRESOURCE hSelf,
[in] LPCWSTR lpszResTypeName,
[in] LPRESOURCE_CALLBACK pResCallBack,
[in] PVOID pParameter
);
参数
[in] hSelf
群集资源的可选句柄。 不会为 hSelf 标识的资源调用回调函数。
[in] lpszResTypeName
指向 资源类型 名称的可选指针,该名称可缩小要枚举的资源范围。 如果指定 了 lpszResTypeName ,则仅枚举指定类型的资源。
[in] pResCallBack
指向将为每个枚举资源调用的用户定义函数的指针。 此函数必须符合 ResourceCallback 回调函数的定义, (请注意,参数名称不是定义的一部分;为清楚起见,已在此处添加它们,) :
DWORD (*LPRESOURCE_CALLBACK)(
HRESOURCE hSelf,
HRESOURCE hEnum,
PVOID pParameter
);
[in] pParameter
一个泛型缓冲区,可用于将任何类型的数据传递给回调函数。 ResUtilEnumResources 根本不使用此参数,它只是将指针传递到回调函数。 能否为 参数传递 NULL 取决于回调函数的实现方式。
返回值
如果操作成功,或者 pResCallBack 返回 ERROR_NO_MORE_ITEMS,则函数将返回 ERROR_SUCCESS。
如果操作失败,函数会立即停止枚举并返回回调函数返回的值。
注解
ResUtilEnumResources 是 ClusterResourceEnum 函数的一种方便且易于使用的替代方法。
ResUtilEnumResources 必须在群集节点上运行,因为它仅连接到本地群集。 ResUtilEnumResourcesEx 函数允许指定远程群集。
以下示例使用 ResUtilEnumResources 列出群集中所有资源的名称和状态。
//////////////////////////////////////////////////////////////////////
// ClusDocEx_EnumDemo.cpp
//
// Uses the ResUtilEnumResources function to list the names and
// states of all cluster resources.
//
// To compile and run this example you will need two other examples
// from the documentation: ClusDocEx.h (see "ClusDocEx.h") and
// ClusDocEx_GetControlCodeOutput.cpp (see "Getting Information with
// Control Codes").
//
//////////////////////////////////////////////////////////////////////
#include "ClusDocEx.h"
#include "ClusDocEx_GetControlCodeOutput.cpp"
DWORD
MyCallbackFunction(
HRESOURCE hSelf,
HRESOURCE hCurrentEnum,
PVOID pData );
LPRESOURCE_CALLBACK g_pMyCallbackFunction = &MyCallbackFunction;
int main( void )
{
wprintf( L"\n\nResource (State)\n----------------\n" );
DWORD dwResult = ResUtilEnumResources(
NULL,
NULL,
g_pMyCallbackFunction,
NULL );
if( dwResult != ERROR_SUCCESS )
{
ClusDocEx_DebugPrint( L"ResUtilEnumResources returned an error.", dwResult );
return 1;
}
else
return 0;
}
DWORD
MyCallbackFunction(
HRESOURCE hSelf,
HRESOURCE hCurrentEnum,
PVOID pData )
{
DWORD dwResult = ERROR_SUCCESS,
cbNameSize = 0,
dwState = 0;
WCHAR* pszState = NULL;
WCHAR* pszEnumName = ClusDocEx_ResGetControlCodeOutput(
hCurrentEnum,
NULL,
CLUSCTL_RESOURCE_GET_NAME,
&cbNameSize );
if( pszEnumName == NULL )
{
dwResult = GetLastError();
goto EndFunc;
}
dwState = GetClusterResourceState(
hCurrentEnum,
NULL,
NULL,
NULL,
NULL );
switch( dwState )
{
case ClusterResourceOnline:
pszState = L"Online";
break;
case ClusterResourceOffline:
pszState = L"Offline";
break;
case ClusterResourcePending:
pszState = L"Pending";
break;
case ClusterResourceOnlinePending:
pszState = L"OnlinePending";
break;
case ClusterResourceOfflinePending:
pszState = L"OfflinePending";
break;
case ClusterResourceFailed:
pszState = L"Failed";
break;
case ClusterResourceInitializing:
pszState = L"Initializing";
break;
default:
pszState = L"Unknown";
break;
}
wprintf( L"%ls (%ls)\n", pszEnumName, pszState );
EndFunc:
LocalFree( pszEnumName );
return dwResult;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 无受支持的版本 |
最低受支持的服务器 | Windows Server 2008 企业版、Windows Server 2008 Datacenter |
目标平台 | Windows |
标头 | resapi.h |
Library | ResUtils.lib |
DLL | ResUtils.dll |