Platform SDK: Hardware |
The FSCTL_WRITE_USN_CLOSE_RECORD operation generates a record in the change journal stream for the input file. This record will have the USN_REASON_CLOSE flag.
To perform this operation, call the DeviceIoControl function with the following parameters.
BOOL DeviceIoControl( (HANDLE) hDevice, // handle to volume FSCTL_WRITE_USN_CLOSE_RECORD, // dwIoControlCode operation NULL, // lpInBuffer; must be NULL 0, // nInBufferSize; must be NULL (LPVOID) lpOutBuffer, // output buffer (DWORD) nOutBufferSize, // size of output buffer (LPDWORD) lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped // OVERLAPPED structure );
If lpOverlapped is NULL (nonoverlapped I/O), lpBytesReturned is used internally and cannot be NULL.
If lpOverlapped is not NULL (overlapped I/O), lpBytesReturned can be NULL.
If hDevice was opened with the FILE_FLAG_OVERLAPPED flag, lpOverlapped 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 hDevice was opened without specifying the FILE_FLAG_OVERLAPPED flag, lpOverlapped 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.
Possible return values include the following.
Value | Meaning |
---|---|
ERROR_INVALID_FUNCTION | The specified volume does not support change journals. Change journals are only supported on Windows 2000. Where supported, change journals can also be deleted. |
ERROR_INVALID_PARAMETER | One or more parameters was invalid. For example, DeviceIoControl returns this error code if the handle supplied is not a volume handle. |
ERROR_JOURNAL_DELETE_IN_PROGRESS | An attempt was made to read from, create, delete, or modify the journal while a journal deletion was under way, or an attempt was made to write a USN record while a journal deletion was under way. |
For the implications of overlapped I/O on this operation, see the Remarks section for DeviceIoControl.
You can use FSCTL_WRITE_USN_CLOSE_RECORD to force a close record into the change journal for the input handle. The close record will contain any current USN reasons for this file as well. The output buffer will return the USN value associated with this operation.
For more information about creating a change journal, see Creating, Modifying, and Deleting a Change Journal.
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Unsupported.
Header: Declared in Winioctl.h.
Device Input and Output Overview, Device Input and Output Control Codes, CreateFile, DeviceIoControl, OVERLAPPED