Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
clusapi.idl
1 import "winreg.idl", "misc.idl";
2 
3 #include "idl_types.h"
4 
5 [
6  uuid("b97db8b2-4c63-11cf-bff6-08002be23f2f"),
7  version(3.0),
8  pointer_default(unique),
9  endpoint("ncacn_ip_tcp:"),
10  authservice("MSServerClusterMgmtAPI"),
11  helpstring("Failover Cluster Management API (clusapi)")
12 ]
13  interface clusapi
14 {
15 #if 0
16  /*
17  * pidl does not yet have a real [context_handle] implementation, so we
18  * just use some defines here.
19  */
20 
21  typedef [context_handle] void *HCLUSTER_RPC;
22  typedef [context_handle] void *HNODE_RPC;
23  typedef [context_handle] void *HGROUP_RPC;
24  typedef [context_handle] void *HRES_RPC;
25  typedef [context_handle] void *HKEY_RPC;
26  typedef [context_handle] void *HNOTIFY_RPC;
27  typedef [context_handle] void *HNETWORK_RPC;
28  typedef [context_handle] void *HNETINTERFACE_RPC;
29  typedef [context_handle] void *HBATCH_PORT_RPC;
30 #else
31 #define HCLUSTER_RPC policy_handle
32 #define HNODE_RPC policy_handle
33 #define HGROUP_RPC policy_handle
34 #define HRES_RPC policy_handle
35 #define HKEY_RPC policy_handle
36 #define HNOTIFY_RPC policy_handle
37 #define HNETWORK_RPC policy_handle
38 #define HNETINTERFACE_RPC policy_handle
39 #define HBATCH_PORT_RPC policy_handle
40 #endif
41 
42  typedef struct {
43  [ size_is( cbInSecurityDescriptor ), length_is( cbOutSecurityDescriptor ) ] uint8 *lpSecurityDescriptor;
44  uint32 cbInSecurityDescriptor;
45  uint32 cbOutSecurityDescriptor;
47 
48  typedef struct {
49  uint32 nLength;
50  RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor;
51  long bInheritHandle;
53 
54  typedef struct {
55  [value(20)] uint32 dwSize;
56  uint32 dwClusterHighestVersion;
57  uint32 dwClusterLowestVersion;
58  uint32 dwFlags;
59  uint32 dwReserved;
61 
62  typedef struct {
63  uint32 NodeId;
64  boolean8 SetAttempted;
65  uint32 ReturnStatus;
67 
68  typedef enum {
69  IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
70  } IDL_CLUSTER_SET_PASSWORD_FLAGS;
71 
72  typedef struct {
73  uint32 dwVersion;
74  uint32 dwGroupType;
76 
77  /*****************/
78  /* Function 0x00 */
79 
80 #if 0
81  /*
82  * pidl cannot generate code for functions that return structures in
83  * IDL, therefore pretend the function is void and add the returned
84  * structure as an out parameter. This is what we do with pretty much
85  * all the Open calls right now in this interface - gd
86  */
87 
88  HCLUSTER_RPC
89  clusapi_OpenCluster(
90  [ out ] WERROR *Status
91  );
92 #else
93  void
94  clusapi_OpenCluster(
95  [ out ] WERROR *Status,
96  [ out ] HCLUSTER_RPC *Cluster
97  );
98 #endif
99 
100  /*****************/
101  /* Function 0x01 */
102 
103  WERROR
104  clusapi_CloseCluster(
105  [ in, out ] HCLUSTER_RPC *Cluster
106  );
107 
108  /*****************/
109  /* Function 0x02 */
110 
111  WERROR
112  clusapi_SetClusterName(
113  [ in, string ] [charset(UTF16)] uint16 *NewClusterName,
114  [ out ] WERROR *rpc_status
115  );
116 
117  /*****************/
118  /* Function 0x03 */
119 
120  WERROR
121  clusapi_GetClusterName(
122  [ out, string ] [charset(UTF16)] uint16 **ClusterName,
123  [ out, string ] [charset(UTF16)] uint16 **NodeName
124  );
125 
126  /*****************/
127  /* Function 0x04 */
128 
129  WERROR
130  clusapi_GetClusterVersion(
131  [ out ] uint16 *lpwMajorVersion,
132  [ out ] uint16 *lpwMinorVersion,
133  [ out ] uint16 *lpwBuildNumber,
134  [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
135  [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion
136  );
137 
138  /*****************/
139  /* Function 0x05 */
140 
141  WERROR
142  clusapi_GetQuorumResource(
143  [ out, string ] [charset(UTF16)] uint16 **lpszResourceName,
144  [ out, string ] [charset(UTF16)] uint16 **lpszDeviceName,
145  [ out ] uint32 *pdwMaxQuorumLogSize,
146  [ out ] WERROR *rpc_status
147  );
148 
149  /*****************/
150  /* Function 0x06 */
151 
152  WERROR
153  clusapi_SetQuorumResource(
154  [ in ] HRES_RPC hResource,
155  [ in, string ] [charset(UTF16)] uint16 *lpszDeviceName,
156  [ in ] uint32 dwMaxQuorumLogSize,
157  [ out ] WERROR *rpc_status
158  );
159 
160  typedef [bitmap32bit] bitmap {
161  CLUSTER_ENUM_NODE = 0x00000001,
162  CLUSTER_ENUM_RESTYPE = 0x00000002,
163  CLUSTER_ENUM_RESOURCE = 0x00000004,
164  CLUSTER_ENUM_GROUP = 0x00000008,
165  CLUSTER_ENUM_NETWORK = 0x00000010,
166  CLUSTER_ENUM_NETINTERFACE = 0x00000020,
167  CLUSTER_ENUM_INTERNAL_NETWORK = 0x80000000,
168  CLUSTER_ENUM_SHARED_VOLUME_RESOURCE = 0x40000000
169  } ClusterEnumType;
170 
171  typedef struct {
172  ClusterEnumType Type;
173  [string] [charset(UTF16)] uint16 *Name;
174  } ENUM_ENTRY;
175 
176  typedef struct {
177  uint32 EntryCount;
178  [size_is(EntryCount)] ENUM_ENTRY Entry[*];
179  } ENUM_LIST;
180 
181  typedef struct {
182  [string] [charset(UTF16)] uint16 *Name;
183  [string] [charset(UTF16)] uint16 *Id;
184  uint32 dwState;
185  [string] [charset(UTF16)] uint16 *Owner;
186  uint32 dwFlags;
187  uint32 cbProperties;
188  [size_is(cbProperties)] uint8* Properties;
189  uint32 cbRoProperties;
190  [size_is(cbRoProperties)] uint8* RoProperties;
192 
193  typedef struct {
194  [string] [charset(UTF16)] uint16 *Name;
195  [string] [charset(UTF16)] uint16 *Id;
196  [string] [charset(UTF16)] uint16 *OwnerName;
197  [string] [charset(UTF16)] uint16 *OwnerId;
198  uint32 cbProperties;
199  [size_is(cbProperties)] uint8* Properties;
200  uint32 cbRoProperties;
201  [size_is(cbRoProperties)] uint8* RoProperties;
203 
204  typedef struct {
205  uint32 EntryCount;
206  [size_is(EntryCount)] GROUP_ENUM_ENTRY Entry[*];
207  } GROUP_ENUM_LIST;
208 
209  typedef struct {
210  uint32 EntryCount;
211  [size_is(EntryCount)] RESOURCE_ENUM_ENTRY Entry[*];
213 
214  /*****************/
215  /* Function 0x07 */
216 
217  WERROR
218  clusapi_CreateEnum(
219  [ in ] ClusterEnumType dwType,
220  [ out ] ENUM_LIST **ReturnEnum,
221  [ out ] WERROR *rpc_status
222  );
223 
224  /*****************/
225  /* Function 0x08 */
226 
227 #if 0
228  HRES_RPC
229  clusapi_OpenResource(
230  [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
231  [ out ] WERROR *Status,
232  [ out ] WERROR *rpc_status
233  );
234 #else
235  void
236  clusapi_OpenResource(
237  [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
238  [ out ] WERROR *Status,
239  [ out ] WERROR *rpc_status,
240  [ out ] HRES_RPC *hResource
241  );
242 #endif
243  /*****************/
244  /* Function 0x09 */
245 
246  typedef [v1_enum] enum {
247  CLUSTER_RESOURCE_DEFAULT_MONITOR = 0x00000000,
248  CLUSTER_RESOURCE_SEPARATE_MONITOR = 0x00000001
249  } clusapi_CreateResourceFlags;
250 
251 #if 0
252  HRES_RPC
253  clusapi_CreateResource(
254  [ in ] HGROUP_RPC hGroup,
255  [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
256  [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
257  [ in ] clusapi_CreateResourceFlags dwFlags,
258  [ out ] WERROR *Status,
259  [ out ] WERROR *rpc_status
260  );
261 #else
262  void
263  clusapi_CreateResource(
264  [ in ] HGROUP_RPC hGroup,
265  [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
266  [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
267  [ in ] clusapi_CreateResourceFlags dwFlags,
268  [ out ] WERROR *Status,
269  [ out ] WERROR *rpc_status,
270  [ out ] HRES_RPC *hResource
271  );
272 #endif
273  /*****************/
274  /* Function 0x0A */
275 
276  WERROR
277  clusapi_DeleteResource(
278  [ in ] HRES_RPC hResource,
279  [ out ] WERROR *rpc_status
280  );
281 
282  /*****************/
283  /* Function 0x0B */
284 
285  WERROR
286  clusapi_CloseResource(
287  [ in, out ] HRES_RPC *Resource
288  );
289 
290  /*****************/
291  /* Function 0x0C */
292 
293  typedef [v1_enum] enum {
294  ClusterResourceInitializing = 0x00000001,
295  ClusterResourceOnline = 0x00000002,
296  ClusterResourceOffline = 0x00000003,
297  ClusterResourceFailed = 0x00000004,
298  ClusterResourceOnlinePending = 0x00000081,
299  ClusterResourceOfflinePending = 0x00000082,
300  ClusterResourceStateUnknown = 0xFFFFFFFF
301  } clusapi_ClusterResourceState;
302 
303  WERROR
304  clusapi_GetResourceState(
305  [ in ] HRES_RPC hResource,
306  [ out ] clusapi_ClusterResourceState *State,
307  [ out, string ] [charset(UTF16)] uint16 **NodeName,
308  [ out, string ] [charset(UTF16)] uint16 **GroupName,
309  [ out ] WERROR *rpc_status
310  );
311 
312  /*****************/
313  /* Function 0x0D */
314 
315  WERROR
316  clusapi_SetResourceName(
317  [ in ] HRES_RPC hResource,
318  [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
319  [ out ] WERROR *rpc_status
320  );
321 
322  /*****************/
323  /* Function 0x0E */
324 
325  WERROR
326  clusapi_GetResourceId(
327  [ in ] HRES_RPC hResource,
328  [ out, string ] [charset(UTF16)] uint16 **pGuid,
329  [ out ] WERROR *rpc_status
330  );
331 
332  /*****************/
333  /* Function 0x0F */
334 
335  WERROR
336  clusapi_GetResourceType(
337  [ in ] HRES_RPC hResource,
338  [ out, string ] [charset(UTF16)] uint16 **lpszResourceType,
339  [ out ] WERROR *rpc_status
340  );
341 
342  /*****************/
343  /* Function 0x10 */
344 
345  WERROR
346  clusapi_FailResource(
347  [ in ] HRES_RPC hResource,
348  [ out ] WERROR *rpc_status
349  );
350 
351  /*****************/
352  /* Function 0x11 */
353 
354  WERROR
355  clusapi_OnlineResource(
356  [ in ] HRES_RPC hResource,
357  [ out ] WERROR *rpc_status
358  );
359 
360  /*****************/
361  /* Function 0x12 */
362 
363  WERROR
364  clusapi_OfflineResource(
365  [ in ] HRES_RPC hResource,
366  [ out ] WERROR *rpc_status
367  );
368 
369  /*****************/
370  /* Function 0x13 */
371 
372  WERROR
373  clusapi_AddResourceDependency(
374  [ in ] HRES_RPC hResource,
375  [ in ] HRES_RPC hDependsOn,
376  [ out ] WERROR *rpc_status
377  );
378 
379  /*****************/
380  /* Function 0x14 */
381 
382  WERROR
383  clusapi_RemoveResourceDependency(
384  [ in ] HRES_RPC hResource,
385  [ in ] HRES_RPC hDependsOn,
386  [ out ] WERROR *rpc_status
387  );
388 
389  /*****************/
390  /* Function 0x15 */
391 
392  WERROR
393  clusapi_CanResourceBeDependent(
394  [ in ] HRES_RPC hResource,
395  [ in ] HRES_RPC hResourceDependent,
396  [ out ] WERROR *rpc_status
397  );
398 
399  /*****************/
400  /* Function 0x16 */
401 
402  WERROR
403  clusapi_CreateResEnum(
404  [ in ] HRES_RPC hResource,
405  [ in ] uint32 dwType,
406  [ out ] ENUM_LIST **ReturnEnum,
407  [ out ] WERROR *rpc_status
408  );
409 
410  /*****************/
411  /* Function 0x17 */
412 
413  WERROR
414  clusapi_AddResourceNode(
415  [ in ] HRES_RPC hResource,
416  [ in ] HNODE_RPC hNode,
417  [ out ] WERROR *rpc_status
418  );
419 
420  /*****************/
421  /* Function 0x18 */
422 
423  WERROR
424  clusapi_RemoveResourceNode(
425  [ in ] HRES_RPC hResource,
426  [ in ] HNODE_RPC hNode,
427  [ out ] WERROR *rpc_status
428  );
429 
430  /*****************/
431  /* Function 0x19 */
432 
433  WERROR
434  clusapi_ChangeResourceGroup(
435  [ in ] HRES_RPC hResource,
436  [ in ] HGROUP_RPC hGroup,
437  [ out ] WERROR *rpc_status
438  );
439 
440  /*****************/
441  /* Function 0x1A */
442 
443  WERROR
444  clusapi_CreateResourceType(
445  [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
446  [ in, string ] [charset(UTF16)] uint16 *lpszDisplayName,
447  [ in, string ] [charset(UTF16)] uint16 *lpszDllName,
448  [ in ] uint32 dwLooksAlive,
449  [ in ] uint32 dwIsAlive,
450  [ out ] WERROR *rpc_status
451  );
452 
453  /*****************/
454  /* Function 0x1B */
455 
456  WERROR
457  clusapi_DeleteResourceType(
458  [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
459  [ out ] WERROR *rpc_status
460  );
461 
462  /*****************/
463  /* Function 0x1C */
464 #if 0
465  HKEY_RPC
466  clusapi_GetRootKey(
467  [ in ] winreg_AccessMask samDesired,
468  [ out ] WERROR *Status,
469  [ out ] WERROR *rpc_status
470  );
471 #else
472  void
473  clusapi_GetRootKey(
474  [ in ] winreg_AccessMask samDesired,
475  [ out ] WERROR *Status,
476  [ out ] WERROR *rpc_status,
477  [ out ] HKEY_RPC *phKey
478  );
479 #endif
480  /*****************/
481  /* Function 0x1D */
482 #if 0
483  HKEY_RPC
484  clusapi_CreateKey(
485  [ in ] HKEY_RPC hKey,
486  [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
487  [ in ] uint32 dwOptions,
488  [ in ] winreg_AccessMask samDesired,
489  [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
490  [ out ] uint32 *lpdwDisposition,
491  [ out ] WERROR *Status,
492  [ out ] WERROR *rpc_status
493  );
494 #else
495  void
496  clusapi_CreateKey(
497  [ in ] HKEY_RPC hKey,
498  [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
499  [ in ] uint32 dwOptions,
500  [ in ] winreg_AccessMask samDesired,
501  [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
502  [ out ] uint32 *lpdwDisposition,
503  [ out ] WERROR *Status,
504  [ out ] WERROR *rpc_status,
505  [ out ] HKEY_RPC *phKey
506  );
507 #endif
508  /*****************/
509  /* Function 0x1E */
510 #if 0
511  HKEY_RPC
512  clusapi_OpenKey(
513  [ in ] HKEY_RPC hKey,
514  [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
515  [ in ] winreg_AccessMask samDesired,
516  [ out ] WERROR *Status,
517  [ out ] WERROR *rpc_status
518  );
519 #else
520  void
521  clusapi_OpenKey(
522  [ in ] HKEY_RPC hKey,
523  [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
524  [ in ] winreg_AccessMask samDesired,
525  [ out ] WERROR *Status,
526  [ out ] WERROR *rpc_status,
527  [ out ] HKEY_RPC *phKey
528  );
529 #endif
530  /*****************/
531  /* Function 0x1F */
532 
533  WERROR
534  clusapi_EnumKey(
535  [ in ] HKEY_RPC hKey,
536  [ in ] uint32 dwIndex,
537  [ out, string ] [charset(UTF16)] uint16 **KeyName,
538  [ out ] NTTIME *lpftLastWriteTime,
539  [ out ] WERROR *rpc_status
540  );
541 
542  /*****************/
543  /* Function 0x20 */
544 
545  WERROR
546  clusapi_SetValue(
547  [ in ] HKEY_RPC hKey,
548  [ in, string ] [charset(UTF16)] uint16 *lpValueName,
549  [ in ] winreg_Type dwType,
550  [ in, size_is(cbData) ] uint8 *lpData,
551  [ in ] uint32 cbData,
552  [ out ] WERROR *rpc_status
553  );
554 
555  /*****************/
556  /* Function 0x21 */
557 
558  WERROR
559  clusapi_DeleteValue(
560  [ in ] HKEY_RPC hKey,
561  [ in, string ] [charset(UTF16)] uint16 *lpValueName,
562  [ out ] WERROR *rpc_status
563  );
564 
565  /*****************/
566  /* Function 0x22 */
567 
568  WERROR
569  clusapi_QueryValue(
570  [ in ] HKEY_RPC hKey,
571  [ in, string ] [charset(UTF16)] uint16 *lpValueName,
572  [ out ] winreg_Type *lpValueType,
573  [ out, size_is(cbData) ] uint8 *lpData,
574  [ in ] uint32 cbData,
575  [ out ] uint32 *lpcbRequired,
576  [ out ] WERROR *rpc_status
577  );
578 
579  /*****************/
580  /* Function 0x23 */
581 
582  WERROR
583  clusapi_DeleteKey(
584  [ in ] HKEY_RPC hKey,
585  [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
586  [ out ] WERROR *rpc_status
587  );
588 
589  /*****************/
590  /* Function 0x24 */
591 
592  WERROR
593  clusapi_EnumValue(
594  [ in ] HKEY_RPC hKey,
595  [ in ] uint32 dwIndex,
596  [ out, string ] [charset(UTF16)] uint16 **lpValueName,
597  [ out ] winreg_Type *lpType,
598  [ out, size_is(*lpcbData) ] uint8 *lpData,
599  [ in, out ] uint32 *lpcbData,
600  [ out ] uint32 *TotalSize,
601  [ out ] WERROR *rpc_status
602  );
603 
604  /*****************/
605  /* Function 0x25 */
606 
607  WERROR
608  clusapi_CloseKey(
609  [ in, out ] HKEY_RPC *pKey
610  );
611 
612  /*****************/
613  /* Function 0x26 */
614 
615  WERROR
616  clusapi_QueryInfoKey(
617  [ in ] HKEY_RPC hKey,
618  [ out ] uint32 *lpcSubKeys,
619  [ out ] uint32 *lpcbMaxSubKeyLen,
620  [ out ] uint32 *lpcValues,
621  [ out ] uint32 *lpcbMaxValueNameLen,
622  [ out ] uint32 *lpcbMaxValueLen,
623  [ out ] uint32 *lpcbSecurityDescriptor,
624  [ out ] NTTIME *lpftLastWriteTime,
625  [ out ] WERROR *rpc_status
626  );
627 
628  /*****************/
629  /* Function 0x27 */
630 
631  WERROR
632  clusapi_SetKeySecurity(
633  [ in ] HKEY_RPC hKey,
634  [ in ] uint32 SecurityInformation,
635  [ in ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
636  [ out ] WERROR *rpc_status
637  );
638 
639  /*****************/
640  /* Function 0x28 */
641 
642  WERROR
643  clusapi_GetKeySecurity(
644  [ in ] HKEY_RPC hKey,
645  [ in ] uint32 SecurityInformation,
646  [ in, out ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
647  [ out ] WERROR *rpc_status
648  );
649 
650  /*****************/
651  /* Function 0x29 */
652 #if 0
653  HGROUP_RPC
654  clusapi_OpenGroup(
655  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
656  [ out ] WERROR *Status,
657  [ out ] WERROR *rpc_status
658  );
659 #else
660  void
661  clusapi_OpenGroup(
662  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
663  [ out ] WERROR *Status,
664  [ out ] WERROR *rpc_status,
665  [ out ] HGROUP_RPC *hGroup
666  );
667 #endif
668  /*****************/
669  /* Function 0x2A */
670 #if 0
671  HGROUP_RPC
672  clusapi_CreateGroup(
673  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
674  [ out ] WERROR *Status,
675  [ out ] WERROR *rpc_status
676  );
677 #else
678  void
679  clusapi_CreateGroup(
680  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
681  [ out ] WERROR *Status,
682  [ out ] WERROR *rpc_status,
683  [ out ] HGROUP_RPC *hGroup
684  );
685 #endif
686  /*****************/
687  /* Function 0x2B */
688 
689  WERROR
690  clusapi_DeleteGroup(
691  [ in ] HGROUP_RPC Group,
692  [ in ] boolean8 force,
693  [ out ] WERROR *rpc_status
694  );
695 
696  /*****************/
697  /* Function 0x2C */
698 
699  WERROR
700  clusapi_CloseGroup(
701  [ in, out ] HGROUP_RPC *Group
702  );
703 
704  /*****************/
705  /* Function 0x2D */
706 
707  typedef [v1_enum] enum {
708  ClusterGroupOnline = 0x00000000,
709  ClusterGroupOffline = 0x00000001,
710  ClusterGroupFailed = 0x00000002,
711  ClusterGroupPartialOnline = 0x00000003,
712  ClusterGroupPending = 0x00000004,
713  ClusterGroupStateUnknown = 0xFFFFFFFF
714  } clusapi_ClusterGroupState;
715 
716  WERROR
717  clusapi_GetGroupState(
718  [ in ] HGROUP_RPC hGroup,
719  [ out ] clusapi_ClusterGroupState *State,
720  [ out, string ] [charset(UTF16)] uint16 **NodeName,
721  [ out ] WERROR *rpc_status
722  );
723 
724  /*****************/
725  /* Function 0x2E */
726 
727  WERROR
728  clusapi_SetGroupName(
729  [ in ] HGROUP_RPC hGroup,
730  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
731  [ out ] WERROR *rpc_status
732  );
733 
734  /*****************/
735  /* Function 0x2F */
736 
737  WERROR
738  clusapi_GetGroupId(
739  [ in ] HGROUP_RPC hGroup,
740  [ out, string ] [charset(UTF16)] uint16 **pGuid,
741  [ out ] WERROR *rpc_status
742  );
743 
744  /*****************/
745  /* Function 0x30 */
746 
747  WERROR
748  clusapi_GetNodeId(
749  [ in ] HNODE_RPC hNode,
750  [ out, string ] [charset(UTF16)] uint16 **pGuid,
751  [ out ] WERROR *rpc_status
752  );
753 
754  /*****************/
755  /* Function 0x31 */
756 
757  WERROR
758  clusapi_OnlineGroup(
759  [ in ] HGROUP_RPC hGroup,
760  [ out ] WERROR *rpc_status
761  );
762 
763  /*****************/
764  /* Function 0x32 */
765 
766  WERROR
767  clusapi_OfflineGroup(
768  [ in ] HGROUP_RPC hGroup,
769  [ out ] WERROR *rpc_status
770  );
771 
772  /*****************/
773  /* Function 0x33 */
774 
775  WERROR
776  clusapi_MoveGroup(
777  [ in ] HGROUP_RPC hGroup,
778  [ out ] WERROR *rpc_status
779  );
780 
781  /*****************/
782  /* Function 0x34 */
783 
784  WERROR
785  clusapi_MoveGroupToNode(
786  [ in ] HGROUP_RPC hGroup,
787  [ in ] HNODE_RPC hNode,
788  [ out ] WERROR *rpc_status
789  );
790 
791  /*****************/
792  /* Function 0x35 */
793 
794  typedef [bitmap32bit] bitmap {
795  CLUSTER_GROUP_ENUM_CONTAINS = 0x00000001,
796  CLUSTER_GROUP_ENUM_NODES = 0x00000002
797  } ClusterGroupEnumType;
798 
799  WERROR
800  clusapi_CreateGroupResourceEnum(
801  [ in ] HGROUP_RPC hGroup,
802  [ in ] ClusterGroupEnumType dwType,
803  [ out ] ENUM_LIST **ReturnEnum,
804  [ out ] WERROR *rpc_status
805  );
806 
807  /*****************/
808  /* Function 0x36 */
809 
810  WERROR
811  clusapi_SetGroupNodeList(
812  [ in ] HGROUP_RPC hGroup,
813  [ in, unique, size_is(cchListSize) ] uint16 *multiSzNodeList,
814  [ in ] uint32 cchListSize,
815  [ out ] WERROR *rpc_status
816  );
817 
818  /*****************/
819  /* Function 0x37 */
820 #if 0
821  HNOTIFY_RPC
822  clusapi_CreateNotify(
823  [ out ] WERROR *Status,
824  [ out ] WERROR *rpc_status
825  );
826 #else
827  void
828  clusapi_CreateNotify(
829  [ out ] WERROR *Status,
830  [ out ] WERROR *rpc_status,
831  [ out ] HNOTIFY_RPC *hNotify
832  );
833 #endif
834  /*****************/
835  /* Function 0x38 */
836 
837  WERROR
838  clusapi_CloseNotify(
839  [ in, out ] HNOTIFY_RPC *Notify
840  );
841 
842  /*****************/
843  /* Function 0x39 */
844 
845  WERROR
846  clusapi_AddNotifyCluster(
847  [ in ] HNOTIFY_RPC hNotify,
848  [ in ] HCLUSTER_RPC hCluster,
849  [ in ] uint32 dwFilter,
850  [ in ] uint32 dwNotifyKey,
851  [ out ] WERROR *rpc_status
852  );
853 
854  /*****************/
855  /* Function 0x3A */
856 
857  WERROR
858  clusapi_AddNotifyNode(
859  [ in ] HNOTIFY_RPC hNotify,
860  [ in ] HNODE_RPC hNode,
861  [ in ] uint32 dwFilter,
862  [ in ] uint32 dwNotifyKey,
863  [ out ] uint32 *dwStateSequence,
864  [ out ] WERROR *rpc_status
865  );
866 
867  /*****************/
868  /* Function 0x3B */
869 
870  WERROR
871  clusapi_AddNotifyGroup(
872  [ in ] HNOTIFY_RPC hNotify,
873  [ in ] HGROUP_RPC hGroup,
874  [ in ] uint32 dwFilter,
875  [ in ] uint32 dwNotifyKey,
876  [ out ] uint32 *dwStateSequence,
877  [ out ] WERROR *rpc_status
878  );
879 
880  /*****************/
881  /* Function 0x3C */
882 
883  WERROR
884  clusapi_AddNotifyResource(
885  [ in ] HNOTIFY_RPC hNotify,
886  [ in ] HRES_RPC hResource,
887  [ in ] uint32 dwFilter,
888  [ in ] uint32 dwNotifyKey,
889  [ out ] uint32 *dwStateSequence,
890  [ out ] WERROR *rpc_status
891  );
892 
893  /*****************/
894  /* Function 0x3D */
895 
896  WERROR
897  clusapi_AddNotifyKey(
898  [ in ] HNOTIFY_RPC hNotify,
899  [ in ] HKEY_RPC hKey,
900  [ in ] uint32 dwNotifyKey,
901  [ in ] uint32 Filter,
902  [ in ] boolean8 WatchSubTree,
903  [ out ] WERROR *rpc_status
904  );
905 
906  /*****************/
907  /* Function 0x3E */
908 
909  WERROR
910  clusapi_ReAddNotifyNode(
911  [ in ] HNOTIFY_RPC hNotify,
912  [ in ] HNODE_RPC hNode,
913  [ in ] uint32 dwFilter,
914  [ in ] uint32 dwNotifyKey,
915  [ in ] uint32 StateSequence,
916  [ out ] WERROR *rpc_status
917  );
918 
919  /*****************/
920  /* Function 0x3F */
921 
922  WERROR
923  clusapi_ReAddNotifyGroup(
924  [ in ] HNOTIFY_RPC hNotify,
925  [ in ] HGROUP_RPC hGroup,
926  [ in ] uint32 dwFilter,
927  [ in ] uint32 dwNotifyKey,
928  [ in ] uint32 StateSequence,
929  [ out ] WERROR *rpc_status
930  );
931 
932  /*****************/
933  /* Function 0x40 */
934 
935  WERROR
936  clusapi_ReAddNotifyResource(
937  [ in ] HNOTIFY_RPC hNotify,
938  [ in ] HRES_RPC hResource,
939  [ in ] uint32 dwFilter,
940  [ in ] uint32 dwNotifyKey,
941  [ in ] uint32 StateSequence,
942  [ out ] WERROR *rpc_status
943  );
944 
945  /*****************/
946  /* Function 0x41 */
947 
948  WERROR
949  clusapi_GetNotify(
950  [ in ] HNOTIFY_RPC hNotify,
951  [ out ] uint32 *dwNotifyKey,
952  [ out ] uint32 *dwFilter,
953  [ out ] uint32 *dwStateSequence,
954  [ out, string ] [charset(UTF16)] uint16 **Name,
955  [ out ] WERROR *rpc_status
956  );
957 
958  /*****************/
959  /* Function 0x42 */
960 #if 0
961  HNODE_RPC
962  clusapi_OpenNode(
963  [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
964  [ out ] WERROR *Status,
965  [ out ] WERROR *rpc_status
966  );
967 #else
968  void
969  clusapi_OpenNode(
970  [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
971  [ out ] WERROR *Status,
972  [ out ] WERROR *rpc_status,
973  [ out ] HNODE_RPC *hNode
974  );
975 #endif
976  /*****************/
977  /* Function 0x43 */
978 
979  WERROR
980  clusapi_CloseNode(
981  [ in, out ] HNODE_RPC *Node
982  );
983 
984  /*****************/
985  /* Function 0x44 */
986 
987  typedef [v1_enum] enum {
988  ClusterNodeUp = 0x00000000,
989  ClusterNodeDown = 0x00000001,
990  ClusterNodePaused = 0x00000002,
991  ClusterNodeJoining = 0x00000003,
992  ClusterNodeStateUnknown = 0xFFFFFFFF
993  } clusapi_ClusterNodeState;
994 
995  WERROR
996  clusapi_GetNodeState(
997  [ in ] HNODE_RPC hNode,
998  [ out ] clusapi_ClusterNodeState *State,
999  [ out ] WERROR *rpc_status
1000  );
1001 
1002  /*****************/
1003  /* Function 0x45 */
1004 
1005  WERROR
1006  clusapi_PauseNode(
1007  [ in ] HNODE_RPC hNode,
1008  [ out ] WERROR *rpc_status
1009  );
1010 
1011  /*****************/
1012  /* Function 0x46 */
1013 
1014  WERROR
1015  clusapi_ResumeNode(
1016  [ in ] HNODE_RPC hNode,
1017  [ out ] WERROR *rpc_status
1018  );
1019 
1020  /*****************/
1021  /* Function 0x47 */
1022 
1023  WERROR
1024  clusapi_EvictNode(
1025  [ in ] HNODE_RPC hNode,
1026  [ out ] WERROR *rpc_status
1027  );
1028 
1029  /*****************/
1030  /* Function 0x48 */
1031 
1032  WERROR
1033  clusapi_NodeResourceControl(
1034  [ in ] HRES_RPC hResource,
1035  [ in ] HNODE_RPC hNode,
1036  [ in ] uint32 dwControlCode,
1037  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1038  [ in ] uint32 nInBufferSize,
1039  [ out, size_is(nOutBufferSize),
1040  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1041  [ in ] uint32 nOutBufferSize,
1042  [ out ] uint32 *lpBytesReturned,
1043  [ out ] uint32 *lpcbRequired,
1044  [ out ] WERROR *rpc_status
1045  );
1046 
1047  /*****************/
1048  /* Function 0x49 */
1049 
1050  typedef [v1_enum] enum {
1051  CLUS_RESCLASS_UNKNOWN = 0x00000000,
1052  CLUS_RESCLASS_STORAGE = 0x00000001,
1053  CLUS_RESCLASS_NETWORK = 0x00000002
1054  } clusapi_ResourceClass;
1055 
1056  typedef [public] struct {
1057  clusapi_ResourceClass Class;
1058  uint32 SubClass;
1059  } CLUS_RESOURCE_CLASS_INFO;
1060 
1061  typedef [v1_enum] enum {
1062  CLUSCTL_RESOURCE_UNKNOWN = 0x1000000,
1063  CLUSCTL_RESOURCE_GET_CHARACTERISTICS = 0x1000005,
1064  CLUSCTL_RESOURCE_GET_FLAGS = 0x1000009,
1065  CLUSCTL_RESOURCE_GET_CLASS_INFO = 0x100000D,
1066  CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES = 0x1000011,
1067  CLUSCTL_RESOURCE_GET_NAME = 0x1000029,
1068  CLUSCTL_RESOURCE_GET_RESOURCE_TYPE = 0x100002D,
1069  CLUSCTL_RESOURCE_GET_ID = 0x1000039,
1070  CLUSCTL_RESOURCE_ENUM_COMMON_PROPERTIES = 0x1000051,
1071  CLUSCTL_RESOURCE_GET_RO_COMMON_PROPERTIES = 0x1000055,
1072  CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES = 0x1000059,
1073  CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES = 0x140005E,
1074  CLUSCTL_RESOURCE_VALIDATE_COMMON_PROPERTIES = 0x1000061,
1075  CLUSCTL_RESOURCE_GET_COMMON_PROPERTY_FMTS = 0x1000065,
1076  CLUSCTL_RESOURCE_ENUM_PRIVATE_PROPERTIES = 0x1000079,
1077  CLUSCTL_RESOURCE_GET_RO_PRIVATE_PROPERTIES = 0x100007D,
1078  CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES = 0x1000081,
1079  CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES = 0x1400086,
1080  CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES = 0x1000089,
1081  CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTY_FMTS = 0x100008D,
1082  CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT = 0x14000A2,
1083  CLUSCTL_RESOURCE_DELETE_REGISTRY_CHECKPOINT = 0x14000A6,
1084  CLUSCTL_RESOURCE_GET_REGISTRY_CHECKPOINTS = 0x10000A9,
1085  CLUSCTL_RESOURCE_ADD_CRYPTO_CHECKPOINT = 0x14000AE,
1086  CLUSCTL_RESOURCE_DELETE_CRYPTO_CHECKPOINT = 0x14000B2,
1087  CLUSCTL_RESOURCE_GET_CRYPTO_CHECKPOINTS = 0x010000B5,
1088  CLUSCTL_RESOURCE_UPGRADE_DLL = 0x14000BA,
1089  CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_64BIT = 0x14000BE,
1090  CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_32BIT = 0x14000C2,
1091  CLUSCTL_RESOURCE_GET_NETWORK_NAME = 0x1000169,
1092  CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS = 0x1000172,
1093  CLUSCTL_RESOURCE_GET_DNS_NAME = 0x1000175,
1094  CLUSCTL_RESOURCE_NETNAME_SET_PWD_INFO = 0x100017A,
1095  CLUSCTL_RESOURCE_NETNAME_DELETE_CO = 0x100017E,
1096  CLUSCTL_RESOURCE_NETNAME_VALIDATE_VCO = 0x1000181,
1097  CLUSCTL_RESOURCE_NETNAME_RESET_VCO = 0x1000185,
1098  CLUSCTL_RESOURCE_NETNAME_CREDS_UPDATED = 0x1c0018a,
1099  CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO = 0x1000191,
1100  CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = 0x1000199,
1101  CLUSCTL_RESOURCE_IPADDRESS_RENEW_LEASE = 0x14001BE,
1102  CLUSCTL_RESOURCE_IPADDRESS_RELEASE_LEASE = 0x14001C2,
1103  CLUSCTL_RESOURCE_QUERY_MAINTENANCE_MODE = 0x10001E1,
1104  CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE = 0x14001E6,
1105  CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER = 0x14001EA,
1106  CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX = 0x10001F1,
1107  CLUSCTL_RESOURCE_STORAGE_GET_DIRTY = 0x1000219,
1108  CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS = 0x1000211,
1109  CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO = 0x1000225,
1110  CLUSCTL_RESOURCE_VM_START_MIGRATION = 0x1600004,
1111  CLUSCTL_RESOURCE_VM_CANCEL_MIGRATION = 0x1600008,
1112  CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE = 0x1400296,
1113  CLUSCTL_RESOURCE_ENABLE_SHARED_VOLUME_DIRECTIO = 0x140028a,
1114  CLUSCTL_RESOURCE_DISABLE_SHARED_VOLUME_DIRECTIO = 0x140028e,
1115  CLUSCTL_RESOURCE_SET_SHARED_VOLUME_BACKUP_MODE = 0x140029a,
1116  CLUSCTL_RESOURCE_GET_RELATED_RESOURCE_NAMES = 0x1001fad,
1117  CLUSCTL_RESOURCE_POOL_GET_DRIVE_INFO = 0x10002b5,
1118  CLUSCTL_RESOURCE_CLOUD_WITNESS_UPDATE_TOKEN = 0x014020e6,
1119  CLUSCTL_RESOURCE_NETNAME_CHECK_OU_PERMISSIONS = 0x07002121,
1120  CLUSCTL_RESOURCE_NETNAME_CHECK_AD_STATE = 0x07002125
1121  } clusapi_ResourceControlCode;
1122 
1123  WERROR
1124  clusapi_ResourceControl(
1125  [ in ] HRES_RPC hResource,
1126  [ in ] clusapi_ResourceControlCode dwControlCode,
1127  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1128  [ in ] uint32 nInBufferSize,
1129  [ out, size_is(nOutBufferSize),
1130  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1131  [ in ] uint32 nOutBufferSize,
1132  [ out ] uint32 *lpBytesReturned,
1133  [ out ] uint32 *lpcbRequired,
1134  [ out ] WERROR *rpc_status
1135  );
1136 
1137  /*****************/
1138  /* Function 0x4A */
1139 
1140  WERROR
1141  clusapi_NodeResourceTypeControl(
1142  [ in ] HCLUSTER_RPC hCluster,
1143  [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
1144  [ in ] HNODE_RPC hNode,
1145  [ in ] uint32 dwControlCode,
1146  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1147  [ in ] uint32 nInBufferSize,
1148  [ out, size_is(nOutBufferSize),
1149  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1150  [ in ] uint32 nOutBufferSize,
1151  [ out ] uint32 *lpBytesReturned,
1152  [ out ] uint32 *lpcbRequired,
1153  [ out ] WERROR *rpc_status
1154  );
1155 
1156  /*****************/
1157  /* Function 0x4B */
1158 
1159  typedef [v1_enum] enum {
1160  CLUSCTL_RESOURCE_TYPE_UNKNOWN = 0x02000000,
1161  CLUSCTL_RESOURCE_TYPE_GET_CHARACTERISTICS = 0x02000005,
1162  CLUSCTL_RESOURCE_TYPE_GET_FLAGS = 0x02000009,
1163  CLUSCTL_RESOURCE_TYPE_GET_CLASS_INFO = 0x0200000D,
1164  CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES = 0x02000011,
1165  CLUSCTL_RESOURCE_TYPE_GET_ARB_TIMEOUT = 0x02000015,
1166  CLUSCTL_RESOURCE_TYPE_ENUM_COMMON_PROPERTIES = 0x02000051,
1167  CLUSCTL_RESOURCE_TYPE_GET_RO_COMMON_PROPERTIES = 0x02000055,
1168  CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTIES = 0x02000059,
1169  CLUSCTL_RESOURCE_TYPE_SET_COMMON_PROPERTIES = 0x0240005E,
1170  CLUSCTL_RESOURCE_TYPE_VALIDATE_COMMON_PROPERTIES = 0x02000061,
1171  CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTY_FMTS = 0x02000065,
1172  CLUSCTL_RESOURCE_TYPE_GET_COMMON_RESOURCE_PROPERTY_FMTS = 0x02000069,
1173  CLUSCTL_RESOURCE_TYPE_ENUM_PRIVATE_PROPERTIES = 0x02000079,
1174  CLUSCTL_RESOURCE_TYPE_GET_RO_PRIVATE_PROPERTIES = 0x0200007D,
1175  CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES = 0x02000081,
1176  CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES = 0x02400086,
1177  CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES = 0x02000089,
1178  CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTY_FMTS = 0x0200008D,
1179  CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_RESOURCE_PROPERTY_FMTS= 0x02000091,
1180  CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS = 0x02000195,
1181  CLUSCTL_RESOURCE_TYPE_NETNAME_VALIDATE_NETNAME = 0x02000235,
1182  CLUSCTL_RESOURCE_TYPE_VALIDATE_PATH = 0x02000231,
1183  CLUSCTL_RESOURCE_TYPE_GEN_APP_VALIDATE_DIRECTORY = 0x02000239,
1184  CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DRIVELETTERS = 0x020001ED,
1185  CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX = 0x020001F5,
1186  CLUSCTL_RESOURCE_TYPE_STORAGE_REMAP_DRIVELETTER = 0x02000201,
1187  CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID = 0x02000205,
1188  CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE = 0x02000209,
1189  CLUSCTL_RESOURCE_TYPE_STORAGE_RELEASE_OWNERSHIP = 0x0240020E,
1190  CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CSV_FILE = 0x1000229,
1191  CLUSCTL_RESOURCE_TYPE_CLOUD_WITNESS_VALIDATE_CREDENTIALS= 0x020020e1,
1192  CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_LOGDISKS = 0x02002149,
1193  CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_TARGET_DATADISKS = 0x0200214D,
1194  CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_SOURCE_DATADISKS = 0x02002151,
1195  CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICA_VOLUMES = 0x02002159,
1196  CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_LOG_VOLUME = 0x0200215D,
1197  CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICATED_DISKS = 0x02002155,
1198  CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_RESOURCE_GROUP = 0x02002161
1199  } clusapi_ResourceTypeControlCode;
1200 
1201  WERROR
1202  clusapi_ResourceTypeControl(
1203  [ in ] HCLUSTER_RPC hCluster,
1204  [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
1205  [ in ] clusapi_ResourceTypeControlCode dwControlCode,
1206  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1207  [ in ] uint32 nInBufferSize,
1208  [ out, size_is(nOutBufferSize),
1209  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1210  [ in ] uint32 nOutBufferSize,
1211  [ out ] uint32 *lpBytesReturned,
1212  [ out ] uint32 *lpcbRequired,
1213  [ out ] WERROR *rpc_status
1214  );
1215 
1216  /*****************/
1217  /* Function 0x4C */
1218 
1219  WERROR
1220  clusapi_NodeGroupControl(
1221  [ in ] HGROUP_RPC hGroup,
1222  [ in ] HNODE_RPC hNode,
1223  [ in ] uint32 dwControlCode,
1224  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1225  [ in ] uint32 nInBufferSize,
1226  [ out, size_is(nOutBufferSize),
1227  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1228  [ in ] uint32 nOutBufferSize,
1229  [ out ] uint32 *lpBytesReturned,
1230  [ out ] uint32 *lpcbRequired,
1231  [ out ] WERROR *rpc_status
1232  );
1233 
1234  /*****************/
1235  /* Function 0x4D */
1236 
1237  typedef [v1_enum] enum {
1238  CLUSCTL_GROUP_UNKNOWN = 0x03000000,
1239  CLUSCTL_GROUP_GET_CHARACTERISTICS = 0x03000005,
1240  CLUSCTL_GROUP_GET_FLAGS = 0x03000009,
1241  CLUSCTL_GROUP_GET_NAME = 0x03000029,
1242  CLUSCTL_GROUP_GET_ID = 0x03000039,
1243  CLUSCTL_GROUP_ENUM_COMMON_PROPERTIES = 0x03000051,
1244  CLUSCTL_GROUP_GET_RO_COMMON_PROPERTIES = 0x03000055,
1245  CLUSCTL_GROUP_GET_COMMON_PROPERTIES = 0x03000059,
1246  CLUSCTL_GROUP_SET_COMMON_PROPERTIES = 0x0340005E,
1247  CLUSCTL_GROUP_VALIDATE_COMMON_PROPERTIES = 0x03000061,
1248  CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS = 0x03000065,
1249  CLUSCTL_GROUP_ENUM_PRIVATE_PROPERTIES = 0x03000079,
1250  CLUSCTL_GROUP_GET_RO_PRIVATE_PROPERTIES = 0x0300007D,
1251  CLUSCTL_GROUP_GET_PRIVATE_PROPERTIES = 0x03000081,
1252  CLUSCTL_GROUP_SET_PRIVATE_PROPERTIES = 0x03400086,
1253  CLUSCTL_GROUP_VALIDATE_PRIVATE_PROPERTIES = 0x03000089
1254  } clusapi_GroupControlCode;
1255 
1256  WERROR
1257  clusapi_GroupControl(
1258  [ in ] HGROUP_RPC hGroup,
1259  [ in ] clusapi_GroupControlCode dwControlCode,
1260  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1261  [ in ] uint32 nInBufferSize,
1262  [ out, size_is(nOutBufferSize),
1263  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1264  [ in ] uint32 nOutBufferSize,
1265  [ out ] uint32 *lpBytesReturned,
1266  [ out ] uint32 *lpcbRequired,
1267  [ out ] WERROR *rpc_status
1268  );
1269 
1270  /*****************/
1271  /* Function 0x4E */
1272 
1273  WERROR
1274  clusapi_NodeNodeControl(
1275  [ in ] HNODE_RPC hNode,
1276  [ in ] HNODE_RPC hHostNode,
1277  [ in ] uint32 dwControlCode,
1278  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1279  [ in ] uint32 nInBufferSize,
1280  [ out, size_is(nOutBufferSize),
1281  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1282  [ in ] uint32 nOutBufferSize,
1283  [ out ] uint32 *lpBytesReturned,
1284  [ out ] uint32 *lpcbRequired,
1285  [ out ] WERROR *rpc_status
1286  );
1287 
1288  /*****************/
1289  /* Function 0x4F */
1290 
1291  typedef [v1_enum] enum {
1292  CLUSCTL_NODE_UNKNOWN = 0x04000000,
1293  CLUSCTL_NODE_GET_CHARACTERISTICS = 0x04000005,
1294  CLUSCTL_NODE_GET_FLAGS = 0x04000009,
1295  CLUSCTL_NODE_GET_NAME = 0x04000029,
1296  CLUSCTL_NODE_GET_ID = 0x04000039,
1297  CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME = 0x04000041,
1298  CLUSCTL_NODE_ENUM_COMMON_PROPERTIES = 0x04000051,
1299  CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES = 0x04000055,
1300  CLUSCTL_NODE_GET_COMMON_PROPERTIES = 0x04000059,
1301  CLUSCTL_NODE_SET_COMMON_PROPERTIES = 0x0440005E,
1302  CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES = 0x04000061,
1303  CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES = 0x04000079,
1304  CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES = 0x0400007D,
1305  CLUSCTL_NODE_GET_PRIVATE_PROPERTIES = 0x04000081,
1306  CLUSCTL_NODE_SET_PRIVATE_PROPERTIES = 0x04400086,
1307  CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES = 0x04000089
1308  } clusapi_NodeControlCode;
1309 
1310  WERROR
1311  clusapi_NodeControl(
1312  [ in ] HNODE_RPC hNode,
1313  [ in ] clusapi_NodeControlCode dwControlCode,
1314  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1315  [ in ] uint32 nInBufferSize,
1316  [ out, size_is(nOutBufferSize),
1317  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1318  [ in ] uint32 nOutBufferSize,
1319  [ out ] uint32 *lpBytesReturned,
1320  [ out ] uint32 *lpcbRequired,
1321  [ out ] WERROR *rpc_status
1322  );
1323 
1324  /*****************/
1325  /* Function 0x50 */
1326 
1327  WERROR
1328  Opnum80NotUsedOnWire(void);
1329 
1330  /*****************/
1331  /* Function 0x51 */
1332 #if 0
1333  HNETWORK_RPC
1334  clusapi_OpenNetwork(
1335  [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1336  [ out ] WERROR *Status,
1337  [ out ] WERROR *rpc_status
1338  );
1339 #else
1340  void
1341  clusapi_OpenNetwork(
1342  [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1343  [ out ] WERROR *Status,
1344  [ out ] WERROR *rpc_status,
1345  [ out ] HNETWORK_RPC *hNetwork
1346  );
1347 #endif
1348  /*****************/
1349  /* Function 0x52 */
1350 
1351  WERROR
1352  clusapi_CloseNetwork(
1353  [ in, out ] HNETWORK_RPC *Network
1354  );
1355 
1356  /*****************/
1357  /* Function 0x53 */
1358 
1359  typedef [v1_enum] enum {
1360  ClusterNetworkUnavailable = 0x00000000,
1361  ClusterNetworkDown = 0x00000001,
1362  ClusterNetworkPartitioned = 0x00000002,
1363  ClusterNetworkUp = 0x00000003,
1364  ClusterNetworkStateUnknown = 0xFFFFFFFF
1365  } clusapi_ClusterNetworkState;
1366 
1367  WERROR
1368  clusapi_GetNetworkState(
1369  [ in ] HNETWORK_RPC hNetwork,
1370  [ out ] clusapi_ClusterNetworkState *State,
1371  [ out ] WERROR *rpc_status
1372  );
1373 
1374  /*****************/
1375  /* Function 0x54 */
1376 
1377  WERROR
1378  clusapi_SetNetworkName(
1379  [ in ] HNETWORK_RPC hNetwork,
1380  [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1381  [ out ] WERROR *rpc_status
1382  );
1383 
1384  /*****************/
1385  /* Function 0x55 */
1386 
1387  WERROR
1388  clusapi_CreateNetworkEnum(
1389  [ in ] HNETWORK_RPC hNetwork,
1390  [ in ] uint32 dwType,
1391  [ out ] ENUM_LIST **ReturnEnum,
1392  [ out ] WERROR *rpc_status
1393  );
1394 
1395  /*****************/
1396  /* Function 0x56 */
1397 
1398  WERROR
1399  clusapi_GetNetworkId(
1400  [ in ] HNETWORK_RPC hNetwork,
1401  [ out, string ] [charset(UTF16)] uint16 **pGuid,
1402  [ out ] WERROR *rpc_status
1403  );
1404 
1405  /*****************/
1406  /* Function 0x57 */
1407 
1408  WERROR
1409  clusapi_SetNetworkPriorityOrder(
1410  [ in, range(0, 1000)] uint32 NetworkCount,
1411  [ in, string, size_is(NetworkCount) ] [charset(UTF16)] uint16 NetworkIdList[*],
1412  [ out ] WERROR *rpc_status
1413  );
1414 
1415  /*****************/
1416  /* Function 0x58 */
1417 
1418  WERROR
1419  clusapi_NodeNetworkControl(
1420  [ in ] HNETWORK_RPC hNetwork,
1421  [ in ] HNODE_RPC hNode,
1422  [ in ] uint32 dwControlCode,
1423  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1424  [ in ] uint32 nInBufferSize,
1425  [ out, size_is(nOutBufferSize),
1426  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1427  [ in ] uint32 nOutBufferSize,
1428  [ out ] uint32 *lpBytesReturned,
1429  [ out ] uint32 *lpcbRequired,
1430  [ out ] WERROR *rpc_status
1431  );
1432 
1433  /*****************/
1434  /* Function 0x59 */
1435 
1436  WERROR
1437  clusapi_NetworkControl(
1438  [ in ] HNETWORK_RPC hNetwork,
1439  [ in ] uint32 dwControlCode,
1440  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1441  [ in ] uint32 nInBufferSize,
1442  [ out, size_is(nOutBufferSize),
1443  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1444  [ in ] uint32 nOutBufferSize,
1445  [ out ] uint32 *lpBytesReturned,
1446  [ out ] uint32 *lpcbRequired,
1447  [ out ] WERROR *rpc_status
1448  );
1449 
1450  /*****************/
1451  /* Function 0x5A */
1452 
1453  WERROR
1454  clusapi_AddNotifyNetwork(
1455  [ in ] HNOTIFY_RPC hNotify,
1456  [ in ] HNETWORK_RPC hNetwork,
1457  [ in ] uint32 dwFilter,
1458  [ in ] uint32 dwNotifyKey,
1459  [ out ] uint32 *dwStateSequence,
1460  [ out ] WERROR *rpc_status
1461  );
1462 
1463  /*****************/
1464  /* Function 0x5B */
1465 
1466  WERROR
1467  clusapi_ReAddNotifyNetwork(
1468  [ in ] HNOTIFY_RPC hNotify,
1469  [ in ] HNETWORK_RPC hNetwork,
1470  [ in ] uint32 dwFilter,
1471  [ in ] uint32 dwNotifyKey,
1472  [ in ] uint32 StateSequence,
1473  [ out ] WERROR *rpc_status
1474  );
1475 
1476  /*****************/
1477  /* Function 0x5C */
1478 #if 0
1479  HNETINTERFACE_RPC
1480  clusapi_OpenNetInterface(
1481  [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1482  [ out ] WERROR *Status,
1483  [ out ] WERROR *rpc_status
1484  );
1485 #else
1486  void
1487  clusapi_OpenNetInterface(
1488  [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1489  [ out ] WERROR *Status,
1490  [ out ] WERROR *rpc_status,
1491  [ out ] HNETINTERFACE_RPC *hNetInterface
1492  );
1493 #endif
1494  /*****************/
1495  /* Function 0x5D */
1496 
1497  WERROR
1498  clusapi_CloseNetInterface(
1499  [ in, out ] HNETINTERFACE_RPC *NetInterface
1500  );
1501 
1502  /*****************/
1503  /* Function 0x5E */
1504 
1505  typedef [v1_enum] enum {
1506  ClusterNetInterfaceFailed = 0x00000000,
1507  ClusterNetInterfaceUnreachable = 0x00000001,
1508  ClusterNetInterfaceUnavailable = 0x00000002,
1509  ClusterNetInterfaceUp = 0x00000003,
1510  ClusterNetInterfaceStateUnknown = 0xFFFFFFFF
1511  } clusapi_ClusterNetInterfaceState;
1512 
1513  WERROR
1514  clusapi_GetNetInterfaceState(
1515  [ in ] HNETINTERFACE_RPC hNetInterface,
1516  [ out ] clusapi_ClusterNetInterfaceState *State,
1517  [ out ] WERROR *rpc_status
1518  );
1519 
1520  /*****************/
1521  /* Function 0x5F */
1522 
1523  WERROR
1524  clusapi_GetNetInterface(
1525  [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1526  [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1527  [ out, string ] [charset(UTF16)] uint16 **lppszInterfaceName,
1528  [ out ] WERROR *rpc_status
1529  );
1530 
1531  /*****************/
1532  /* Function 0x60 */
1533 
1534  WERROR
1535  clusapi_GetNetInterfaceId(
1536  [ in ] HNETINTERFACE_RPC hNetInterface,
1537  [ out, string ] [charset(UTF16)] uint16 **pGuid,
1538  [ out ] WERROR *rpc_status
1539  );
1540 
1541  /*****************/
1542  /* Function 0x61 */
1543 
1544  WERROR
1545  clusapi_NodeNetInterfaceControl(
1546  [ in ] HNETINTERFACE_RPC hNetInterface,
1547  [ in ] HNODE_RPC hNode,
1548  [ in ] uint32 dwControlCode,
1549  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1550  [ in ] uint32 nInBufferSize,
1551  [ out, size_is(nOutBufferSize),
1552  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1553  [ in ] uint32 nOutBufferSize,
1554  [ out ] uint32 *lpBytesReturned,
1555  [ out ] uint32 *lpcbRequired,
1556  [ out ] WERROR *rpc_status
1557  );
1558 
1559  /*****************/
1560  /* Function 0x62 */
1561 
1562  WERROR
1563  clusapi_NetInterfaceControl(
1564  [ in ] HNETINTERFACE_RPC hNetInterface,
1565  [ in ] uint32 dwControlCode,
1566  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1567  [ in ] uint32 nInBufferSize,
1568  [ out, size_is(nOutBufferSize),
1569  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1570  [ in ] uint32 nOutBufferSize,
1571  [ out ] uint32 *lpBytesReturned,
1572  [ out ] uint32 *lpcbRequired,
1573  [ out ] WERROR *rpc_status
1574  );
1575 
1576  /*****************/
1577  /* Function 0x63 */
1578 
1579  WERROR
1580  clusapi_AddNotifyNetInterface(
1581  [ in ] HNOTIFY_RPC hNotify,
1582  [ in ] HNETINTERFACE_RPC hNetInterface,
1583  [ in ] uint32 dwFilter,
1584  [ in ] uint32 dwNotifyKey,
1585  [ out ] uint32 *dwStateSequence,
1586  [ out ] WERROR *rpc_status
1587  );
1588 
1589  /*****************/
1590  /* Function 0x64 */
1591 
1592  WERROR
1593  clusapi_ReAddNotifyNetInterface(
1594  [ in ] HNOTIFY_RPC hNotify,
1595  [ in ] HNETINTERFACE_RPC hNetInterface,
1596  [ in ] uint32 dwFilter,
1597  [ in ] uint32 dwNotifyKey,
1598  [ in ] uint32 StateSequence,
1599  [ out ] WERROR *rpc_status
1600  );
1601 
1602  /*****************/
1603  /* Function 0x65 */
1604 
1605  WERROR
1606  clusapi_CreateNodeEnum(
1607  [ in ] HNODE_RPC hNode,
1608  [ in ] uint32 dwType,
1609  [ out ] ENUM_LIST **ReturnEnum,
1610  [ out ] WERROR *rpc_status
1611  );
1612 
1613  /*****************/
1614  /* Function 0x66 */
1615 
1616  WERROR
1617  clusapi_GetClusterVersion2(
1618  [ out ] uint16 *lpwMajorVersion,
1619  [ out ] uint16 *lpwMinorVersion,
1620  [ out ] uint16 *lpwBuildNumber,
1621  [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
1622  [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion,
1623  [ out ] CLUSTER_OPERATIONAL_VERSION_INFO **ppClusterOpVerInfo,
1624  [ out ] WERROR *rpc_status
1625  );
1626 
1627  /*****************/
1628  /* Function 0x67 */
1629 
1630  typedef [bitmap32bit] bitmap {
1631  CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001,
1632  CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES = 0x00000002
1633  } ClusterResTypeEnumType;
1634 
1635  WERROR
1636  clusapi_CreateResTypeEnum(
1637  [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
1638  [ in ] ClusterResTypeEnumType dwType,
1639  [ out ] ENUM_LIST **ReturnEnum,
1640  [ out ] WERROR *rpc_status
1641  );
1642 
1643  /*****************/
1644  /* Function 0x68 */
1645 
1646  WERROR
1647  clusapi_BackupClusterDatabase(
1648  [ in, string ] [charset(UTF16)] uint16 *lpszPathName,
1649  [ out ] WERROR *rpc_status
1650  );
1651 
1652  /*****************/
1653  /* Function 0x69 */
1654 
1655  WERROR
1656  clusapi_NodeClusterControl(
1657  [ in ] HCLUSTER_RPC hCluster,
1658  [ in ] HNODE_RPC hHostNode,
1659  [ in ] uint32 dwControlCode,
1660  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1661  [ in ] uint32 nInBufferSize,
1662  [ out, size_is(nOutBufferSize),
1663  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1664  [ in ] uint32 nOutBufferSize,
1665  [ out ] uint32 *lpBytesReturned,
1666  [ out ] uint32 *lpcbRequired,
1667  [ out ] WERROR *rpc_status
1668  );
1669 
1670  /*****************/
1671  /* Function 0x6A */
1672 
1673  typedef [v1_enum] enum {
1674  CLUSCTL_CLUSTER_UNKNOWN = 0x07000000,
1675  CLUSCTL_CLUSTER_GET_FQDN = 0x0700003D,
1676  CLUSCTL_CLUSTER_CHECK_VOTER_EVICT = 0x07000045,
1677  CLUSCTL_CLUSTER_CHECK_VOTER_DOWN = 0x07000049,
1678  CLUSCTL_CLUSTER_SHUTDOWN = 0x0700004D,
1679  CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES = 0x07000051,
1680  CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES = 0x07000055,
1681  CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES = 0x07000059,
1682  CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES = 0x0740005E,
1683  CLUSCTL_CLUSTER_VALIDATE_COMMON_PROPERTIES = 0x07000061,
1684  CLUSCTL_CLUSTER_GET_COMMON_PROPERTY_FMTS = 0x07000065,
1685  CLUSCTL_CLUSTER_ENUM_PRIVATE_PROPERTIES = 0x07000079,
1686  CLUSCTL_CLUSTER_GET_RO_PRIVATE_PROPERTIES = 0x0700007D,
1687  CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTIES = 0x07000081,
1688  CLUSCTL_CLUSTER_SET_PRIVATE_PROPERTIES = 0x07400086,
1689  CLUSCTL_CLUSTER_VALIDATE_PRIVATE_PROPERTIES = 0x07000089,
1690  CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID = 0x07000291,
1691  CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION = 0x074000ce,
1692  CLUSCTL_CLUSTER_CLEAR_UPGRADE_IN_PROGRESS = 0x074000d2,
1693  CLUSCTL_CLUSTER_IS_READY_FOR_UPGRADE = 0x070000d5
1694  } clusapi_ClusterControlCode;
1695 
1696  typedef [v1_enum] enum {
1697  CLUSPROP_SYNTAX_ENDMARK = 0x00000000,
1698  CLUSPROP_SYNTAX_NAME = 0x00040003,
1699  CLUSPROP_SYNTAX_RESCLASS = 0x00020002,
1700  CLUSPROP_SYNTAX_LIST_VALUE_SZ = 0x00010003,
1701  CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = 0x00010004,
1702  CLUSPROP_SYNTAX_LIST_VALUE_DWORD = 0x00010002,
1703  CLUSPROP_SYNTAX_LIST_VALUE_BINARY = 0x00010001,
1704  CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = 0x00010005,
1705  CLUSPROP_SYNTAX_LIST_VALUE_LONG = 0x00010007,
1706  CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = 0x00010008,
1707  CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = 0x00010009,
1708  CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = 0x0001000a,
1709  CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = 0x00010006,
1710  CLUSPROP_SYNTAX_LIST_VALUE_WORD = 0x0001000b,
1711  CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = 0x0001000c,
1712  CLUSPROP_SYNTAX_DISK_SIGNATURE = 0x00050002,
1713  CLUSPROP_SYNTAX_SCSI_ADDRESS = 0x00060002,
1714  CLUSPROP_SYNTAX_DISK_NUMBER = 0x00070002,
1715  CLUSPROP_SYNTAX_PARTITION_INFO = 0x00080001,
1716  CLUSPROP_SYNTAX_DISK_SERIALNUMBER = 0x000a0003,
1717  CLUSPROP_SYNTAX_DISK_GUID = 0x000b0003,
1718  CLUSPROP_SYNTAX_DISK_SIZE = 0x000c0006,
1719  CLUSPROP_SYNTAX_PARTITION_INFO_EX = 0x000d0001
1720  } CLUSTER_PROPERTY_SYNTAX;
1721 #if 0
1722  typedef struct {
1723  CLUSTER_PROPERTY_SYNTAX Syntax;
1724  uint32 Size;
1725  [subcontext(0),subcontext_size(Size)] [flag(NDR_REMAINING)] DATA_BLOB Buffer;
1726  [flag(NDR_ALIGN4)] DATA_BLOB Padding;
1727  } clusapi_propertyValues;
1728 
1729  typedef struct {
1730  [value(CLUSPROP_SYNTAX_NAME)] CLUSTER_PROPERTY_SYNTAX syntax_name;
1731  [value(strlen_m_term(buffer)*2)] uint32 size;
1732  nstring buffer;
1733  [flag(NDR_ALIGN2)] DATA_BLOB padding;
1734  clusapi_propertyValues PropertyValues;
1735  [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
1736  } clusapi_propertyValue;
1737 
1738  typedef [public] struct {
1739  uint32 propertyCount;
1740  clusapi_propertyValue propertyValues[propertyCount];
1741  [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
1742  } clusapi_PROPERTY_LIST;
1743 #endif
1744  WERROR
1745  clusapi_ClusterControl(
1746  [ in ] HCLUSTER_RPC hCluster,
1747  [ in ] clusapi_ClusterControlCode dwControlCode,
1748  [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1749  [ in ] uint32 nInBufferSize,
1750  [ out, size_is(nOutBufferSize),
1751  length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1752  [ in ] uint32 nOutBufferSize,
1753  [ out ] uint32 *lpBytesReturned,
1754  [ out ] uint32 *lpcbRequired,
1755  [ out ] WERROR *rpc_status
1756  );
1757 
1758  /*****************/
1759  /* Function 0x6B */
1760 
1761  WERROR
1762  clusapi_UnblockGetNotifyCall(
1763  [ in ] HNOTIFY_RPC hNotify
1764  );
1765 
1766  /*****************/
1767  /* Function 0x6C */
1768 
1769  WERROR
1770  clusapi_SetServiceAccountPassword(
1771  [ in, string ] [charset(UTF16)] uint16 *lpszNewPassword,
1772  [ in ] IDL_CLUSTER_SET_PASSWORD_FLAGS dwFlags,
1773  [ out, size_is(ReturnStatusBufferSize), length_is(*SizeReturned) ]
1774  IDL_CLUSTER_SET_PASSWORD_STATUS ReturnStatusBufferPtr[*],
1775  [ in, range(0, (64 * 1024)) ] uint32 ReturnStatusBufferSize,
1776  [ out ] uint32 *SizeReturned,
1777  [ out ] uint32 *ExpectedBufferSize
1778  );
1779 
1780  /*****************/
1781  /* Function 0x6D */
1782 
1783  WERROR
1784  clusapi_SetResourceDependencyExpression(
1785  [ in ] HRES_RPC hResource,
1786  [ in, string, unique ] [charset(UTF16)] uint16 *lpszDependencyExpression,
1787  [ out ] WERROR *rpc_status
1788  );
1789 
1790  /*****************/
1791  /* Function 0x6E */
1792 
1793  WERROR
1794  clusapi_GetResourceDependencyExpression(
1795  [ in ] HRES_RPC hResource,
1796  [ out, string ] [charset(UTF16)] uint16 **lpszDependencyExpression,
1797  [ out ] WERROR *rpc_status
1798  );
1799 
1800  /*****************/
1801  /* Function 0x6F */
1802 
1803  WERROR
1804  Opnum111NotUsedOnWire(void);
1805 
1806  /*****************/
1807  /* Function 0x70 */
1808 
1809  WERROR
1810  clusapi_GetResourceNetworkName(
1811  [ in ] HRES_RPC hResource,
1812  [ out, string ] [charset(UTF16)] uint16 **lpszName,
1813  [ out ] WERROR *rpc_status
1814  );
1815 
1816  /*****************/
1817  /* Function 0x71 */
1818 
1819  WERROR
1820  clusapi_ExecuteBatch(
1821  [ in ] HKEY_RPC hKey,
1822  [ in ] uint32 cbData,
1823  [ in, size_is(cbData)] uint8 *lpData,
1824  [ out ] int *pdwFailedCommand,
1825  [ out ] WERROR *rpc_status
1826  );
1827 
1828  /*****************/
1829  /* Function 0x72 */
1830 
1831  WERROR
1832  clusapi_CreateBatchPort(
1833  [ in ] HKEY_RPC hKey,
1834  [ out ] HBATCH_PORT_RPC *phBatchPort,
1835  [ out ] WERROR *rpc_status
1836  );
1837 
1838  /*****************/
1839  /* Function 0x73 */
1840 
1841  WERROR
1842  clusapi_GetBatchNotification(
1843  [ in ] HBATCH_PORT_RPC hBatchNotify,
1844  [ out ] uint32 *cbData,
1845  [ out, size_is(,*cbData) ] uint8 ** lpData
1846  );
1847 
1848  /*****************/
1849  /* Function 0x74 */
1850 
1851  WERROR
1852  clusapi_CloseBatchPort(
1853  [ in, out ] HBATCH_PORT_RPC *phBatchPort
1854  );
1855 
1856  /*****************/
1857  /* Function 0x75 */
1858 
1859  typedef [bitmap32bit] bitmap {
1860  CLUSAPI_READ_ACCESS = 0x00000001,
1861  CLUSAPI_CHANGE_ACCESS = 0x00000002,
1862  CLUSAPI_GENERIC_READ = 0x80000000,
1863  CLUSAPI_GENERIC_WRITE = 0x40000000,
1864  CLUSAPI_GENERIC_EXECUTE = 0x20000000,
1865  CLUSAPI_GENERIC_ALL = 0x10000000,
1866  CLUSAPI_MAXIMUM_ALLOWED = 0x02000000
1867  } clusapi_DesiredAccessMask;
1868 
1869 #if 0
1870  HCLUSTER_RPC
1871  clusapi_OpenClusterEx(
1872  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1873  [ out ] uint32 *lpdwGrantedAccess,
1874  [ out ] WERROR *Status
1875  );
1876 #else
1877  void
1878  clusapi_OpenClusterEx(
1879  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1880  [ out ] uint32 *lpdwGrantedAccess,
1881  [ out ] WERROR *Status,
1882  [ out ] HCLUSTER_RPC *hCluster
1883  );
1884 #endif
1885 
1886  /*****************/
1887  /* Function 0x76 */
1888 #if 0
1889  HNODE_RPC
1890  clusapi_OpenNodeEx(
1891  [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1892  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1893  [ out ] uint32 *lpdwGrantedAccess,
1894  [ out ] WERROR *Status,
1895  [ out ] WERROR *rpc_status
1896  );
1897 #else
1898  void
1899  clusapi_OpenNodeEx(
1900  [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1901  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1902  [ out ] uint32 *lpdwGrantedAccess,
1903  [ out ] WERROR *Status,
1904  [ out ] WERROR *rpc_status,
1905  [ out ] HNODE_RPC *hNode
1906  );
1907 #endif
1908  /*****************/
1909  /* Function 0x77 */
1910 #if 0
1911  HGROUP_RPC
1912  clusapi_OpenGroupEx(
1913  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
1914  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1915  [ out ] uint32 *lpdwGrantedAccess,
1916  [ out ] WERROR *Status,
1917  [ out ] WERROR *rpc_status
1918  );
1919 #else
1920  void
1921  clusapi_OpenGroupEx(
1922  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
1923  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1924  [ out ] uint32 *lpdwGrantedAccess,
1925  [ out ] WERROR *Status,
1926  [ out ] WERROR *rpc_status,
1927  [ out ] HGROUP_RPC *hGroup
1928  );
1929 #endif
1930  /*****************/
1931  /* Function 0x78 */
1932 #if 0
1933  HRES_RPC
1934  clusapi_OpenResourceEx(
1935  [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
1936  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1937  [ out ] uint32 *lpdwGrantedAccess,
1938  [ out ] WERROR *Status,
1939  [ out ] WERROR *rpc_status
1940  );
1941 #else
1942  void
1943  clusapi_OpenResourceEx(
1944  [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
1945  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1946  [ out ] uint32 *lpdwGrantedAccess,
1947  [ out ] WERROR *Status,
1948  [ out ] WERROR *rpc_status,
1949  [ out ] HRES_RPC *hResource
1950  );
1951 #endif
1952  /*****************/
1953  /* Function 0x79 */
1954 #if 0
1955  HNETWORK_RPC
1956  clusapi_OpenNetworkEx(
1957  [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1958  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1959  [ out ] uint32 *lpdwGrantedAccess,
1960  [ out ] WERROR *Status,
1961  [ out ] WERROR *rpc_status
1962  );
1963 #else
1964  void
1965  clusapi_OpenNetworkEx(
1966  [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1967  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1968  [ out ] uint32 *lpdwGrantedAccess,
1969  [ out ] WERROR *Status,
1970  [ out ] WERROR *rpc_status,
1971  [ out ] HNETWORK_RPC *hNetwork
1972  );
1973 #endif
1974  /*****************/
1975  /* Function 0x7A */
1976 #if 0
1977  HNETINTERFACE_RPC
1978  clusapi_OpenNetInterfaceEx(
1979  [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1980  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1981  [ out ] uint32 *lpdwGrantedAccess,
1982  [ out ] WERROR *Status,
1983  [ out ] WERROR *rpc_status
1984  );
1985 #else
1986  void
1987  clusapi_OpenNetInterfaceEx(
1988  [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1989  [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1990  [ out ] uint32 *lpdwGrantedAccess,
1991  [ out ] WERROR *Status,
1992  [ out ] WERROR *rpc_status,
1993  [ out ] HNETINTERFACE_RPC *hNetInterface
1994  );
1995 #endif
1996  /*****************/
1997  /* Function 0x7B */
1998 
1999  WERROR
2000  clusapi_ChangeCsvState(
2001  [ in ] HRES_RPC hResource,
2002  [ in ] uint32 dwState,
2003  [ out ] WERROR *rpc_status
2004  );
2005 
2006  /*****************/
2007  /* Function 0x7C */
2008 
2009  WERROR
2010  clusapi_CreateNodeEnumEx(
2011  [in] HNODE_RPC hNode,
2012  [in] uint32 dwType,
2013  [in] uint32 dwOptions,
2014  [out] ENUM_LIST **ReturnIdEnum,
2015  [out] ENUM_LIST **ReturnNameEnum,
2016  [out] WERROR* rpc_status
2017  );
2018 
2019  /*****************/
2020  /* Function 0x7D */
2021 
2022  WERROR
2023  clusapi_CreateEnumEx(
2024  [in] HCLUSTER_RPC hCluster,
2025  [in] ClusterEnumType dwType,
2026  [in] uint32 dwOptions,
2027  [out] ENUM_LIST **ReturnIdEnum,
2028  [out] ENUM_LIST **ReturnNameEnum,
2029  [out] WERROR* rpc_status
2030  );
2031 
2032  /*****************/
2033  /* Function 0x7E */
2034 
2035  WERROR
2036  clusapi_PauseNodeEx(
2037  [ in ] HNODE_RPC hNode,
2038  [ in ] boolean8 bDrainNode,
2039  [ in ] uint32 dwPauseFlags,
2040  [ out ] WERROR *rpc_status
2041  );
2042 
2043  /*****************/
2044  /* Function 0x7F */
2045 
2046  WERROR
2047  clusapi_PauseNodeWithDrainTarget(
2048  [ in ] HNODE_RPC hNode,
2049  [ in ] uint32 dwPauseFlags,
2050  [ in ] HNODE_RPC hNodeDrainTarget,
2051  [ out ] WERROR *rpc_status
2052  );
2053 
2054  /*****************/
2055  /* Function 0x80 */
2056 
2057  WERROR
2058  clusapi_ResumeNodeEx(
2059  [ in ] HNODE_RPC hNode,
2060  [ in ] uint32 dwResumeFailbackType,
2061  [ in ] uint32 dwResumeFlagsReserved,
2062  [ out ] WERROR *rpc_status
2063  );
2064 
2065  /*****************/
2066  /* Function 0x81 */
2067 #if 0
2068  HGROUP_RPC
2069  clusapi_CreateGroupEx(
2070  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
2071  [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
2072  [ out ] WERROR *Status,
2073  [ out ] WERROR *rpc_status
2074  );
2075 #else
2076  void
2077  clusapi_CreateGroupEx(
2078  [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
2079  [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
2080  [ out ] WERROR *Status,
2081  [ out ] WERROR *rpc_status,
2082  [ out ] HGROUP_RPC *hGroup
2083  );
2084 #endif
2085  /*****************/
2086  /* Function 0x82 */
2087 
2088  WERROR
2089  clusapi_OnlineGroupEx(
2090  [ in ] HGROUP_RPC hGroup,
2091  [ in ] uint32 dwOnlineFlags,
2092  [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2093  [ in ] uint32 cbInBufferSize,
2094  [ out ] WERROR *rpc_status
2095  );
2096 
2097  /*****************/
2098  /* Function 0x83 */
2099 
2100  WERROR
2101  clusapi_OfflineGroupEx(
2102  [ in ] HGROUP_RPC hGroup,
2103  [ in ] uint32 dwOfflineFlags,
2104  [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2105  [ in ] uint32 cbInBufferSize,
2106  [ out ] WERROR *rpc_status
2107  );
2108 
2109  /*****************/
2110  /* Function 0x84 */
2111 
2112  WERROR
2113  clusapi_MoveGroupEx(
2114  [ in ] HGROUP_RPC hGroup,
2115  [ in ] uint32 dwMoveFlags,
2116  [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2117  [ in ] uint32 cbInBufferSize,
2118  [ out ] WERROR *rpc_status
2119  );
2120 
2121  /*****************/
2122  /* Function 0x85 */
2123 
2124  WERROR
2125  clusapi_MoveGroupToNodeEx(
2126  [ in ] HGROUP_RPC hGroup,
2127  [ in ] HNODE_RPC hNode,
2128  [ in ] uint32 dwMoveFlags,
2129  [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2130  [ in ] uint32 cbInBufferSize,
2131  [ out ] WERROR *rpc_status
2132  );
2133 
2134  /*****************/
2135  /* Function 0x86 */
2136 
2137  WERROR
2138  clusapi_CancelClusterGroupOperation(
2139  [ in ] HGROUP_RPC hGroup,
2140  [ in ] uint32 dwCancelFlags,
2141  [ out ] WERROR *rpc_status
2142  );
2143 
2144  /*****************/
2145  /* Function 0x87 */
2146 
2147  WERROR
2148  clusapi_OnlineResourceEx(
2149  [ in ] HRES_RPC hResource,
2150  [ in ] uint32 dwOnlineFlags,
2151  [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2152  [ in ] uint32 cbInBufferSize,
2153  [ out ] WERROR *rpc_status
2154  );
2155 
2156  /*****************/
2157  /* Function 0x88 */
2158 
2159  WERROR
2160  clusapi_OfflineResourceEx(
2161  [ in ] HRES_RPC hResource,
2162  [ in ] uint32 dwOfflineFlags,
2163  [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2164  [ in ] uint32 cbInBufferSize,
2165  [ out ] WERROR *rpc_status
2166  );
2167 
2168 #define HGENERIC_RPC policy_handle
2169 #if 0
2170  typedef [context_handle] void *HGENERIC_RPC;
2171 #endif
2172 
2173  typedef struct {
2174  uint32 dwObjectType; /* really of type CLUSTER_OBJECT_TYPE_RPC */
2175  hyper FilterFlags;
2177 
2178  typedef struct {
2179  NOTIFY_FILTER_AND_TYPE_RPC FilterAndType;
2180  [ size_is(dwBufferSize ) ] uint8* buffer;
2181  uint32 dwBufferSize;
2182  [string] [charset(UTF16)] uint16 *ObjectId;
2183  [string] [charset(UTF16)] uint16 *ParentId;
2184  [string] [charset(UTF16)] uint16 *Name;
2185  [string] [charset(UTF16)] uint16 *Type;
2187 
2188  typedef struct {
2189  uint32 *dwNotifyKey;
2190  NOTIFICATION_DATA_RPC NotificationData;
2191  } NOTIFICATION_RPC;
2192 
2193  /*****************/
2194  /* Function 0x89 */
2195 
2196  /*
2197  * Notify interface V2 functions
2198  */
2199 #if 0
2200  HNOTIFY_RPC
2201  clusapi_CreateNotifyV2(
2202  [ out ] WERROR *rpc_error,
2203  [ out ] WERROR *rpc_status
2204  );
2205 #else
2206  void
2207  clusapi_CreateNotifyV2(
2208  [ out ] WERROR *rpc_error,
2209  [ out ] WERROR *rpc_status,
2210  [ out ] HNOTIFY_RPC *hNotify
2211  );
2212 
2213 #endif
2214  /*****************/
2215  /* Function 0x8A */
2216 
2217  WERROR
2218  clusapi_AddNotifyV2(
2219  [ in ] HNOTIFY_RPC hNotify,
2220  [ in ] HGENERIC_RPC hObject,
2221  [ in ] NOTIFY_FILTER_AND_TYPE_RPC filter,
2222  [ in ] uint32 dwNotifyKey,
2223  [ in ] uint32 dwVersion,
2224  [ in ] boolean8 isTargetedAtObject,
2225  [ out ] WERROR *rpc_status
2226  );
2227 
2228  /*****************/
2229  /* Function 0x8B */
2230 
2231  WERROR
2232  clusapi_GetNotifyV2(
2233  [ in ] HNOTIFY_RPC hNotify,
2234  [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_RPC **Notifications,
2235  [ out ] uint32 *dwNumNotifications
2236  );
2237 
2238  /*****************/
2239  /* Function 0x8C */
2240 
2241  WERROR
2242  clusapi_QueryAllValues(
2243  [ in ] HKEY_RPC hKey,
2244  [ out ] uint32 *pcbData,
2245  [ out, size_is(1, *pcbData) ] uint8 ** ppData,
2246  [ out ] WERROR *rpc_status
2247  );
2248 
2249  typedef struct {
2250  uint32 DiskIdType;
2251  uint8 DiskIdBlob[16];
2252  } CLUSTER_DISKID;
2253 
2254  /*****************/
2255  /* Function 0x8D */
2256 
2257  WERROR
2258  clusapi_StmFindDisk(
2259  [ in ] HCLUSTER_RPC hCluster,
2260  [ in ] uint32 dwFlags,
2261  [ in, out, unique ] CLUSTER_DISKID *pDiskId,
2262  [ in, size_is(uniqueIdSize), unique ] uint8 *pUniqueId,
2263  [ in ] uint32 uniqueIdSize,
2264  [ out, ref, string ] [charset(UTF16)] uint16 **ppszDeviceName,
2265  [ out ] WERROR *rpc_status
2266  );
2267 
2268  typedef struct{
2269  [string] [charset(UTF16)] uint16 *pszNodeName;
2270  HRESULT ResultCode;
2271  uint32 ResultSize;
2272  [unique, size_is(ResultSize)] uint8 *pResultData;
2274 
2275  typedef struct {
2276  uint32 NodeCount;
2277  [size_is(NodeCount)] CLUSTER_MRR_NODE_RESPONSE *pNodes;
2279 
2280  /*****************/
2281  /* Function 0x8E */
2282 
2283  WERROR
2284  clusapi_ClusterMrr(
2285  [ in ] HCLUSTER_RPC hCluster,
2286  [ in ] boolean8 fExcludeSelf,
2287  [ in ] hyper nodeSet,
2288  [ in ] uint32 dwTimeout,
2289  [ in ] uint32 dwComponent,
2290  [ in ] uint32 dwControlCode,
2291  [ in ] uint32 inSize,
2292  [ in, unique, size_is(inSize) ] uint8 *pInData,
2293  [ out, ref, size_is(1, 1) ] CLUSTER_MRR_RESPONSE **ppInfo,
2294  [ out ] WERROR *rpc_status
2295  );
2296 
2297  /*****************/
2298  /* Function 0x8F */
2299 
2300  WERROR
2301  clusapi_CreateGroupEnum(
2302  [ in ] HCLUSTER_RPC hCluster,
2303  [ in, unique, size_is(cbProperties)] uint8* pProperties,
2304  [ in ] uint32 cbProperties,
2305  [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
2306  [ in ] uint32 cbRoProperties,
2307  [ out ] GROUP_ENUM_LIST **ppResultList,
2308  [ out ] WERROR *rpc_status
2309  );
2310 
2311  /*****************/
2312  /* Function 0x90 */
2313 
2314  WERROR
2315  clusapi_CreateResourceEnum(
2316  [ in ] HCLUSTER_RPC hCluster,
2317  [ in, unique, size_is(cbProperties)] uint8* pProperties,
2318  [ in ] uint32 cbProperties,
2319  [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
2320  [ in ] uint32 cbRoProperties,
2321  [ out ] RESOURCE_ENUM_LIST **ppResultList,
2322  [ out ] WERROR *rpc_status
2323  );
2324 
2325  /*****************/
2326  /* Function 0x91 */
2327 
2328  WERROR
2329  clusapi_ExecuteReadBatch(
2330  [ in ] HKEY_RPC hKey,
2331  [ in ] uint32 cbInData,
2332  [ in, size_is(cbInData)] uint8 *lpInData,
2333  [ out ] uint32 *cbOutData,
2334  [ out, size_is(,*cbOutData) ] uint8 ** lpOutData,
2335  [ out ] WERROR *rpc_status
2336  );
2337 
2338  /*****************/
2339  /* Function 0x92 */
2340 
2341  WERROR
2342  clusapi_RestartResource(
2343  [ in ] HRES_RPC hResource,
2344  [ in ] uint32 dwFlags,
2345  [ out ] WERROR *rpc_status
2346  );
2347 
2348  typedef struct {
2349  uint32 dwNotifyKey;
2350  uint32 dwFilter;
2351  [string] [charset(UTF16)] uint16 *Name;
2353 
2354  /*****************/
2355  /* Function 0x93 */
2356 
2357  WERROR
2358  clusapi_GetNotifyAsync(
2359  [ in ] HNOTIFY_RPC hNotify,
2360  [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_DATA_ASYNC_RPC **Notifications,
2361  [ out ] uint32 *dwNumNotifications
2362  );
2363 
2364  typedef enum {
2365  DiskIdSignature = 0x00000001,
2366  DiskIdGuid = 0x00000002,
2367  DiskIdUnKnown = 0x00001388
2368  } CLUSDSK_DISKID_ENUM;
2369 
2370 #if 0
2371  typedef struct {
2372  CLUSDSK_DISKID_ENUM DiskIdType;
2373  [switch_is(DiskIdType)] union {
2374  [case(DiskIdSignature)] uint32 DiskSignature;
2375  [case(DiskIdGuid)] GUID DiskGuid;
2376  };
2377  } CLUSDSK_DISKID;
2378 #endif
2379  typedef enum {
2380  CLUSPROP_TYPE_ENDMARK = 0x0000,
2381  CLUSPROP_TYPE_LIST_VALUE = 0x0001,
2382  CLUSPROP_TYPE_RESCLASS = 0x0002,
2383  CLUSPROP_TYPE_NAME = 0x0004,
2384  CLUSPROP_TYPE_SIGNATURE = 0x0005,
2385  CLUSPROP_TYPE_SCSIADDRESS = 0x0006,
2386  CLUSPROP_TYPE_DISK_NUMBER = 0x0007,
2387  CLUSPROP_TYPE_PARTITION_INFO = 0x0008,
2388  CLUSPROP_TYPE_DISK_SERIALNUMBER = 0x000a,
2389  CLUSPROP_TYPE_DISK_GUID = 0x000b,
2390  CLUSPROP_TYPE_DISK_SIZE = 0x000c,
2391  CLUSPROP_TYPE_PARTITION_INFO_EX = 0x000d
2392  } CLUSTER_PROPERTY_TYPE;
2393 
2394  typedef enum {
2395  CLUSPROP_FORMAT_UNKNOWN = 0x0000,
2396  CLUSPROP_FORMAT_BINARY = 0x0001,
2397  CLUSPROP_FORMAT_DWORD = 0x0002,
2398  CLUSPROP_FORMAT_SZ = 0x0003,
2399  CLUSPROP_FORMAT_EXPAND_SZ = 0x0004,
2400  CLUSPROP_FORMAT_MULTI_SZ = 0x0005,
2401  CLUSPROP_FORMAT_ULARGE_INTEGER = 0x0006,
2402  CLUSPROP_FORMAT_LONG = 0x0007,
2403  CLUSPROP_FORMAT_EXPANDED_SZ = 0x0008,
2404  CLUSPROP_FORMAT_SECURITY_DESCRIPTOR = 0x0009,
2405  CLUSPROP_FORMAT_LARGE_INTEGER = 0x000a,
2406  CLUSPROP_FORMAT_WORD = 0x000b,
2407  CLUSPROP_FORMAT_FILETIME = 0x000c
2408  } CLUSTER_PROPERTY_FORMAT;
2409 
2410  typedef enum {
2411  CLUS_CHAR_UNKNOWN = 0x00000000,
2412  CLUS_CHAR_QUORUM = 0x00000001,
2413  CLUS_CHAR_DELETE_REQUIRES_ALL_NODES = 0x00000002,
2414  CLUS_CHAR_LOCAL_QUORUM = 0x00000004,
2415  CLUS_CHAR_BROADCAST_DELETE = 0x00000020,
2416  CLUS_CHAR_SINGLE_CLUSTER_INSTANCE = 0x00000040,
2417  CLUS_CHAR_SINGLE_GROUP_INSTANCE = 0x00000080,
2418  CLUS_CHAR_COEXIST_IN_SHARED_VOLUME_GROUP = 0x00000100,
2419  CLUS_CHAR_RESERVED1 = 0x00000200,
2420  CLUS_CHAR_MONITOR_DETACH = 0x00000400,
2421  CLUS_CHAR_RESERVED2 = 0x00000800,
2422  CLUS_CHAR_RESERVED3 = 0x00001000,
2423  CLUS_CHAR_RESERVED4 = 0x00002000
2424  } CLUS_CHARACTERISTICS;
2425 
2426  typedef enum {
2427  CLUS_FLAG_CORE = 0x00000001
2428  } CLUS_FLAGS;
2429 
2430  typedef enum {
2431  MaintenanceModeTypeDisableIsAliveCheck = 1,
2432  MaintenanceModeTypeOfflineResource = 2,
2433  MaintenanceModeTypeUnclusterResource = 3
2434  } MAINTENANCE_MODE_TYPE;
2435 
2436  typedef enum {
2437  CLUSTER_CHANGE_NODE_STATE = 0x00000001,
2438  CLUSTER_CHANGE_NODE_DELETED = 0x00000002,
2439  CLUSTER_CHANGE_NODE_ADDED = 0x00000004,
2440  CLUSTER_CHANGE_NODE_PROPERTY = 0x00000008,
2441  CLUSTER_CHANGE_REGISTRY_NAME = 0x00000010,
2442  CLUSTER_CHANGE_REGISTRY_ATTRIBUTES = 0x00000020,
2443  CLUSTER_CHANGE_REGISTRY_VALUE = 0x00000040,
2444  CLUSTER_CHANGE_REGISTRY_SUBTREE = 0x00000080,
2445  CLUSTER_CHANGE_RESOURCE_STATE = 0x00000100,
2446  CLUSTER_CHANGE_RESOURCE_DELETED = 0x00000200,
2447  CLUSTER_CHANGE_RESOURCE_ADDED = 0x00000400,
2448  CLUSTER_CHANGE_RESOURCE_PROPERTY = 0x00000800,
2449  CLUSTER_CHANGE_GROUP_STATE = 0x00001000,
2450  CLUSTER_CHANGE_GROUP_DELETED = 0x00002000,
2451  CLUSTER_CHANGE_GROUP_ADDED = 0x00004000,
2452  CLUSTER_CHANGE_GROUP_PROPERTY = 0x00008000,
2453  CLUSTER_CHANGE_RESOURCE_TYPE_DELETED = 0x00010000,
2454  CLUSTER_CHANGE_RESOURCE_TYPE_ADDED = 0x00020000,
2455  CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY = 0x00040000,
2456  CLUSTER_CHANGE_CLUSTER_RECONNECT = 0x00080000,
2457  CLUSTER_CHANGE_NETWORK_STATE = 0x00100000,
2458  CLUSTER_CHANGE_NETWORK_DELETED = 0x00200000,
2459  CLUSTER_CHANGE_NETWORK_ADDED = 0x00400000,
2460  CLUSTER_CHANGE_NETWORK_PROPERTY = 0x00800000,
2461  CLUSTER_CHANGE_NETINTERFACE_STATE = 0x01000000,
2462  CLUSTER_CHANGE_NETINTERFACE_DELETED = 0x02000000,
2463  CLUSTER_CHANGE_NETINTERFACE_ADDED = 0x04000000,
2464  CLUSTER_CHANGE_NETINTERFACE_PROPERTY = 0x08000000,
2465  CLUSTER_CHANGE_QUORUM_STATE = 0x10000000,
2466  CLUSTER_CHANGE_CLUSTER_STATE = 0x20000000,
2467  CLUSTER_CHANGE_CLUSTER_PROPERTY = 0x40000000,
2468  CLUSTER_CHANGE_HANDLE_CLOSE = 0x80000000
2469  } CLUSTER_CHANGE;
2470 
2471  typedef enum {
2472  CLUSREG_SET_VALUE = 1,
2473  CLUSREG_CREATE_KEY = 2,
2474  CLUSREG_DELETE_KEY = 3,
2475  CLUSREG_DELETE_VALUE = 4,
2476  CLUSREG_VALUE_DELETED = 6,
2477  CLUSREG_READ_KEY = 7,
2478  CLUSREG_READ_VALUE = 8,
2479  CLUSREG_READ_ERROR = 9
2480  } CLUSTER_REG_BATCH_COMMAND;
2481 #if 0
2482  typedef enum {
2483  IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
2484  } IDL_CLUSTER_SET_PASSWORD_FLAGS;
2485 #endif
2486  typedef enum {
2487  CLUSTER_QUORUM_MAINTAINED = 0,
2488  CLUSTER_QUORUM_LOST = 1
2489  } CLUSTER_QUORUM_VALUE;
2490 
2491  typedef enum {
2492  CLUSTER_OBJECT_TYPE_CLUSTER = 0x00000001,
2493  CLUSTER_OBJECT_TYPE_GROUP = 0x00000002,
2494  CLUSTER_OBJECT_TYPE_RESOURCE = 0x00000003,
2495  CLUSTER_OBJECT_TYPE_RESOURCE_TYPE = 0x00000004,
2496  CLUSTER_OBJECT_TYPE_NETWORK_INTERFACE = 0x00000005,
2497  CLUSTER_OBJECT_TYPE_NETWORK = 0x00000006,
2498  CLUSTER_OBJECT_TYPE_NODE = 0x00000007,
2499  CLUSTER_OBJECT_TYPE_REGISTRY = 0x00000008,
2500  CLUSTER_OBJECT_TYPE_QUORUM = 0x00000009,
2501  CLUSTER_OBJECT_TYPE_SHARED_VOLUME = 0x0000000a
2502  } CLUSTER_OBJECT_TYPE;
2503 
2504  typedef enum {
2505  CLUSTER_CHANGE_CLUSTER_RECONNECT_V2 = 0x00000001,
2506  CLUSTER_CHANGE_CLUSTER_STATE_V2 = 0x00000002,
2507  CLUSTER_CHANGE_CLUSTER_GROUP_ADDED_V2 = 0x00000004,
2508  CLUSTER_CHANGE_CLUSTER_HANDLE_CLOSE_V2 = 0x00000008,
2509  CLUSTER_CHANGE_CLUSTER_NETWORK_ADDED_V2 = 0x00000010,
2510  CLUSTER_CHANGE_CLUSTER_NODE_ADDED_V2 = 0x00000020,
2511  CLUSTER_CHANGE_CLUSTER_RESOURCE_TYPE_ADDED_V2 = 0x00000040,
2512  CLUSTER_CHANGE_CLUSTER_COMMON_PROPERTY_V2 = 0x00000080,
2513  CLUSTER_CHANGE_CLUSTER_PRIVATE_PROPERTY_V2 = 0x00000100,
2514  CLUSTER_CHANGE_CLUSTER_LOST_NOTIFICATIONS_V2 = 0x00000200,
2515  CLUSTER_CHANGE_CLUSTER_RENAME_V2 = 0x00000400
2516  } CLUSTER_CHANGE_CLUSTER_V2;
2517 
2518  typedef enum {
2519  CLUSTER_CHANGE_GROUP_DELETED_V2 = 0x00000001,
2520  CLUSTER_CHANGE_GROUP_COMMON_PROPERTY_V2 = 0x00000002,
2521  CLUSTER_CHANGE_GROUP_PRIVATE_PROPERTY_V2 = 0x00000004,
2522  CLUSTER_CHANGE_GROUP_STATE_V2 = 0x00000008,
2523  CLUSTER_CHANGE_GROUP_OWNER_NODE_V2 = 0x00000010,
2524  CLUSTER_CHANGE_GROUP_PREFERRED_OWNERS_V2 = 0x00000020,
2525  CLUSTER_CHANGE_GROUP_RESOURCE_ADDED_V2 = 0x00000040,
2526  CLUSTER_CHANGE_GROUP_RESOURCE_GAINED_V2 = 0x00000080,
2527  CLUSTER_CHANGE_GROUP_RESOURCE_LOST_V2 = 0x00000100,
2528  CLUSTER_CHANGE_GROUP_HANDLE_CLOSE_V2 = 0x00000200
2529  } CLUSTER_CHANGE_GROUP_V2;
2530 
2531  typedef enum {
2532  CLUSTER_CHANGE_RESOURCE_COMMON_PROPERTY_V2 = 0x00000001,
2533  CLUSTER_CHANGE_RESOURCE_PRIVATE_PROPERTY_V2 = 0x00000002,
2534  CLUSTER_CHANGE_RESOURCE_STATE_V2 = 0x00000004,
2535  CLUSTER_CHANGE_RESOURCE_OWNER_GROUP_V2 = 0x00000008,
2536  CLUSTER_CHANGE_RESOURCE_DEPENDENCIES_V2 = 0x00000010,
2537  CLUSTER_CHANGE_RESOURCE_DEPENDENTS_V2 = 0x00000020,
2538  CLUSTER_CHANGE_RESOURCE_POSSIBLE_OWNERS_V2 = 0x00000040,
2539  CLUSTER_CHANGE_RESOURCE_DELETED_V2 = 0x00000080,
2540  CLUSTER_CHANGE_RESOURCE_DLL_UPGRADED_V2 = 0x00000100,
2541  CLUSTER_CHANGE_RESOURCE_HANDLE_CLOSE_V2 = 0x00000200
2542  } CLUSTER_CHANGE_RESOURCE_V2;
2543 
2544  typedef enum {
2545  CLUSTER_CHANGE_RESOURCE_TYPE_DELETED_V2 = 0x00000001,
2546  CLUSTER_CHANGE_RESOURCE_TYPE_COMMON_PROPERTY_V2 = 0x00000002,
2547  CLUSTER_CHANGE_RESOURCE_TYPE_PRIVATE_PROPERTY_V2 = 0x00000004,
2548  CLUSTER_CHANGE_RESOURCE_TYPE_POSSIBLE_OWNERS_V2 = 0x00000008,
2549  CLUSTER_CHANGE_RESOURCE_TYPE_DLL_UPGRADED_V2 = 0x00000010
2550  } CHANGE_RESOURCE_TYPE_V2;
2551 
2552  typedef enum {
2553  CLUSTER_CHANGE_NETINTERFACE_DELETED_V2 = 0x00000001,
2554  CLUSTER_CHANGE_NETINTERFACE_COMMON_PROPERTY_V2 = 0x00000002,
2555  CLUSTER_CHANGE_NETINTERFACE_PRIVATE_PROPERTY_V2 = 0x00000004,
2556  CLUSTER_CHANGE_NETINTERFACE_STATE_V2 = 0x00000008,
2557  CLUSTER_CHANGE_NETINTERFACE_HANDLE_CLOSE_V2 = 0x00000010
2558  } CLUSTER_CHANGE_NETINTERFACE_V2;
2559 
2560  typedef enum {
2561  CLUSTER_CHANGE_NETWORK_DELETED_V2 = 0x00000001,
2562  CLUSTER_CHANGE_NETWORK_COMMON_PROPERTY_V2 = 0x00000002,
2563  CLUSTER_CHANGE_NETWORK_PRIVATE_PROPERTY_V2 = 0x00000004,
2564  CLUSTER_CHANGE_NETWORK_STATE_V2 = 0x00000008,
2565  CLUSTER_CHANGE_NETWORK_HANDLE_CLOSE_V2 = 0x00000010
2566  } CLUSTER_CHANGE_NETWORK_V2;
2567 
2568  typedef enum {
2569  CLUSTER_CHANGE_NODE_NETINTERFACE_ADDED_V2 = 0x00000001,
2570  CLUSTER_CHANGE_NODE_DELETED_V2 = 0x00000002,
2571  CLUSTER_CHANGE_NODE_COMMON_PROPERTY_V2 = 0x00000004,
2572  CLUSTER_CHANGE_NODE_PRIVATE_PROPERTY_V2 = 0x00000008,
2573  CLUSTER_CHANGE_NODE_STATE_V2 = 0x00000010,
2574  CLUSTER_CHANGE_NODE_GROUP_GAINED_V2 = 0x00000020,
2575  CLUSTER_CHANGE_NODE_GROUP_LOST_V2 = 0x00000040,
2576  CLUSTER_CHANGE_NODE_HANDLE_CLOSE_V2 = 0x00000080
2577  } CLUSTER_CHANGE_NODE_V2;
2578 
2579  typedef enum {
2580  CLUSTER_CHANGE_REGISTRY_ATTRIBUTES_V2 = 0x00000001,
2581  CLUSTER_CHANGE_REGISTRY_NAME_V2 = 0x00000002,
2582  CLUSTER_CHANGE_REGISTRY_SUBTREE_V2 = 0x00000004,
2583  CLUSTER_CHANGE_REGISTRY_VALUE_V2 = 0x00000008,
2584  CLUSTER_CHANGE_REGISTRY_HANDLE_CLOSE_V2 = 0x00000010
2585  } CLUSTER_CHANGE_REGISTRY_V2;
2586 
2587  typedef enum {
2588  CLUSTER_CHANGE_QUORUM_STATE_V2 = 0x00000001
2589  } CLUSTER_CHANGE_QUORUM_V2;
2590 
2591  typedef enum {
2592  CLUSTER_CHANGE_SHARED_VOLUME_STATE_V2 = 0x00000001
2593  } CLUSTER_CHANGE_SHARED_VOLUME_V2;
2594 #if 0
2595  typedef enum {
2596  DiskIdSignature = 0x00000001,
2597  DiskIdGuid = 0x00000002,
2598  DiskIdUnKnown = 0x00001388
2599  } CLUSDSK_DISKID_ENUM;
2600 #endif
2601 }
Definition: tvbparse.h:144
Definition: clusapi.idl:2249
Definition: clusapi.idl:72
Definition: clusapi.idl:2188
Definition: clusapi.idl:209
Definition: buffer.h:21
Definition: clusapi.idl:42
Definition: clusapi.idl:204
Definition: clusapi.idl:193
Definition: clusapi.idl:2268
Definition: clusapi.idl:171
Definition: clusapi.idl:181
Definition: conversation.c:27
Definition: clusapi.idl:48
Definition: mcast_stream.h:30
Definition: clusapi.idl:2178
Definition: clusapi.idl:176
Definition: clusapi.idl:2173
Definition: clusapi.idl:2275
Definition: clusapi.idl:2348
Definition: clusapi.idl:13