[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
);
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.
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.
If the operation succeeds, DeviceIoControl returns a nonzero value.
If the operation fails, DeviceIoControl returns zero. To get extended error information, call GetLastError.
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.
Windows NT: Requires version 5.0 or later.
Windows: Unsupported.
Windows CE: Unsupported.
Header: Declared in winioctl.h.
CreateFile, DeviceIoControl, OVERLAPPED