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 |
Library | ResUtils.lib |
[DLL] | ResUtils.dll |