FSCTL_ENABLE_UPGRADE

[This is preliminary documentation and subject to change.]

The FSCTL_ENABLE_UPGRADE operation enables or disables upgrading an NTFS volume to NTFS version 5. To perform this operation, call the DeviceIoControl function with the following parameters.

BOOL DeviceIoControl(
  (HANDLE) hDevice,        // handle to device of interest
  FSCTL_ENABLE_UPGRADE,    // dwIoControlCode, control code of
                           // operation to perform
  lpInBuffer,              // pointer to an unsigned long containing
                           // the input flag
  nInBufferSize,           // size of the input buffer
  NULL,                    // lpOutBuffer is not used; must be NULL
  0,                       // nOutBufferSize is not used;
                           // must be zero
  (LPDWORD) lpBytesReturned,       // pointer to variable to receive
                                   // output byte count
  (LPOVERLAPPED) lpOverlapped      // pointer to OVERLAPPED structure
                                   // for asynchronous operation
);

Parameters

hDevice
Handle to the volume on which the operation is to be performed. To obtain a device handle, call the CreateFile function.
dwIoControlCode
Control code for the operation. This value identifies the specific operation to be performed and the type of device on which the operation is to be performed. Use FSCTL_ENABLE_UPGRADE for this operation.
lpInBuffer
Pointer to a ULONG containing the upgrade state flag. The lpInBuffer parameter should be zero to disable an upgrade, or 1 to enable an upgrade. All other bits in the value are reserved and must be set to zero.
nInBufferSize
Size, in bytes, of the input buffer, that is the size of a ULONG.
lpOutBuffer
Pointer to the output buffer. Not used; must be NULL.
nOutBufferSize
Size, in bytes, of the output buffer. Not used; must be zero.
lpBytesReturned
Pointer to a DWORD variable.

If lpOverlapped is NULL (nonoverlapped I/O), the lpBytesReturned parameter is used internally and cannot be NULL.

If lpOverlapped is not NULL (overlapped I/O), lpBytesReturned can be NULL.

lpOverlapped
Pointer to an OVERLAPPED structure.

If the device specified by the hDevice parameter was opened with the FILE_FLAG_OVERLAPPED flag, this parameter must point to a valid OVERLAPPED structure. In this case, DeviceIoControl is performed as an overlapped (asynchronous) operation. If the device was opened with the FILE_FLAG_OVERLAPPED flag and lpOverlapped is NULL, the function fails in unpredictable ways.

If the hDevice device was opened without specifying the FILE_FLAG_OVERLAPPED flag, this parameter is ignored and the DeviceIoControl function does not return until the operation has been completed, or until an error occurs.

Return Values

If the operation succeeds, DeviceIoControl returns a nonzero value.

If the operation fails, DeviceIoControl returns zero. To get extended error information, call GetLastError.

Remarks

The FSCTL_ENABLE_UPGRADE operation does not actually upgrade to NTFS 5. Rather, it sets or clears a flag that enables the ability to upgrade. Whether FSCTL_ENABLE_UPGRADE sets or resets the flag depends on the value of the ULONG passed in the lpInBuffer parameter. If FSCTL_ENABLE_UPGRADE enables upgrades, the next time Windows NT 5.0 is started the volume will be upgraded.

For the implications of overlapped I/O on the FSCTL_ENABLE_UPGRADE operation, see the Remarks section of DeviceIoControl.

QuickInfo

  Windows NT: Requires version 5.0 or later.
  Windows: Unsupported.
  Windows CE: Unsupported.
  Header: Declared in winioctl.h.

See Also

CreateFile, DeviceIoControl, OVERLAPPED