PRESUTIL_GET_RESOURCE_DEPENDENCY_BY_NAME
コールバックシグネチャ
HRESOURCE PRESUTIL_GET_RESOURCE_DEPENDENCY_BY_NAME(
HCLUSTER hCluster,
HANDLE hSelf,
LPWSTR lpszResourceType,
BOOL bRecurse
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| hCluster | HCLUSTER | リソースが属するクラスターへのハンドルです。 |
| hSelf | HANDLE | 依存する側のリソースへのハンドルです。このリソースは 1 つ以上のリソースに依存しています。 |
| lpszResourceType | LPWSTR | 返す依存関係のリソースの種類を指定する、NULL で終わる Unicode 文字列です。 |
| bRecurse | BOOL | 検索の範囲を決定します。TRUE の場合、この関数は依存する側のリソースの配下にある依存関係ツリー全体を調べます。FALSE の場合、この関数は依存する側のリソースが直接依存しているリソースだけを調べます。 |
公式ドキュメント
指定した クラスター内の指定した リソースの 依存関係を列挙し、指定した種類の依存関係へのハンドルを返します。PRESUTIL_GET_RESOURCE_DEPENDENCY_BY_NAME 型は、この関数へのポインターを定義します。
戻り値
操作が成功した場合、この関数は hSelf で指定されたリソースが依存しているリソースのいずれかへのハンドルを返します。呼び出し元は、CloseClusterResource を呼び出してハンドルを閉じる必要があります。
操作が失敗した場合、この関数は NULL を返します。詳細については、GetLastError 関数を呼び出してください。
| 戻り値 | 説明 |
|---|---|
|
|
|
操作は成功しませんでした。詳細については、GetLastError 関数を呼び出してください。 |
解説(Remarks)
ResUtilGetResourceDependencyByName、ResUtilGetResourceDependency、ResUtilGetResourceNameDependency の各関数は、いずれも特定のリソースの種類の依存関係へのアクセスを提供するという点で非常によく似ています。次の一覧に、これらの関数の違いをまとめます。
| 関数 | 依存する側のリソースの指定方法 | クラスターハンドルの要否 |
|---|---|---|
| ResUtilGetResourceDependency | リソースハンドル | 不要 |
| ResUtilGetResourceDependencyByName | リソースハンドル | 必要 |
| ResUtilGetResourceNameDependency | リソース名 | 不要 |
ResUtilGetResourceDependencyByName は、リソース DLL のどのエントリポイント関数からも呼び出さないでください。ResUtilGetResourceDependencyByName はワーカースレッドから安全に呼び出せます。詳細については、Function Calls to Avoid in Resource DLLs を参照してください。
例
次の例が示すように、リソース A が Physical Disk リソースに依存していることが分かっている場合は、ResUtilGetResourceDependencyByName を使用してその依存関係へのハンドルを取得できます。
// String initialization and error checking omitted.
HCLUSTER hCluster = OpenCluster( lpszClusterName );
//
// Resource A depends on a storage class resource.
// Get a handle to that resource.
//
HRESOURCE hResA = OpenClusterResource( hCluster, lpszResName );
HRESOURCE hResD = ResUtilGetResourceDependencyByName(
hCluster,
hResA,
L"Physical Disk",
TRUE );
// Close handles and free memory.
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)