Platform SDK: Hardware

FSCTL_SET_REPARSE_POINT

Using the FSCTL_SET_REPARSE_POINT control code sets a reparse point on a file or directory.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,            // handle to file or directory
  FSCTL_SET_REPARSE_POINT,     // dwIoControlCode operation
  (LPVOID) lpInBuffer,         // input buffer 
  (DWORD) nInBufferSize,       // size of input buffer
  NULL,                        // lpOutBuffer; must be NULL
  0,                           // nOutBufferSize; must be zero
  (LPDWORD) lpBytesReturned,   // number of bytes returned
  (LPOVERLAPPED) lpOverlapped  // OVERLAPPED structure
);

Parameters

hDevice
[in] Handle to the file, alternate stream, or directory on which to set a reparse point. The handle must have write access to the file or directory. Call the CreateFile function to obtain a handle.
dwIoControlCode
[in] Control code for the operation. This value identifies the specific operation to be performed and the type of device on which to perform it. Use FSCTL_SET_REPARSE_POINT for this operation.
lpInBuffer
[in] Pointer to a REPARSE_GUID_DATA_BUFFER structure that contains the reparse point data.
nInBufferSize
[in] Size, in bytes, of the lpInBuffer buffer. This value must be at least the size indicated by REPARSE_GUID_DATA_BUFFER_HEADER_SIZE plus the size of the user-defined data.
lpOutBuffer
[out] Pointer to the output buffer. Not used; must be NULL
nOutBufferSize
[in] Size, in bytes, of the output buffer. Not used; must be zero.
lpBytesReturned
[out] Pointer to a variable that receives the actual count of bytes returned by the function in the output buffer.

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.

lpOverlapped
[in] Pointer to an OVERLAPPED structure.

If hDevice was opened with the FILE_FLAG_OVERLAPPED flag, lpOverlapped must point to a valid OVERLAPPED structure. In this case, the operation 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 DeviceIoControl 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. For extended error information, call GetLastError.

Remarks

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

Requirements

  Windows NT/2000: Requires Windows 2000.
  Windows 95/98: Unsupported.
  Header: Declared in Winioctl.h.

See Also

Device Input and Output Overview, Device Input and Output Control Codes, DeviceIoControl, FSCTL_GET_REPARSE_POINT, FSCTL_DELETE_REPARSE_POINT, REPARSE_GUID_DATA_BUFFER