共用方式為


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

另請參閱

ClusterOpenEnum

OpenCluster

資源公用程式函式

ResourceCallback