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 Enterprise、Windows Server 2008 Datacenter |
目標平台 | Windows |
標頭 | resapi.h |
程式庫 | ResUtils.lib |
Dll | ResUtils.dll |