IOCTL_VOLUME_IS_CLUSTERED - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// ntddvol.h

// CTL_CODE(0x0056, 0x00c, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_IS_CLUSTERED 0x00560030
View the official Windows Driver Kit DDI reference
// winioctl.h

// CTL_CODE(0x0056, 0x00c, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_IS_CLUSTERED 0x00560030
View the official Win32 API reference

NtDoc

No description available.

Windows Driver Kit DDI reference (ni-ntddvol-ioctl_volume_is_clustered)

IOCTL_VOLUME_IS_CLUSTERED IOCTL

Description

Allows a driver or application to determine if a volume is clustered.

Parameters

Major code

Input buffer

None.

Input buffer length

None.

Output buffer

None.

Output buffer length

None.

Input/output buffer

Input/output buffer length

Status block

If the volume is clustered, the IOCTL returns STATUS_SUCCESS. If the volume is not clustered, the IOCTL returns STATUS_UNSUCCESSFUL.

Remarks

For an invalid disk type, such as dynamic disk, the disk management component will return STATUS_INVALID_DEVICE_REQUEST.


Win32 API reference (ni-winioctl-ioctl_volume_is_clustered)

IOCTL_VOLUME_IS_CLUSTERED IOCTL

Description

Determines whether the specified volume is clustered.

To perform this operation, call the DeviceIoControl function with the following parameters.

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to device
  IOCTL_VOLUME_IS_CLUSTERED,    // dwIoControlCode
  NULL,                         // lpInBuffer
  0,                            // nInBufferSize
  NULL,                         // lpOutBuffer
  0,                            // nOutBufferSize
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Parameters

Input buffer

Input buffer length

Output buffer

Output buffer length

Input/output buffer

Input/output buffer length

Status block

Irp->IoStatus.Status is set to STATUS_SUCCESS if the request is successful.

Otherwise, Status to the appropriate error condition as a NTSTATUS code.

For more information, see NTSTATUS Values.

Remarks

The IOCTL_VOLUME_IS_CLUSTERED control code is valid only if the Cluster service is running.

The ERROR_GEN_FAILURE error indicates that the computer that currently owns the disk on which the volume resides is a server cluster node, but either the disk is a Physical Disk resource currently in an offline state or the disk is not a Physical Disk resource. To determine which of these situations exists, use the following steps:

  1. Call the ClusterEnum function to enumerate all Physical Disk resources in the cluster.
  2. Search each enumerated Physical Disk resource for the volume by calling the ClusterResourceControl function with CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO. If you cannot find the volume among the Physical Disk resources in the cluster, the volume does not reside on a Physical Disk resource.

The ERROR_INVALID_FUNCTION error indicates that the computer that currently owns the disk on which the volume resides is not a server cluster node or the disk is not a Physical Disk resource. To determine whether a computer is a server cluster node, call the GetNodeClusterState function.

In Windows 8 and Windows Server 2012, this code is supported by the following technologies.

Technology Supported
Server Message Block (SMB) 3.0 protocol No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 with Scale-out File Shares (SO) No
Cluster Shared Volume File System (CsvFS) Yes

See also