3.1.4.2.80 ApiNodeControl (Opnum 79)

(Protocol Version 3) The ApiNodeControl method instructs the server to initiate, on the specified node, an operation that is defined by the specified control code. The operation is executed on the node where the specified node context handle was obtained.

The server requires that the access level associated with the hNode context handle is "All" (section 3.1.4), if and only if the bitwise AND of dwControlCode and 0x00400000 is not equal to zero.

 error_status_t ApiNodeControl(
   [in] HNODE_RPC hNode,
   [in] DWORD dwControlCode,
   [in, unique, size_is(nInBufferSize)] UCHAR *lpInBuffer,
   [in] DWORD nInBufferSize,
   [out, size_is(nOutBufferSize), 
     length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
   [in] DWORD nOutBufferSize,
   [out] DWORD *lpBytesReturned,
   [out] DWORD *lpcbRequired,
   [out] error_status_t *rpc_status
 );

hNode: An HNODE_RPC context handle that is obtained in a previous ApiOpenNode or ApiOpenNodeEx method call.

dwControlCode: Indicates the operation to perform on the node. MUST be one of the following values.

Value

Meaning

CLUSCTL_NODE_UNKNOWN

0x4000000

Verifies that control codes for the node are being processed.

CLUSCTL_NODE_GET_CHARACTERISTICS

0x4000005

Retrieves the intrinsic characteristics associated with the node.

CLUSCTL_NODE_GET_FLAGS

0x4000009

Retrieves the flags that are set for the node.

CLUSCTL_NODE_GET_NAME

0x4000029

Retrieves the name of the node.

CLUSCTL_NODE_GET_ID

0x4000039

Retrieves the unique ID for the node.

CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME

0x4000041

Retrieves the identity of the service on the designated node.

CLUSCTL_NODE_ENUM_COMMON_PROPERTIES

0x4000051

Retrieves a list of the common property names for the designated node.

CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES

0x4000055

Retrieves the read-only common property values for the designated node.

CLUSCTL_NODE_GET_COMMON_PROPERTIES

0x4000059

Retrieves all common property values for the designated node.

CLUSCTL_NODE_SET_COMMON_PROPERTIES

0x440005E

Sets the common property values for the designated node.

CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES

0x4000061

Validates that the values supplied for the common properties are acceptable for the designated node.

CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES

0x4000079

Retrieves a list of the private property names for the designated node.

CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES

0x400007D

Retrieves the read-only private property names for the designated node.

CLUSCTL_NODE_GET_PRIVATE_PROPERTIES

0x4000081

Retrieves all private property values for the designated node.

CLUSCTL_NODE_SET_PRIVATE_PROPERTIES

0x4400086

Sets the private property values for the designated node.

CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES

0x4000089

Validates that the supplied property list is valid.

CLUSCTL_NODE_GET_CLUSBFLT_PATHS

0x40002FD

Retrieves the path Ids for the designated nodes.

CLUSCTL_NODE_GET_CLUSBFLT_PATHINFO_EX

0x400021F1

Retrieves the path info for each designated node.

CLUSCTL_NODE_STORAGE_GET_PHYSICAL_DISK_INFO_EX

0x400021E9

Retrieves the physical disk information on the node.

CLUSCTL_NODE_GET_SBL_DISK_STATE_EX

0x400021DD

Retrieves the storage disk state.

CLUSCTL_NODE_GET_SBL_CACHE_CONFIG_EX

0x400021E1

Retrieves the storage cache configuration.

CLUSCTL_NODE_SCALEOUTNODE_PLACEMENT_UPDATE

0x40002d2d

Returns the result of VM migration from one cluster to another cluster.

lpInBuffer: The input data for the operation that is specified by dwControlCode. See the following sections for the data structures that are required for each dwControlCode.

nInBufferSize: The size, in bytes, of the buffer that is specified by lpInBuffer.

lpOutBuffer: The output data for the operation that is specified by dwControlCode. The output buffer MUST be allocated and provided by the client.

nOutBufferSize: The available size of the buffer that is specified by lpOutBuffer, as allocated by the client.

lpBytesReturned: On successful completion of the method, the server MUST set lpBytesReturned to the number of bytes that are written to the lpOutBuffer buffer.

lpcbRequired: If nOutBufferSize indicates that the buffer that is specified by lpOutBuffer is too small for the output data, the server MUST return 0x000000EA (ERROR_MORE_DATA) and set lpcbRequired to the number of bytes that are required for the output buffer. If the method completes successfully and lpBytesReturned is 0x00000000 then the server MUST set lpcbRequired to 0x00000000. In any other condition the client MUST ignore lpcbRequired after this method completes.

rpc_status: A 32-bit integer used to indicate success or failure. The RPC runtime MUST indicate, by writing to this parameter, whether it succeeded in executing this method on the server. The encoding of the value passed in this parameter MUST conform to encoding for comm_status and fault_status, as specified in Appendix E of [C706].

Return Values: The method MUST return the following error codes for the specified conditions.

Return value/code

Description

0x00000000

ERROR_SUCCESS

Success.

0x00000001

ERROR_INVALID_FUNCTION

The node that is designated by hNode does not support the operation that is designated by dwControlCode.

0x0000000D

ERROR_INVALID_DATA

The input data was invalid or was incorrectly formatted.

0x00000057

ERROR_INVALID_PARAMETER

The input data was invalid or was incorrectly formatted.

0x000000EA

ERROR_MORE_DATA

The nOutBufferSize parameter indicates that the buffer that is pointed to by lpOutBuffer is not large enough to hold the data that resulted from the operation.

For any other condition, this method returns a value that is not one of the values listed in the preceding table. The client MUST behave in one consistent, identical manner for all values that are not listed in the preceding table. The client SHOULD treat errors specified in section 3.2.4.6 as recoverable errors and initiate the reconnect procedure as specified in section 3.2.4.6.

Upon receiving this message, the server MUST:

  • Determine the number of bytes that are required for lpOutBuffer. If the size indicated by nOutBufferSize is less than the number of bytes that are required for lpOutBuffer, return ERROR_MORE_DATA (0x000000EA), except as specified in the following sub-sections where a different value is returned, and set lpcbRequired to the number of bytes that are required for the output buffer.

  • Return either ERROR_INVALID_DATA or ERROR_INVALID_PARAMETER if the input data is invalid or incorrectly formatted. The client MUST treat these two error codes the same.