3.1.4.3.7.17 CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID

The CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID resource control code verifies that the file path is on the cluster shared volume and retrieves a unique volume identifier corresponding to that volume.

ClusAPI Protocol version 2.0 servers do not support this control and MUST fail this method using error code 0x00000001 (ERROR_INVALID_FUNCTION).

The client MUST provide a path to a file as a NULL-terminated Unicode string in the buffer that is designated by lpInBuffer.

After successful completion of the method, the server MUST write a volume unique id, as a NULL-terminated Unicode string, to the buffer that is designated by lpOutBuffer. If the lpOutBuffer buffer is not large enough to accommodate the volume unique id and the terminating Unicode NULL character, error 0x000000EA (ERROR_MORE_DATA) MUST be returned and lpcbRequired MUST be set to the number of bytes that are required for the output buffer.

If the file path does not point to an existing file or directory, the server MUST fail this method and return the error supplied by a file system.

If the file or directory pointed by the file path does not reside on a shared volume, the server MUST fail this method by using error code 0x00001739 (ERROR_CLUSTER_NOT_SHARED_VOLUME).

volume unique id returned MUST be of form:

 RESOURCE-ID : PARTITIONOFFSET,

where RESOURCE-ID is a unique resource ID (as specified in 3.1.4.2.15) identifying disk resource hosting the shared volume, and where PARTITIONOFFSET is decimal number representing the offset of the disk partition containing the volume on that disk.

Example:

    Input:  c:\clusterstorage\volume1\a.txt
    Output:  c12fde64-73df-4efb-bf36-11f13ea99a31:65536