ホーム › Networking.Clustering › PRESUTIL_ENUM_RESOURCES
PRESUTIL_ENUM_RESOURCES
コールバックシグネチャ
DWORD PRESUTIL_ENUM_RESOURCES(
HRESOURCE hSelf,
LPWSTR lpszResTypeName,
LPRESOURCE_CALLBACK pResCallBack,
void* pParameter
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| hSelf | HRESOURCE | クラスターリソースへの省略可能なハンドルです。hSelf で指定されたリソースに対しては、コールバック関数は呼び出されません。 |
| lpszResTypeName | LPWSTR | 列挙するリソースの範囲を絞り込むリソースの種類の名前への省略可能なポインターです。lpszResTypeName を指定した場合、指定した種類のリソースだけが列挙されます。 |
| pResCallBack | LPRESOURCE_CALLBACK | 列挙された各リソースに対して呼び出される、ユーザー定義の関数へのポインターです。この関数は ResourceCallback コールバック関数の定義に従う必要があります(引数名は定義の一部ではなく、ここでは分かりやすさのために付けています)。 |
| pParameter | void* | コールバック関数に任意の種類のデータを渡すための汎用バッファーです。ResUtilEnumResources はこの引数をまったく使用せず、ポインターをコールバック関数に渡すだけです。この引数に NULL を渡せるかどうかは、コールバック関数の実装方法によります。 |
公式ドキュメント
戻り値
操作が成功した場合、または pResCallBack が ERROR_NO_MORE_ITEMS を返した場合、この関数は ERROR_SUCCESS を返します。
操作が失敗した場合、この関数は直ちに列挙を中止し、コールバック関数が返した値を返します。
解説(Remarks)
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;
}
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)