<?xml version="1.0"?>
<doc>
    <assembly>
        <name>winfsp-msil</name>
    </assembly>
    <members>
        <member name="T:Fsp.FileSystemBase">
            <summary>
            Provides the base class that user mode file systems must inherit from.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemBase.ExceptionHandler(System.Exception)">
            <summary>
            Provides a means to customize the returned status code when an exception happens.
            </summary>
            <param name="ex"></param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Init(System.Object)">
            <summary>
            Occurs just before the file system is mounted.
            File systems may override this method to configure the file system host.
            </summary>
            <param name="Host">
            The file system host that is mounting this file system.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Mounted(System.Object)">
            <summary>
            Occurs just after the file system is mounted,
            but prior to receiving any file system operation.
            </summary>
            <param name="Host">
            The file system host that is mounting this file system.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Unmounted(System.Object)">
            <summary>
            Occurs just after the file system is unmounted.
            No other file system operations will be received on this file system.
            </summary>
            <param name="Host">
            The file system host that is mounting this file system.
            </param>
        </member>
        <member name="M:Fsp.FileSystemBase.GetVolumeInfo(Fsp.Interop.VolumeInfo@)">
            <summary>
            Gets the volume information.
            </summary>
            <param name="VolumeInfo">
            Receives the volume information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.SetVolumeLabel(System.String,Fsp.Interop.VolumeInfo@)">
            <summary>
            Sets the volume label.
            </summary>
            <param name="VolumeLabel">
            The new label for the volume.
            </param>
            <param name="VolumeInfo">
            Receives the updated volume information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.GetSecurityByName(System.String,System.UInt32@,System.Byte[]@)">
            <summary>
            Gets file or directory attributes and security descriptor given a file name.
            </summary>
            <param name="FileName">
            The name of the file or directory to get the attributes and security descriptor for.
            </param>
            <param name="FileAttributes">
            Receives the file attributes on successful return.
            If this call returns STATUS_REPARSE, the file system may place here the index of the
            first reparse point within FileName.
            </param>
            <param name="SecurityDescriptor">
            Receives the file security descriptor. If the SecurityDescriptor parameter is null
            on input the file system should not fill this value.
            </param>
            <returns>
            STATUS_SUCCESS, STATUS_REPARSE or error code.
            STATUS_REPARSE should be returned by file systems that support reparse points when
            they encounter a FileName that contains reparse points anywhere but the final path
            component.
            </returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Create(System.String,System.UInt32,System.UInt32,System.UInt32,System.Byte[],System.UInt64,System.Object@,System.Object@,Fsp.Interop.FileInfo@,System.String@)">
            <summary>
            Creates a new file or directory.
            </summary>
            <param name="FileName">
            The name of the file or directory to be created.
            </param>
            <param name="CreateOptions">
            Create options for this request.
            </param>
            <param name="GrantedAccess">
            Determines the specific access rights that have been granted for this request.
            </param>
            <param name="FileAttributes">
            File attributes to apply to the newly created file or directory.
            </param>
            <param name="SecurityDescriptor">
            Security descriptor to apply to the newly created file or directory.
            </param>
            <param name="AllocationSize">
            Allocation size for the newly created file.
            </param>
            <param name="FileNode">
            Receives the file node for the newly created file.
            </param>
            <param name="FileDesc">
            Receives the file descriptor for the newly created file.
            </param>
            <param name="FileInfo">
            Receives the file information for the newly created file.
            </param>
            <param name="NormalizedName">
            Receives the normalized name for the newly created file.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Open(System.String,System.UInt32,System.UInt32,System.Object@,System.Object@,Fsp.Interop.FileInfo@,System.String@)">
            <summary>
            Opens a file or directory.
            </summary>
            <param name="FileName">
            The name of the file or directory to be opened.
            </param>
            <param name="CreateOptions">
            Create options for this request.
            </param>
            <param name="GrantedAccess">
            Determines the specific access rights that have been granted for this request.
            </param>
            <param name="FileNode">
            Receives the file node for the newly opened file.
            </param>
            <param name="FileDesc">
            Receives the file descriptor for the newly opened file.
            </param>
            <param name="FileInfo">
            Receives the file information for the newly opened file.
            </param>
            <param name="NormalizedName">
            Receives the normalized name for the newly opened file.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Overwrite(System.Object,System.Object,System.UInt32,System.Boolean,System.UInt64,Fsp.Interop.FileInfo@)">
            <summary>
            Overwrites a file.
            </summary>
            <param name="FileNode">
            The file node for the file to be overwritten.
            </param>
            <param name="FileDesc">
            The file descriptor for the file to be overwritten.
            </param>
            <param name="FileAttributes">
            File attributes to apply to the overwritten file.
            </param>
            <param name="ReplaceFileAttributes">
            When true the existing file attributes should be replaced with the new ones.
            When false the existing file attributes should be merged (or'ed) with the new ones.
            </param>
            <param name="AllocationSize">
            Allocation size for the overwritten file.
            </param>
            <param name="FileInfo">
            Receives the updated file information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Cleanup(System.Object,System.Object,System.String,System.UInt32)">
            <summary>
            Cleans up a file or directory.
            </summary>
            <remarks>
            <para>
            When CreateFile is used to open or create a file the kernel creates a kernel mode file
            object (type FILE_OBJECT) and a handle for it, which it returns to user-mode. The handle may
            be duplicated (using DuplicateHandle), but all duplicate handles always refer to the same
            file object. When all handles for a particular file object get closed (using CloseHandle)
            the system sends a Cleanup request to the file system.
            </para><para>
            There will be a Cleanup operation for every Create or Open operation posted to the user mode
            file system. However the Cleanup operation is not the final close operation on a file.
            The file system must be ready to receive additional operations until close time. This is true
            even when the file is being deleted!
            </para><para>
            The Flags parameter contains information about the cleanup operation:
            <list>
            <item>CleanupDelete -
            An important function of the Cleanup operation is to complete a delete operation. Deleting
            a file or directory in Windows is a three-stage process where the file is first opened, then
            tested to see if the delete can proceed and if the answer is positive the file is then
            deleted during Cleanup.
            When this flag is set, this is the last outstanding cleanup for this particular file node.
            </item>
            <item>CleanupSetAllocationSize -
            The NTFS and FAT file systems reset a file's allocation size when they receive the last
            outstanding cleanup for a particular file node. User mode file systems that implement
            allocation size and wish to duplicate the NTFS and FAT behavior can use this flag.
            </item>
            <item>CleanupSetArchiveBit -
            File systems that support the archive bit should set the file node's archive bit when this
            flag is set.
            </item>
            <item>CleanupSetLastAccessTime, CleanupSetLastWriteTime, CleanupSetChangeTime -
            File systems should set the corresponding file time when each one of these flags is set.
            Note that updating the last access time is expensive and a file system may choose to not
            implement it.
            </item>
            </list>
            </para><para>
            There is no way to report failure of this operation. This is a Windows limitation.
            </para>
            </remarks>
            <param name="FileNode">
            The file node of the file or directory to cleanup.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to cleanup.
            </param>
            <param name="FileName">
            The name of the file or directory to cleanup. Sent only when a Delete is requested.
            </param>
            <param name="Flags">
            These flags determine whether the file was modified and whether to delete the file.
            </param>
            <seealso cref="M:Fsp.FileSystemBase.CanDelete(System.Object,System.Object,System.String)"/>
            <seealso cref="M:Fsp.FileSystemBase.SetDelete(System.Object,System.Object,System.String,System.Boolean)"/>
            <seealso cref="M:Fsp.FileSystemBase.Close(System.Object,System.Object)"/>
        </member>
        <member name="M:Fsp.FileSystemBase.Close(System.Object,System.Object)">
            <summary>
            Closes a file or directory.
            </summary>
            <param name="FileNode">
            The file node of the file or directory to close.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to close.
            </param>
        </member>
        <member name="M:Fsp.FileSystemBase.Read(System.Object,System.Object,System.IntPtr,System.UInt64,System.UInt32,System.UInt32@)">
            <summary>
            Reads a file.
            </summary>
            <param name="FileNode">
            The file node of the file to read.
            </param>
            <param name="FileDesc">
            The file descriptor of the file to read.
            </param>
            <param name="Buffer">
            Pointer to a buffer that receives the results of the read operation.
            </param>
            <param name="Offset">
            Offset within the file to read from.
            </param>
            <param name="Length">
            Length of data to read.
            </param>
            <param name="BytesTransferred">
            Receives the actual number of bytes read.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Write(System.Object,System.Object,System.IntPtr,System.UInt64,System.UInt32,System.Boolean,System.Boolean,System.UInt32@,Fsp.Interop.FileInfo@)">
            <summary>
            Writes a file.
            </summary>
            <param name="FileNode">
            The file node of the file to write.
            </param>
            <param name="FileDesc">
            The file descriptor of the file to write.
            </param>
            <param name="Buffer">
            Pointer to a buffer that receives the results of the write operation.
            </param>
            <param name="Offset">
            Offset within the file to write to.
            </param>
            <param name="Length">
            Length of data to write.
            </param>
            <param name="WriteToEndOfFile">
            When true the file system must write to the current end of file. In this case the Offset
            parameter will contain the value -1.
            </param>
            <param name="ConstrainedIo">
            When true the file system must not extend the file (i.e. change the file size).
            </param>
            <param name="BytesTransferred">
            Receives the actual number of bytes written.
            </param>
            <param name="FileInfo">
            Receives the updated file information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Flush(System.Object,System.Object,Fsp.Interop.FileInfo@)">
            <summary>
            Flushes a file or volume.
            </summary>
            <remarks>
            Note that the FSD will also flush all file/volume caches prior to invoking this operation.
            </remarks>
            <param name="FileNode">
            The file node of the file to flush.
            When this and the FileDesc parameter are null the whole volume is being flushed.
            </param>
            <param name="FileDesc">
            The file descriptor of the file to flush.
            When this and the FileNode parameter are null the whole volume is being flushed.
            </param>
            <param name="FileInfo">
            Receives the updated file information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.GetFileInfo(System.Object,System.Object,Fsp.Interop.FileInfo@)">
            <summary>
            Gets file or directory information.
            </summary>
            <param name="FileNode">
            The file node of the file to get information for.
            </param>
            <param name="FileDesc">
            The file descriptor of the file to get information for.
            </param>
            <param name="FileInfo">
            Receives the file information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.SetBasicInfo(System.Object,System.Object,System.UInt32,System.UInt64,System.UInt64,System.UInt64,System.UInt64,Fsp.Interop.FileInfo@)">
            <summary>
            Sets file or directory basic information.
            </summary>
            <param name="FileNode">
            The file node of the file to set information for.
            </param>
            <param name="FileDesc">
            The file descriptor of the file to set information for.
            </param>
            <param name="FileAttributes">
            File attributes to apply to the file or directory.
            If the value -1 is sent, the file attributes should not be changed.
            </param>
            <param name="CreationTime">
            Creation time to apply to the file or directory.
            If the value 0 is sent, the creation time should not be changed.
            </param>
            <param name="LastAccessTime">
            Last access time to apply to the file or directory.
            If the value 0 is sent, the last access time should not be changed.
            </param>
            <param name="LastWriteTime">
            Last write time to apply to the file or directory.
            If the value 0 is sent, the last write time should not be changed.
            </param>
            <param name="ChangeTime">
            Change time to apply to the file or directory.
            If the value 0 is sent, the change time should not be changed.
            </param>
            <param name="FileInfo">
            Receives the updated file information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.SetFileSize(System.Object,System.Object,System.UInt64,System.Boolean,Fsp.Interop.FileInfo@)">
            <summary>
            Sets file/allocation size.
            </summary>
            <remarks>
            <para>
            This function is used to change a file's sizes. Windows file systems maintain two kinds
            of sizes: the file size is where the End Of File (EOF) is, and the allocation size is the
            actual size that a file takes up on the "disk".
            </para><para>
            The rules regarding file/allocation size are:
            <list>
            <item>
            Allocation size must always be aligned to the allocation unit boundary. The allocation
            unit is the product SectorSize * SectorsPerAllocationUnit. The FSD will always send
            properly aligned allocation sizes when setting the allocation size.
            </item>
            <item>
            Allocation size is always greater or equal to the file size.
            </item>
            <item>
            A file size of more than the current allocation size will also extend the allocation
            size to the next allocation unit boundary.
            </item>
            <item>
            An allocation size of less than the current file size should also truncate the current
            file size.
            </item>
            </list>
            </para>
            </remarks>
            <param name="FileNode">
            The file node of the file to set the file/allocation size for.
            </param>
            <param name="FileDesc">
            The file descriptor of the file to set the file/allocation size for.
            </param>
            <param name="NewSize">
            New file/allocation size to apply to the file.
            </param>
            <param name="SetAllocationSize">
            If true, then the allocation size is being set. if false, then the file size is being set.
            </param>
            <param name="FileInfo">
            Receives the updated file information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.CanDelete(System.Object,System.Object,System.String)">
            <summary>
            Determines whether a file or directory can be deleted.
            </summary>
            <remarks>
            <para>
            This function tests whether a file or directory can be safely deleted. This function does
            not need to perform access checks, but may performs tasks such as check for empty
            directories, etc.
            </para><para>
            This function should <b>NEVER</b> delete the file or directory in question. Deletion should
            happen during Cleanup with the CleanupDelete flag set.
            </para><para>
            This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used.
            It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE.
            </para><para>
            NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However
            most file systems need only implement the CanDelete operation.
            </para>
            </remarks>
            <param name="FileNode">
            The file node of the file or directory to test for deletion.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to test for deletion.
            </param>
            <param name="FileName">
            The name of the file or directory to test for deletion.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
            <seealso cref="M:Fsp.FileSystemBase.Cleanup(System.Object,System.Object,System.String,System.UInt32)"/>
            <seealso cref="M:Fsp.FileSystemBase.SetDelete(System.Object,System.Object,System.String,System.Boolean)"/>
        </member>
        <member name="M:Fsp.FileSystemBase.Rename(System.Object,System.Object,System.String,System.String,System.Boolean)">
            <summary>
            Renames a file or directory.
            </summary>
            <remarks>
            The kernel mode FSD provides certain guarantees prior to posting a rename operation:
            <list>
            <item>
            A file cannot be renamed if a file with the same name exists and has open handles.
            </item>
            <item>
            A directory cannot be renamed if it or any of its subdirectories contains a file that
            has open handles.
            </item>
            </list>
            </remarks>
            <param name="FileNode">
            The file node of the file or directory to be renamed.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to be renamed.
            </param>
            <param name="FileName">
            The current name of the file or directory to rename.
            </param>
            <param name="NewFileName">
            The new name for the file or directory.
            </param>
            <param name="ReplaceIfExists">
            Whether to replace a file that already exists at NewFileName.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.GetSecurity(System.Object,System.Object,System.Byte[]@)">
            <summary>
            Gets file or directory security descriptor.
            </summary>
            <param name="FileNode">
            The file node of the file or directory to get the security descriptor for.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to get the security descriptor for.
            </param>
            <param name="SecurityDescriptor">
            Receives the file security descriptor.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.SetSecurity(System.Object,System.Object,System.Security.AccessControl.AccessControlSections,System.Byte[])">
            <summary>
            Sets file or directory security descriptor.
            </summary>
            <param name="FileNode">
            The file node of the file or directory to set the security descriptor for.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to set the security descriptor for.
            </param>
            <param name="Sections">
            Describes what parts of the file or directory security descriptor should be modified.
            </param>
            <param name="SecurityDescriptor">
            Describes the modifications to apply to the file or directory security descriptor.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
            <seealso cref="M:Fsp.FileSystemBase.ModifySecurityDescriptorEx(System.Byte[],System.Security.AccessControl.AccessControlSections,System.Byte[],System.Byte[]@)"/>
        </member>
        <member name="M:Fsp.FileSystemBase.ReadDirectory(System.Object,System.Object,System.String,System.String,System.IntPtr,System.UInt32,System.UInt32@)">
            <summary>
            Reads a directory.
            </summary>
            <seealso cref="M:Fsp.FileSystemBase.ReadDirectoryEntry(System.Object,System.Object,System.String,System.String,System.Object@,System.String@,Fsp.Interop.FileInfo@)"/>
        </member>
        <member name="M:Fsp.FileSystemBase.ReadDirectoryEntry(System.Object,System.Object,System.String,System.String,System.Object@,System.String@,Fsp.Interop.FileInfo@)">
            <summary>
            Reads a directory entry.
            </summary>
            <param name="FileNode">
            The file node of the directory to be read.
            </param>
            <param name="FileDesc">
            The file descriptor of the directory to be read.
            </param>
            <param name="Pattern">
            The pattern to match against files in this directory. Can be null. The file system
            can choose to ignore this parameter as the FSD will always perform its own pattern
            matching on the returned results.
            </param>
            <param name="Marker">
            A file name that marks where in the directory to start reading. Files with names
            that are greater than (not equal to) this marker (in the directory order determined
            by the file system) should be returned. Can be null.
            </param>
            <param name="Context">
            Can be used by the file system to track the ReadDirectory operation.
            </param>
            <param name="FileName">
            Receives the file name for the directory entry.
            </param>
            <param name="FileInfo">
            Receives the file information for the directory entry.
            </param>
            <returns>True if there are additional directory entries to return. False otherwise.</returns>
            <seealso cref="M:Fsp.FileSystemBase.ReadDirectory(System.Object,System.Object,System.String,System.String,System.IntPtr,System.UInt32,System.UInt32@)"/>
        </member>
        <member name="M:Fsp.FileSystemBase.ResolveReparsePoints(System.String,System.UInt32,System.Boolean,Fsp.Interop.IoStatusBlock@,System.IntPtr,System.IntPtr)">
            <summary>
            Resolves reparse points.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemBase.GetReparsePointByName(System.String,System.Boolean,System.Byte[]@)">
            <summary>
            Gets a reparse point given a file name.
            </summary>
            <param name="FileName">
            The name of the file or directory to get the reparse point for.
            </param>
            <param name="IsDirectory">
            Determines whether the passed file name is assumed to be a directory.
            </param>
            <param name="ReparseData">
            Receives the reparse data for the file or directory.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.GetReparsePoint(System.Object,System.Object,System.String,System.Byte[]@)">
            <summary>
            Gets a reparse point.
            </summary>
            <param name="FileNode">
            The file node of the reparse point.
            </param>
            <param name="FileDesc">
            The file descriptor of the reparse point.
            </param>
            <param name="FileName">
            The file name of the reparse point.
            </param>
            <param name="ReparseData">
            Receives the reparse data for the reparse point.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.SetReparsePoint(System.Object,System.Object,System.String,System.Byte[])">
            <summary>
            Sets a reparse point.
            </summary>
            <param name="FileNode">
            The file node of the reparse point.
            </param>
            <param name="FileDesc">
            The file descriptor of the reparse point.
            </param>
            <param name="FileName">
            The file name of the reparse point.
            </param>
            <param name="ReparseData">
            The new reparse data for the reparse point.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.DeleteReparsePoint(System.Object,System.Object,System.String,System.Byte[])">
            <summary>
            Deletes a reparse point.
            </summary>
            <param name="FileNode">
            The file node of the reparse point.
            </param>
            <param name="FileDesc">
            The file descriptor of the reparse point.
            </param>
            <param name="FileName">
            The file name of the reparse point.
            </param>
            <param name="ReparseData">
            The reparse data for the reparse point.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.GetStreamInfo(System.Object,System.Object,System.IntPtr,System.UInt32,System.UInt32@)">
            <summary>
            Gets named streams information.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemBase.GetStreamEntry(System.Object,System.Object,System.Object@,System.String@,System.UInt64@,System.UInt64@)">
            <summary>
            Gets named streams information entry.
            </summary>
            <param name="FileNode">
            The file node of the file or directory to get stream information for.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to get stream information for.
            </param>
            <param name="Context">
            Can be used by the file system to track the GetStreamInfo operation.
            </param>
            <param name="StreamName">
            Receives the stream name for the stream entry.
            </param>
            <param name="StreamSize">
            Receives the stream size for the stream entry.
            </param>
            <param name="StreamAllocationSize">
            Receives the stream allocation size for the stream entry.
            </param>
            <returns>True if there are additional stream entries to return. False otherwise.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.GetDirInfoByName(System.Object,System.Object,System.String,System.String@,Fsp.Interop.FileInfo@)">
            <summary>
            Gets directory information for a single file or directory within a parent directory.
            </summary>
            <param name="FileNode">
            The file node of the parent directory.
            </param>
            <param name="FileDesc">
            The file descriptor of the parent directory.
            </param>
            <param name="FileName">
            The name of the file or directory to get information for. This name is relative
            to the parent directory and is a single path component.
            </param>
            <param name="NormalizedName">
            Receives the normalized name from the directory entry.
            </param>
            <param name="FileInfo">
            Receives the file information.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.Control(System.Object,System.Object,System.UInt32,System.IntPtr,System.UInt32,System.IntPtr,System.UInt32,System.UInt32@)">
            <summary>
            Processes a control code.
            </summary>
            <remarks>
            This function is called when a program uses the DeviceIoControl API.
            </remarks>
            <param name="FileNode">
            The file node of the file or directory to be controled.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to be controled.
            </param>
            <param name="ControlCode">
            The control code for the operation. This code must have a DeviceType with bit
            0x8000 set and must have a TransferType of METHOD_BUFFERED.
            </param>
            <param name="InputBuffer">
            Pointer to a buffer that contains the input data.
            </param>
            <param name="InputBufferLength">
            Input data length.
            </param>
            <param name="OutputBuffer">
             Pointer to a buffer that will receive the output data.
            </param>
            <param name="OutputBufferLength">
            Output data length.
            </param>
            <param name="BytesTransferred">
            Receives the actual number of bytes transferred.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.SetDelete(System.Object,System.Object,System.String,System.Boolean)">
            <summary>
            Sets the file delete flag.
            </summary>
            <remarks>
            <para>
            This function sets a flag to indicates whether the FSD file should delete a file
            when it is closed. This function does not need to perform access checks, but may
            performs tasks such as check for empty directories, etc.
            </para><para>
            This function should <b>NEVER</b> delete the file or directory in question. Deletion should
            happen during Cleanup with the CleanupDelete flag set.
            </para><para>
            This function gets called when Win32 API's such as DeleteFile or RemoveDirectory are used.
            It does not get called when a file or directory is opened with FILE_DELETE_ON_CLOSE.
            </para><para>
            NOTE: If both CanDelete and SetDelete are defined, SetDelete takes precedence. However
            most file systems need only implement the CanDelete operation.
            </para>
            </remarks>
            <param name="FileNode">
            The file node of the file or directory to set the delete flag for.
            </param>
            <param name="FileDesc">
            The file descriptor of the file or directory to set the delete flag for.
            </param>
            <param name="FileName">
            The name of the file or directory to set the delete flag for.
            </param>
            <param name="DeleteFile">
            If set to TRUE the FSD indicates that the file will be deleted on Cleanup; otherwise
            it will not be deleted. It is legal to receive multiple SetDelete calls for the same
            file with different DeleteFile parameters.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
            <seealso cref="M:Fsp.FileSystemBase.Cleanup(System.Object,System.Object,System.String,System.UInt32)"/>
            <seealso cref="M:Fsp.FileSystemBase.CanDelete(System.Object,System.Object,System.String)"/>
        </member>
        <member name="M:Fsp.FileSystemBase.DispatcherStopped(System.Boolean)">
            <summary>
            Inform the file system that its dispatcher has been stopped.
            </summary>
            <remarks>
            <para>
            Prior to WinFsp v2.0 the FSD would never unmount a file system volume unless
            the user mode file system requested the unmount. Since WinFsp v2.0 it is possible
            for the FSD to unmount a file system volume without an explicit user mode file system
            request. For example, this happens when the FSD is being uninstalled.
            </para><para>
            A user mode file system can use this operation to determine when its dispatcher
            has been stopped. The Normally parameter can be used to determine why the dispatcher
            was stopped: it is TRUE when the file system is being stopped normally (i.e. via the
            native FspFileSystemStopDispatcher) and FALSE otherwise.
            </para><para>
            A file system that uses the Service class infrastructure may use the
            StopServiceIfNecessary method to correctly handle all cases. The base implementation
            of this method calls the StopServiceIfNecessary method.
            </para><para>
            This operation is the last one that a file system will receive.
            </para>
            </remarks>
            <param name="Normally">
            TRUE if the file system is being stopped via the native FspFileSystemStopDispatcher.
            FALSE if the file system is being stopped because of another reason such
            as driver unload/uninstall.
            </param>
            <seealso cref="M:Fsp.FileSystemBase.StopServiceIfNecessary(System.Boolean)"/>
        </member>
        <member name="M:Fsp.FileSystemBase.NtStatusFromWin32(System.UInt32)">
            <summary>
            Converts a Win32 error code to a Windows kernel status code.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemBase.Win32FromNtStatus(System.Int32)">
            <summary>
            Converts a Windows kernel status code to a Win32 error code.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemBase.GetOperationProcessId">
            <summary>
            Gets the originating process ID.
            </summary>
            <remarks>
            Valid only during Create, Open and Rename requests when the target exists.
            </remarks>
        </member>
        <member name="M:Fsp.FileSystemBase.ModifySecurityDescriptor(System.Byte[],System.Security.AccessControl.AccessControlSections,System.Byte[])">
            <summary>
            Modifies a security descriptor. [OBSOLETE]
            </summary>
            <remarks>
            This is a helper for implementing the SetSecurity operation.
            </remarks>
            <param name="SecurityDescriptor">
            The original security descriptor.
            </param>
            <param name="Sections">
            Describes what parts of the file or directory security descriptor should be modified.
            </param>
            <param name="ModificationDescriptor">
            Describes the modifications to apply to the file or directory security descriptor.
            </param>
            <returns>The modified security descriptor.</returns>
            <seealso cref="M:Fsp.FileSystemBase.SetSecurity(System.Object,System.Object,System.Security.AccessControl.AccessControlSections,System.Byte[])"/>
        </member>
        <member name="M:Fsp.FileSystemBase.ModifySecurityDescriptorEx(System.Byte[],System.Security.AccessControl.AccessControlSections,System.Byte[],System.Byte[]@)">
            <summary>
            Modifies a security descriptor.
            </summary>
            <remarks>
            This is a helper for implementing the SetSecurity operation.
            </remarks>
            <param name="SecurityDescriptor">
            The original security descriptor.
            </param>
            <param name="Sections">
            Describes what parts of the file or directory security descriptor should be modified.
            </param>
            <param name="ModificationDescriptor">
            Describes the modifications to apply to the file or directory security descriptor.
            </param>
            <param name="ModifiedDescriptor">
            The modified security descriptor. This parameter is modified only on success.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
            <seealso cref="M:Fsp.FileSystemBase.SetSecurity(System.Object,System.Object,System.Security.AccessControl.AccessControlSections,System.Byte[])"/>
        </member>
        <member name="M:Fsp.FileSystemBase.FindReparsePoint(System.String,System.UInt32@)">
            <summary>
            Finds a reparse point in file name.
            </summary>
            <remarks>
            This is a helper for implementing the GetSecurityByName operation in file systems
            that support reparse points.
            </remarks>
            <param name="FileName">
            The name of the file or directory.
            </param>
            <param name="ReparsePointIndex">
            Receives the index of the first reparse point within FileName.
            </param>
            <returns>True if a reparse point was found, false otherwise.</returns>
            <seealso cref="M:Fsp.FileSystemBase.GetSecurityByName(System.String,System.UInt32@,System.Byte[]@)"/>
        </member>
        <member name="M:Fsp.FileSystemBase.MakeReparsePoint(System.IntPtr,System.UInt32)">
            <summary>
            Makes a byte array that contains a reparse point.
            </summary>
            <returns>The reparse point byte array.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.GetReparseTag(System.Byte[])">
            <summary>
            Gets the reparse tag from reparse data.
            </summary>
            <param name="ReparseData">
            The reparse data to extract the reparse tag from.
            </param>
            <returns>The reparse tag.</returns>
        </member>
        <member name="M:Fsp.FileSystemBase.CanReplaceReparsePoint(System.Byte[],System.Byte[])">
            <summary>
            Tests whether reparse data can be replaced.
            </summary>
            <remarks>
            This is a helper for implementing the SetReparsePoint/DeleteReparsePoint operation
            in file systems that support reparse points.
            </remarks>
            <param name="CurrentReparseData">
            The current reparse data.
            </param>
            <param name="ReplaceReparseData">
            The replacement reparse data.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
            <seealso cref="M:Fsp.FileSystemBase.SetReparsePoint(System.Object,System.Object,System.String,System.Byte[])"/>
            <seealso cref="M:Fsp.FileSystemBase.DeleteReparsePoint(System.Object,System.Object,System.String,System.Byte[])"/>
        </member>
        <member name="T:Fsp.FileSystemHost">
            <summary>
            Provides a means to host (mount) a file system.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemHost.#ctor(Fsp.FileSystemBase)">
            <summary>
            Creates an instance of the FileSystemHost class.
            </summary>
            <param name="FileSystem">The file system to host.</param>
        </member>
        <member name="M:Fsp.FileSystemHost.Dispose">
            <summary>
            Unmounts the file system and releases all associated resources.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.SectorSize">
            <summary>
            Gets or sets the sector size used by the file system.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.SectorsPerAllocationUnit">
            <summary>
            Gets or sets the sectors per allocation unit used by the file system.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.MaxComponentLength">
            <summary>
            Gets or sets the maximum path component length used by the file system.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.VolumeCreationTime">
            <summary>
            Gets or sets the volume creation time.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.VolumeSerialNumber">
            <summary>
            Gets or sets the volume serial number.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.FileInfoTimeout">
            <summary>
            Gets or sets the file information timeout.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.VolumeInfoTimeout">
            <summary>
            Gets or sets the volume information timeout.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.DirInfoTimeout">
            <summary>
            Gets or sets the directory information timeout.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.SecurityTimeout">
            <summary>
            Gets or sets the security information timeout.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.StreamInfoTimeout">
            <summary>
            Gets or sets the stream information timeout.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.EaTimeout">
            <summary>
            Gets or sets the EA information timeout.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.CaseSensitiveSearch">
            <summary>
            Gets or sets a value that determines whether the file system is case sensitive.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.CasePreservedNames">
            <summary>
            Gets or sets a value that determines whether a case insensitive file system
            preserves case in file names.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.UnicodeOnDisk">
            <summary>
            Gets or sets a value that determines whether file names support unicode characters.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.PersistentAcls">
            <summary>
            Gets or sets a value that determines whether the file system supports ACL security.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.ReparsePoints">
            <summary>
            Gets or sets a value that determines whether the file system supports reparse points.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.ReparsePointsAccessCheck">
            <summary>
            Gets or sets a value that determines whether the file system allows creation of
            symbolic links without additional privileges.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.NamedStreams">
            <summary>
            Gets or sets a value that determines whether the file system supports named streams.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.ExtendedAttributes">
            <summary>
            Gets or sets a value that determines whether the file system supports extended attributes.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.Prefix">
            <summary>
            Gets or sets the prefix for a network file system.
            </summary>
        </member>
        <member name="P:Fsp.FileSystemHost.FileSystemName">
            <summary>
            Gets or sets the file system name.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemHost.Preflight(System.String)">
            <summary>
            Checks whether mounting a file system is possible.
            </summary>
            <param name="MountPoint">
            The mount point for the new file system. A value of null means that
            the file system should use the next available drive letter counting
            downwards from Z: as its mount point.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemHost.Mount(System.String,System.Byte[],System.Boolean,System.UInt32)">
            <summary>
            Mounts a file system.
            </summary>
            <param name="MountPoint">
            The mount point for the new file system. A value of null means that
            the file system should use the next available drive letter counting
            downwards from Z: as its mount point.
            </param>
            <param name="SecurityDescriptor">
            Security descriptor to use if mounting on (newly created) directory.
            A value of null means the directory should be created with default
            security.
            </param>
            <param name="Synchronized">
            If true file system operations are synchronized using an exclusive lock.
            </param>
            <param name="DebugLog">
            A value of 0 disables all debug logging.
            A value of -1 enables all debug logging.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemHost.MountEx(System.String,System.UInt32,System.Byte[],System.Boolean,System.UInt32)">
            <summary>
            Mounts a file system.
            </summary>
            <param name="MountPoint">
            The mount point for the new file system. A value of null means that
            the file system should use the next available drive letter counting
            downwards from Z: as its mount point.
            </param>
            <param name="ThreadCount">
            Number of threads to use to service file system requests. A value
            of 0 means that the default number of threads should be used.
            </param>
            <param name="SecurityDescriptor">
            Security descriptor to use if mounting on (newly created) directory.
            A value of null means the directory should be created with default
            security.
            </param>
            <param name="Synchronized">
            If true file system operations are synchronized using an exclusive lock.
            </param>
            <param name="DebugLog">
            A value of 0 disables all debug logging.
            A value of -1 enables all debug logging.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemHost.Unmount">
            <summary>
            Unmounts the file system and releases all associated resources.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemHost.MountPoint">
            <summary>
            Gets the file system mount point.
            </summary>
            <returns>The file system mount point.</returns>
        </member>
        <member name="M:Fsp.FileSystemHost.FileSystem">
            <summary>
            Gets the hosted file system.
            </summary>
            <returns>The hosted file system.</returns>
        </member>
        <member name="M:Fsp.FileSystemHost.SetDebugLogFile(System.String)">
            <summary>
            Sets the debug log file to use when debug logging is enabled.
            </summary>
            <param name="FileName">
            The debug log file name. A value of "-" means standard error output.
            </param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemHost.Version">
            <summary>
            Return the installed version of WinFsp.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemHost.GetOperationRequestHint">
            <summary>
            Returns a RequestHint to reference the current operation asynchronously.
            </summary>
        </member>
        <member name="M:Fsp.FileSystemHost.SendReadResponse(System.UInt64,System.Int32,System.UInt32)">
            <summary>
            Asynchronously complete a Read operation.
            </summary>
            <param name="RequestHint">
            A reference to the operation to complete.
            </param>
            <param name="Status">
            STATUS_SUCCESS or error code.
            </param>
            <param name="BytesTransferred">
            Number of bytes read.
            </param>
        </member>
        <member name="M:Fsp.FileSystemHost.SendWriteResponse(System.UInt64,System.Int32,System.UInt32,Fsp.Interop.FileInfo@)">
            <summary>
            Asynchronously complete a Write operation.
            </summary>
            <param name="RequestHint">
            A reference to the operation to complete.
            </param>
            <param name="Status">
            STATUS_SUCCESS or error code.
            </param>
            <param name="BytesTransferred">
            The number of bytes written.
            </param>
            <param name="FileInfo">
            Updated file information.
            </param>
        </member>
        <member name="M:Fsp.FileSystemHost.SendReadDirectoryResponse(System.UInt64,System.Int32,System.UInt32)">
            <summary>
            Asynchronously complete a ReadDirectory operation.
            </summary>
            <param name="RequestHint">
            A reference to the operation to complete.
            </param>
            <param name="Status">
            STATUS_SUCCESS or error code.
            </param>
            <param name="BytesTransferred">
            Number of bytes read.
            </param>
        </member>
        <member name="M:Fsp.FileSystemHost.NotifyBegin(System.UInt32)">
            <summary>
            Begin notifying Windows that the file system has file changes.
            </summary>
            <remarks>
            <para>
            A file system that wishes to notify Windows about file changes must
            first issue an FspFileSystemBegin call, followed by 0 or more
            FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call.
            </para><para>
            This operation blocks concurrent file rename operations. File rename
            operations may interfere with file notification, because a file being
            notified may also be concurrently renamed. After all file change
            notifications have been issued, you must make sure to call
            FspFileSystemNotifyEnd to allow file rename operations to proceed.
            </para>
            </remarks>
            <returns>
            STATUS_SUCCESS or error code. The error code STATUS_CANT_WAIT means that
            a file rename operation is currently in progress and the operation must be
            retried at a later time.
            </returns>
        </member>
        <member name="M:Fsp.FileSystemHost.NotifyEnd">
            <summary>
            End notifying Windows that the file system has file changes.
            </summary>
            <remarks>
            <para>
            A file system that wishes to notify Windows about file changes must
            first issue an FspFileSystemBegin call, followed by 0 or more
            FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call.
            </para><para>
            This operation allows any blocked file rename operations to proceed.
            </para>
            </remarks>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.FileSystemHost.Notify(Fsp.Interop.NotifyInfo[])">
            <summary>
            Notify Windows that the file system has file changes.
            </summary>
            <remarks>
            <para>
            A file system that wishes to notify Windows about file changes must
            first issue an FspFileSystemBegin call, followed by 0 or more
            FspFileSystemNotify calls, followed by an FspFileSystemNotifyEnd call.
            </para><para>
            Note that FspFileSystemNotify requires file names to be normalized. A
            normalized file name is one that contains the correct case of all characters
            in the file name.
            </para><para>
            For case-sensitive file systems all file names are normalized by definition.
            For case-insensitive file systems that implement file name normalization,
            a normalized file name is the one that the file system specifies in the
            response to Create or Open (see also FspFileSystemGetOpenFileInfo). For
            case-insensitive file systems that do not implement file name normalization
            a normalized file name is the upper case version of the file name used
            to open the file.
            </para>
            </remarks>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="T:Fsp.Interop.VolumeInfo">
            <summary>
            Contains volume information about a file system.
            </summary>
        </member>
        <member name="F:Fsp.Interop.VolumeInfo.TotalSize">
            <summary>
            Total size of volume in bytes.
            </summary>
        </member>
        <member name="F:Fsp.Interop.VolumeInfo.FreeSize">
            <summary>
            Free size of volume in bytes.
            </summary>
        </member>
        <member name="M:Fsp.Interop.VolumeInfo.SetVolumeLabel(System.String)">
            <summary>
            Sets the volume label.
            </summary>
        </member>
        <member name="T:Fsp.Interop.FileInfo">
            <summary>
            Contains metadata information about a file or directory.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.FileAttributes">
            <summary>
            The file or directory attributes.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.ReparseTag">
            <summary>
            The reparse tag of the file or directory.
            This value is 0 if the file or directory is not a reparse point.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.AllocationSize">
            <summary>
            The allocation size of the file.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.FileSize">
            <summary>
            The file size of the file (end of file).
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.CreationTime">
            <summary>
            The time that the file or directory was created.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.LastAccessTime">
            <summary>
            The time that the file or directory was last accessed.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.LastWriteTime">
            <summary>
            The time that the file or direcotry was last modified.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.ChangeTime">
            <summary>
            The time that the file or directory metadata was last modified.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.IndexNumber">
            <summary>
            A unique identifier that is associated with the file or directory.
            Not all file systems support this value.
            </summary>
        </member>
        <member name="F:Fsp.Interop.FileInfo.HardLinks">
            <summary>
            The number of hard links.
            Not currently implemented. Set to 0.
            </summary>
        </member>
        <member name="P:Fsp.Interop.FileInfo.EaSize">
            <summary>
            The extended attribute size of the file.
            </summary>
        </member>
        <member name="T:Fsp.Interop.NotifyAction">
            <summary>
            Enumeration of all the possible values for NotifyInfo.Action
            </summary>
        </member>
        <member name="T:Fsp.Interop.NotifyFilter">
            <summary>
            Enumeration of all the possible values for NotifyInfo.Filter
            </summary>
        </member>
        <member name="T:Fsp.Interop.NotifyInfo">
            <summary>
            Contains file change notification information.
            </summary>
        </member>
        <member name="T:Fsp.Service">
            <summary>
            Provides the base class for a process that can be run as a service,
            command line application or under the control of the WinFsp launcher.
            </summary>
        </member>
        <member name="M:Fsp.Service.#ctor(System.String)">
            <summary>
            Creates an instance of the Service class.
            </summary>
            <param name="ServiceName">The name of the service.</param>
        </member>
        <member name="M:Fsp.Service.Run">
            <summary>
            Runs a service.
            </summary>
            <returns>Service process exit code.</returns>
        </member>
        <member name="M:Fsp.Service.Stop">
            <summary>
            Stops a running service.
            </summary>
        </member>
        <member name="P:Fsp.Service.ExitCode">
            <summary>
            Gets or sets the service process exit code.
            </summary>
        </member>
        <member name="M:Fsp.Service.ExceptionHandler(System.Exception)">
            <summary>
            Provides a means to customize the returned status code when an exception happens.
            </summary>
            <param name="ex"></param>
            <returns>STATUS_SUCCESS or error code.</returns>
        </member>
        <member name="M:Fsp.Service.OnStart(System.String[])">
            <summary>
            Occurs when the service starts.
            </summary>
            <param name="Args">Command line arguments passed to the service.</param>
        </member>
        <member name="M:Fsp.Service.OnStop">
            <summary>
            Occurs when the service stops.
            </summary>
        </member>
    </members>
</doc>
