Win32 API 日本語リファレンス
ホーム › Networking.Clustering › PCLUSAPI_CLUSTER_GROUP_CONTROL

PCLUSAPI_CLUSTER_GROUP_CONTROL

コールバック

シグネチャ

DWORD PCLUSAPI_CLUSTER_GROUP_CONTROL(
    HGROUP hGroup,
    HNODE hHostNode,
    DWORD dwControlCode,
    void* lpInBuffer,
    DWORD nInBufferSize,
    void* lpOutBuffer,
    DWORD nOutBufferSize,
    DWORD* lpBytesReturned
);

パラメーター

フィールド型説明
hGroupHGROUP対象となるグループのハンドルです。
hHostNodeHNODENULL 以外の場合は、制御コードが表す操作を実行するノードのハンドルです。 NULL の場合は、グループを所有するノードが 操作を実行します。hHostNode の指定は省略可能です。
dwControlCodeDWORD

実行する操作を指定するグループ制御コードです。 制御コードに対応する構文については、 Control Code Architecture および次のトピックを 参照してください。

lpInBuffervoid*操作に必要な情報を格納した入力バッファーへのポインターです。情報が不要な場合は NULL を 指定します。
nInBufferSizeDWORD入力バッファーに割り当てられたサイズ (バイト単位) です。
lpOutBuffervoid*操作の結果として得られるデータを受け取る出力バッファーへのポインターです。データが返されない場合は NULL を指定します。
nOutBufferSizeDWORD出力バッファーに割り当てられたサイズ (バイト単位) です。
lpBytesReturnedDWORD*操作の結果として得られたデータの実際のサイズ (バイト単位) を返します。この情報が不要な場合は、 lpBytesReturned に NULL を渡します。

公式ドキュメント

グループに影響する 操作を開始します。実行される操作は、 dwControlCode パラメーターに渡された制御コードによって決まります。

戻り値

この関数は、次のいずれかの値を返します。

戻り値 説明
ERROR_SUCCESS
操作は成功しました。操作に出力バッファーが必要な場合、 lpBytesReturned (入力時に NULL でない場合) は、バッファーに返されたデータの 実際のサイズを指します。
ERROR_MORE_DATA
lpOutBuffer が指す出力バッファーが、操作の結果として得られたデータを格納するには 小さすぎました。lpBytesReturned パラメーター (入力時に NULL でない場合) は、 出力バッファーに必要なサイズを指します。ERROR_MORE_DATA を返すのは、出力バッファーを 必要とする操作だけです。lpOutBuffer パラメーターが NULL で、 nOutBufferSize パラメーターが 0 の場合は、ERROR_MORE_DATA ではなく ERROR_SUCCESS が返されることがあります。
システム エラー コード
操作は失敗しました。操作に出力バッファーが必要な場合、 lpBytesReturned で指定された値 (入力時に NULL でない場合) は 信頼できません。

解説(Remarks)

ClusterGroupControl が ERROR_MORE_DATA を返した場合は、 nOutBufferSize に lpBytesReturned が指すバイト数を設定して、 関数を再度呼び出してください。

LPC ハンドルと RPC ハンドルを同じ関数呼び出しに渡さないでください。渡した場合、呼び出しは RPC 例外を発生させ、 さらに破壊的な影響を及ぼすことがあります。LPC ハンドルと RPC ハンドルの作成方法については、 LPC and RPC Handles および OpenCluster を参照してください。

ClusterGroupControl は、 制御コード関数の 1 つです。 制御コードと制御コード関数の詳細については、 Using Control Codes を参照してください。

例

次のコード断片は、ClusterGroupControl の呼び出し例を示しています。

// Allocate buffer.
lpPropList = LocalAlloc( LPTR, cbAllocated );

// Initial call.
dwResult = ClusterGroupControl( hCluster,
                                NULL,
                                CLUSCTL_GROUP_GET_COMMON_PROPERTIES, 
                                NULL,
                                0,
                                lpPropList,
                                cbAllocated,
                                &cbReturned );

// If the buffer was too small, reallocate it to the necessary size,
// returned in cbReturned.
if ( dwResult == ERROR_MORE_DATA )
{
  LocalFree( lpPropList );
  cbAllocated = cbReturned;
  lpPropList = LocalAlloc( LPTR, cbAllocated );
  if ( lpPropList == NULL )
  {
    // Respond to error.
  }
  dwResult = ClusterGroupControl( hCluster,
                                  NULL,
                                  CLUSCTL_GROUP_GET_COMMON_PROPERTIES,
                                  NULL,
                                  0,
                                  lpPropList,
                                  cbAllocated,
                                  &cbReturned );
}

if ( dwResult != ERROR_SUCCESS )
{
  // Respond to error.
}
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)