PCLUSAPI_GET_CLUSTER_NOTIFY
コールバックシグネチャ
DWORD PCLUSAPI_GET_CLUSTER_NOTIFY(
HCHANGE hChange,
UINT_PTR* lpdwNotifyKey,
DWORD* lpdwFilterType,
LPWSTR lpszName,
DWORD* lpcchName,
DWORD dwMilliseconds
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| hChange | HCHANGE | CreateClusterNotifyPort 関数で作成された通知ポートのハンドルです。 |
| lpdwNotifyKey | UINT_PTR* | hChange パラメーターで識別されるポートの通知キーへのポインターです。 |
| lpdwFilterType | DWORD* | 返されるイベントの種類を示すフラグへのポインターです。このフラグは、CLUSTER_CHANGE 列挙型の次の値のいずれかです。 CLUSTER_CHANGE_CLUSTER_PROPERTY (0x40000000)クラスターの内部ネットワークの優先順位付きリストが変更されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_CLUSTER_RECONNECT (0x00080000)hCluster パラメーターで識別されるクラスターへの接続が、短時間の切断の後に再確立されたときに、キューが通知を受け取ります。このイベントの直前または直後に生成された一部のイベントは、失われている可能性があります。正確な状態情報を受け取るには、開いているすべての接続を閉じて再接続する必要があります。 CLUSTER_CHANGE_CLUSTER_STATE (0x20000000)クラスターが利用できなくなったとき、つまりクラスターとの通信の試行がすべて失敗するようになったときに、キューが通知を受け取ります。 CLUSTER_CHANGE_GROUP_ADDED (0x00004000)新しいグループがクラスター内に作成されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_GROUP_DELETED (0x00002000)既存のグループが削除されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_GROUP_PROPERTY (0x00008000)グループのプロパティが変更されたとき、またはグループにリソースが追加またはグループから削除されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_GROUP_STATE (0x00001000)グループの状態が変化したときに、キューが通知を受け取ります。グループの状態としてとり得る値の一覧については、GetClusterGroupState を参照してください。 CLUSTER_CHANGE_HANDLE_CLOSE (0x80000000)クラスターオブジェクトに関連付けられたハンドルが閉じられたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_NETINTERFACE_ADDED (0x04000000)新しいネットワークインターフェイスがクラスターノードに追加されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_NETINTERFACE_DELETED (0x02000000)ネットワークインターフェイスがクラスターノードから恒久的に削除されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_NETINTERFACE_PROPERTY (0x08000000)既存のネットワークインターフェイスのプロパティが変更されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_NETINTERFACE_STATE (0x01000000)ネットワークインターフェイスの状態が変化したときに、キューが通知を受け取ります。ネットワークインターフェイスの状態としてとり得る値の一覧については、GetClusterNetInterfaceState を参照してください。 CLUSTER_CHANGE_NETWORK_ADDED (0x00400000)新しいネットワークがクラスター環境に追加されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_NETWORK_DELETED (0x00200000)ネットワークがクラスター環境から恒久的に削除されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_NETWORK_PROPERTY (0x00800000)既存のネットワークのプロパティが変更されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_NETWORK_STATE (0x00100000)ネットワークの状態が変化したときに、キューが通知を受け取ります。ネットワークの状態としてとり得る値の一覧については、GetClusterNetworkState を参照してください。 CLUSTER_CHANGE_NODE_ADDED (0x00000004)新しいノードがクラスターに追加されたときに、キューが通知を受け取ります。ノードを追加できるのは、そのノードに Cluster サービスが最初にインストールされるときだけです。 CLUSTER_CHANGE_NODE_DELETED (0x00000002)ノードがクラスターから恒久的に削除されたときに、キューが通知を受け取ります。既存のクラスターからノードを恒久的に削除するには、EvictClusterNode 関数を呼び出します。 CLUSTER_CHANGE_NODE_PROPERTY (0x00000008)この通知は将来の使用のために予約されています。 CLUSTER_CHANGE_NODE_STATE (0x00000001)ノードの状態が変化したときに、キューが通知を受け取ります。ノードの状態としてとり得る値の一覧については、GetClusterNodeState を参照してください。 CLUSTER_CHANGE_QUORUM_STATE (0x10000000)この通知は将来の使用のために予約されています。 CLUSTER_CHANGE_REGISTRY_ATTRIBUTES (0x00000020)クラスターデータベースのキーの属性が変更されたときに、キューが通知を受け取ります。現在定義されているクラスターデータベースのキーの属性はセキュリティ記述子のみで、これは ClusterRegSetKeySecurity で変更できます。 CLUSTER_CHANGE_REGISTRY_NAME (0x00000010)クラスターデータベースのキーの名前が変更されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_REGISTRY_SUBTREE (0x00000080)他の CLUSTER_CHANGE_REGISTRY イベントがクラスターデータベース全体に適用されることを示します。このフラグが含まれていない場合、イベントは指定されたキーにのみ適用されます。 CLUSTER_CHANGE_REGISTRY_VALUE (0x00000040)指定されたクラスターデータベースのキーの値が変更または削除されたときに、キューが通知を受け取ります。クラスターデータベースの値は、ClusterRegSetValue 関数で変更でき、ClusterRegDeleteValue 関数で削除できます。 CLUSTER_CHANGE_RESOURCE_ADDED (0x00000400)新しいリソースがクラスター内に作成されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_RESOURCE_DELETED (0x00000200)リソースが削除されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_RESOURCE_PROPERTY (0x00000800)リソースのプロパティ、依存関係、または実行可能所有者ノードが変更されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_RESOURCE_STATE (0x00000100)リソースの状態が変化したときに、キューが通知を受け取ります。リソースの状態としてとり得る値の一覧については、GetClusterResourceState を参照してください。 CLUSTER_CHANGE_RESOURCE_TYPE_ADDED (0x00020000)新しいリソースの種類がクラスター内に作成されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_RESOURCE_TYPE_DELETED (0x00010000)既存のリソースの種類が削除されたときに、キューが通知を受け取ります。 CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY (0x00040000)リソースの種類のプロパティが変更されたときに、キューが通知を受け取ります。 |
| lpszName | LPWSTR | イベントを発生させたクラスターオブジェクトの名前を格納する、null 終端の Unicode 文字列へのポインターです。次の一覧は、イベントの種類ごとに lpszName の内容を説明しています。CLUSTER_CHANGE_REGISTRY_SUBTREE は表に含まれていない点に注意してください。このイベントの種類が GetClusterNotify で処理されることはありません。 CLUSTER_CHANGE_CLUSTER_PROPERTY (0x40000000)変更されたクラスターの名前。 CLUSTER_CHANGE_CLUSTER_RECONNECT (0x00080000)切断されたクラスターの名前。 CLUSTER_CHANGE_CLUSTER_STATE (0x20000000)変更されたクラスターの名前。 CLUSTER_CHANGE_GROUP_ADDED (0x00004000)新しいグループの名前。 CLUSTER_CHANGE_GROUP_DELETED (0x00002000)削除されたグループの名前。 CLUSTER_CHANGE_GROUP_PROPERTY (0x00008000)変更されたグループの名前。 CLUSTER_CHANGE_GROUP_STATE (0x00001000)変更されたグループの名前。 CLUSTER_CHANGE_HANDLE_CLOSE (0x80000000)閉じられようとしているオブジェクトの名前。 CLUSTER_CHANGE_NODE_ADDED (0x00000004)新しいノードの名前。 CLUSTER_CHANGE_NODE_DELETED (0x00000002)削除されたノードの名前。 CLUSTER_CHANGE_NODE_PROPERTY (0x00000008)変更されたノードの名前。 CLUSTER_CHANGE_NODE_STATE (0x00000001)変更されたノードの名前。 CLUSTER_CHANGE_REGISTRY_ATTRIBUTES (0x00000020)変更されたクラスターデータベースのキーの相対名。 CLUSTER_CHANGE_REGISTRY_NAME (0x00000010)変更されたクラスターデータベースのキーの相対名。 CLUSTER_CHANGE_REGISTRY_VALUE (0x00000040)変更されたクラスターデータベースのキーの相対名。 CLUSTER_CHANGE_RESOURCE_ADDED (0x00000400)新しいリソースの名前。 CLUSTER_CHANGE_RESOURCE_DELETED (0x00000200)削除されたリソースの名前。 CLUSTER_CHANGE_RESOURCE_PROPERTY (0x00000800)変更されたリソースの名前。 CLUSTER_CHANGE_RESOURCE_STATE (0x00000100)変更されたリソースの名前。 CLUSTER_CHANGE_RESOURCE_TYPE_ADDED (0x00020000)新しいリソースの種類の名前。 CLUSTER_CHANGE_RESOURCE_TYPE_DELETED (0x00010000)削除されたリソースの種類の名前。 |
| lpcchName | DWORD* | lpszName バッファーのサイズを文字数で表した値へのポインターです。入力時には、終端の NULL を含めて、バッファーが保持できる最大文字数を指定します。出力時には、終端の NULL を除いた、結果として得られる名前の文字数が格納されます。 |
| dwMilliseconds | DWORD | 省略可能なタイムアウト値で、呼び出し元が通知をどれだけの間待機するかを指定します。 |
公式ドキュメント
通知ポートに格納されている、次の通知イベントに関する情報を返します。PCLUSAPI_GET_CLUSTER_NOTIFY 型は、この関数へのポインターを定義します。
戻り値
操作が成功した場合、関数は ERROR_SUCCESS を返します。
操作が失敗した場合、関数はシステムエラーコードを返します。とり得る値は次のとおりです。
| リターンコード/値 | 説明 |
|---|---|
| hChange パラメーターで示されるハンドルが無効であるか、別のスレッドによって閉じられました。 | |
|
通知を正常に返す前に、呼び出しがタイムアウトしました。 |
|
lpszName パラメーターが指すバッファーは、結果を格納するのに十分な大きさではありません。lpcchName パラメーターは、終端の NULL を除いた結果の文字数を返します。 |
解説(Remarks)
lpcchName パラメーターはバイト数ではなく文字数を表し、返されるサイズには終端の NULL が含まれない点に注意してください。バッファーのサイズ指定の詳細については、データサイズの規則を参照してください。
通知は非同期であり、アプリケーションが通知を処理する時点のクラスターの状態は、通知が生成された時点のクラスターの状態と異なる場合があります。
例
通知ポートの例を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)