pub unsafe extern "C" fn FspFileSystemResolveReparsePoints(
    FileSystem: *mut FSP_FILE_SYSTEM,
    GetReparsePointByName: Option<unsafe extern "C" fn(FileSystem: *mut FSP_FILE_SYSTEM, Context: PVOID, FileName: PWSTR, IsDirectory: BOOLEAN, Buffer: PVOID, PSize: PSIZE_T) -> NTSTATUS>,
    Context: PVOID,
    FileName: PWSTR,
    ReparsePointIndex: UINT32,
    ResolveLastPathComponent: BOOLEAN,
    PIoStatus: PIO_STATUS_BLOCK,
    Buffer: PVOID,
    PSize: PSIZE_T
) -> NTSTATUS
Expand description

Resolve reparse points.

Given a file name (and an index where to start resolving) this function will attempt to resolve as many reparse points as possible. The function will call the supplied GetReparsePointByName function for every path component until it resolves the reparse points or the whole path is processed.

This is a helper for implementing the ResolveReparsePoints operation in file systems that support reparse points.

@param FileSystem The file system object. @param GetReparsePointByName Pointer to function that can retrieve reparse point information by name. The function should return STATUS_SUCCESS if the passed FileName is a reparse point or STATUS_NOT_A_REPARSE_POINT (or other error code) otherwise. @param Context User context to supply to GetReparsePointByName. @param FileName The name of the file or directory to have its reparse points resolved. @param ReparsePointIndex The index of the first reparse point within FileName. @param ResolveLastPathComponent If FALSE, the last path component of FileName should not be resolved, even if it is a reparse point that can be resolved. If TRUE, all path components should be resolved if possible. @param PIoStatus Pointer to storage that will receive the status to return to the FSD. When this function succeeds it must set PIoStatus->Status to STATUS_REPARSE and PIoStatus->Information to either IO_REPARSE or the reparse tag. @param Buffer Pointer to a buffer that will receive the resolved file name (IO_REPARSE) or reparse data (reparse tag). If the function returns a file name, it should not be NULL terminated. @param PSize [in,out] Pointer to the buffer size. On input it contains the size of the buffer. On output it will contain the actual size of data copied. @return STATUS_REPARSE or error code. @see ResolveReparsePoints