src: dotnet: WIP

This commit is contained in:
Bill Zissimopoulos 2017-04-03 12:06:45 -07:00
parent 1980f511ce
commit 27114184d2
2 changed files with 58 additions and 40 deletions

View File

@ -270,9 +270,10 @@ namespace Fsp
UInt32 FileAttributes, UInt32 FileAttributes,
IntPtr SecurityDescriptor, IntPtr SecurityDescriptor,
UInt64 AllocationSize, UInt64 AllocationSize,
IntPtr PFileContext, out FullContext FullContext,
out FileInfo FileInfo) out FileInfo FileInfo)
{ {
FullContext = default(FullContext);
FileInfo = default(FileInfo); FileInfo = default(FileInfo);
return STATUS_INVALID_DEVICE_REQUEST; return STATUS_INVALID_DEVICE_REQUEST;
} }
@ -281,15 +282,16 @@ namespace Fsp
String FileName, String FileName,
UInt32 CreateOptions, UInt32 CreateOptions,
UInt32 GrantedAccess, UInt32 GrantedAccess,
IntPtr PFileContext, out FullContext FullContext,
out FileInfo FileInfo) out FileInfo FileInfo)
{ {
FullContext = default(FullContext);
FileInfo = default(FileInfo); FileInfo = default(FileInfo);
return STATUS_INVALID_DEVICE_REQUEST; return STATUS_INVALID_DEVICE_REQUEST;
} }
private static Int32 Overwrite( private static Int32 Overwrite(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
UInt32 FileAttributes, UInt32 FileAttributes,
Boolean ReplaceFileAttributes, Boolean ReplaceFileAttributes,
UInt64 AllocationSize, UInt64 AllocationSize,
@ -300,19 +302,19 @@ namespace Fsp
} }
private static void Cleanup( private static void Cleanup(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
String FileName, String FileName,
UInt32 Flags) UInt32 Flags)
{ {
} }
private static void Close( private static void Close(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext) ref FullContext FullContext)
{ {
} }
private static Int32 Read( private static Int32 Read(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
IntPtr Buffer, IntPtr Buffer,
UInt64 Offset, UInt64 Offset,
UInt32 Length, UInt32 Length,
@ -323,7 +325,7 @@ namespace Fsp
} }
private static Int32 Write( private static Int32 Write(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
IntPtr Buffer, IntPtr Buffer,
UInt64 Offset, UInt64 Offset,
UInt32 Length, UInt32 Length,
@ -338,7 +340,7 @@ namespace Fsp
} }
private static Int32 Flush( private static Int32 Flush(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
out FileInfo FileInfo) out FileInfo FileInfo)
{ {
FileInfo = default(FileInfo); FileInfo = default(FileInfo);
@ -346,7 +348,7 @@ namespace Fsp
} }
private static Int32 GetFileInfo( private static Int32 GetFileInfo(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
out FileInfo FileInfo) out FileInfo FileInfo)
{ {
FileInfo = default(FileInfo); FileInfo = default(FileInfo);
@ -354,7 +356,7 @@ namespace Fsp
} }
private static Int32 SetBasicInfo( private static Int32 SetBasicInfo(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
UInt32 FileAttributes, UInt32 FileAttributes,
UInt64 CreationTime, UInt64 CreationTime,
UInt64 LastAccessTime, UInt64 LastAccessTime,
@ -367,7 +369,7 @@ namespace Fsp
} }
private static Int32 SetFileSize( private static Int32 SetFileSize(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
UInt64 NewSize, UInt64 NewSize,
Boolean SetAllocationSize, Boolean SetAllocationSize,
out FileInfo FileInfo) out FileInfo FileInfo)
@ -377,14 +379,14 @@ namespace Fsp
} }
private static Int32 CanDelete( private static Int32 CanDelete(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
String FileName) String FileName)
{ {
return STATUS_INVALID_DEVICE_REQUEST; return STATUS_INVALID_DEVICE_REQUEST;
} }
private static Int32 Rename( private static Int32 Rename(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
String FileName, String FileName,
String NewFileName, String NewFileName,
Boolean ReplaceIfExists) Boolean ReplaceIfExists)
@ -393,7 +395,7 @@ namespace Fsp
} }
private static Int32 GetSecurity( private static Int32 GetSecurity(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
IntPtr SecurityDescriptor, IntPtr SecurityDescriptor,
IntPtr PSecurityDescriptorSize) IntPtr PSecurityDescriptorSize)
{ {
@ -401,7 +403,7 @@ namespace Fsp
} }
private static Int32 SetSecurity( private static Int32 SetSecurity(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
UInt32 SecurityInformation, UInt32 SecurityInformation,
IntPtr ModificationDescriptor) IntPtr ModificationDescriptor)
{ {
@ -409,7 +411,7 @@ namespace Fsp
} }
private static Int32 ReadDirectory( private static Int32 ReadDirectory(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
String Pattern, String Pattern,
String Marker, String Marker,
IntPtr Buffer, IntPtr Buffer,
@ -434,7 +436,7 @@ namespace Fsp
} }
private static Int32 GetReparsePoint( private static Int32 GetReparsePoint(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
String FileName, String FileName,
IntPtr Buffer, IntPtr Buffer,
out UIntPtr PSize) out UIntPtr PSize)
@ -444,7 +446,7 @@ namespace Fsp
} }
private static Int32 SetReparsePoint( private static Int32 SetReparsePoint(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
String FileName, String FileName,
IntPtr Buffer, IntPtr Buffer,
UIntPtr Size) UIntPtr Size)
@ -453,7 +455,7 @@ namespace Fsp
} }
private static Int32 DeleteReparsePoint( private static Int32 DeleteReparsePoint(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
String FileName, String FileName,
IntPtr Buffer, IntPtr Buffer,
UIntPtr Size) UIntPtr Size)
@ -462,7 +464,7 @@ namespace Fsp
} }
private static Int32 GetStreamInfo( private static Int32 GetStreamInfo(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
IntPtr Buffer, IntPtr Buffer,
UInt32 Length, UInt32 Length,
out UInt32 PBytesTransferred) out UInt32 PBytesTransferred)

View File

@ -149,6 +149,22 @@ namespace Fsp.Interop
//internal unsafe fixed UInt16 FileNameBuf[]; //internal unsafe fixed UInt16 FileNameBuf[];
} }
[StructLayout(LayoutKind.Sequential)]
struct StreamInfo
{
internal UInt16 Size;
internal UInt64 StreamSize;
internal UInt64 StreamAllocationSize;
//internal unsafe fixed UInt16 StreamNameBuf[];
}
[StructLayout(LayoutKind.Sequential)]
struct FullContext
{
internal UInt64 UserContext;
internal UInt64 UserContext2;
}
[StructLayout(LayoutKind.Sequential)] [StructLayout(LayoutKind.Sequential)]
internal struct IoStatusBlock internal struct IoStatusBlock
{ {
@ -186,7 +202,7 @@ namespace Fsp.Interop
UInt32 FileAttributes, UInt32 FileAttributes,
IntPtr SecurityDescriptor, IntPtr SecurityDescriptor,
UInt64 AllocationSize, UInt64 AllocationSize,
IntPtr PFileContext, out FullContext FullContext,
out FileInfo FileInfo); out FileInfo FileInfo);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 Open( internal delegate Int32 Open(
@ -194,12 +210,12 @@ namespace Fsp.Interop
[MarshalAs(UnmanagedType.LPWStr)] String FileName, [MarshalAs(UnmanagedType.LPWStr)] String FileName,
UInt32 CreateOptions, UInt32 CreateOptions,
UInt32 GrantedAccess, UInt32 GrantedAccess,
IntPtr PFileContext, out FullContext FullContext,
out FileInfo FileInfo); out FileInfo FileInfo);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 Overwrite( internal delegate Int32 Overwrite(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
UInt32 FileAttributes, UInt32 FileAttributes,
Boolean ReplaceFileAttributes, Boolean ReplaceFileAttributes,
UInt64 AllocationSize, UInt64 AllocationSize,
@ -207,17 +223,17 @@ namespace Fsp.Interop
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void Cleanup( internal delegate void Cleanup(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
[MarshalAs(UnmanagedType.LPWStr)] String FileName, [MarshalAs(UnmanagedType.LPWStr)] String FileName,
UInt32 Flags); UInt32 Flags);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void Close( internal delegate void Close(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext); ref FullContext FullContext);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 Read( internal delegate Int32 Read(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
IntPtr Buffer, IntPtr Buffer,
UInt64 Offset, UInt64 Offset,
UInt32 Length, UInt32 Length,
@ -225,7 +241,7 @@ namespace Fsp.Interop
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 Write( internal delegate Int32 Write(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
IntPtr Buffer, IntPtr Buffer,
UInt64 Offset, UInt64 Offset,
UInt32 Length, UInt32 Length,
@ -236,17 +252,17 @@ namespace Fsp.Interop
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 Flush( internal delegate Int32 Flush(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
out FileInfo FileInfo); out FileInfo FileInfo);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 GetFileInfo( internal delegate Int32 GetFileInfo(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
out FileInfo FileInfo); out FileInfo FileInfo);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 SetBasicInfo( internal delegate Int32 SetBasicInfo(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
UInt32 FileAttributes, UInt32 FileAttributes,
UInt64 CreationTime, UInt64 CreationTime,
UInt64 LastAccessTime, UInt64 LastAccessTime,
@ -256,38 +272,38 @@ namespace Fsp.Interop
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 SetFileSize( internal delegate Int32 SetFileSize(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
UInt64 NewSize, UInt64 NewSize,
Boolean SetAllocationSize, Boolean SetAllocationSize,
out FileInfo FileInfo); out FileInfo FileInfo);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 CanDelete( internal delegate Int32 CanDelete(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
[MarshalAs(UnmanagedType.LPWStr)] String FileName); [MarshalAs(UnmanagedType.LPWStr)] String FileName);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 Rename( internal delegate Int32 Rename(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
[MarshalAs(UnmanagedType.LPWStr)] String FileName, [MarshalAs(UnmanagedType.LPWStr)] String FileName,
[MarshalAs(UnmanagedType.LPWStr)] String NewFileName, [MarshalAs(UnmanagedType.LPWStr)] String NewFileName,
Boolean ReplaceIfExists); Boolean ReplaceIfExists);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 GetSecurity( internal delegate Int32 GetSecurity(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
IntPtr SecurityDescriptor, IntPtr SecurityDescriptor,
IntPtr PSecurityDescriptorSize); IntPtr PSecurityDescriptorSize);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 SetSecurity( internal delegate Int32 SetSecurity(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
UInt32 SecurityInformation, UInt32 SecurityInformation,
IntPtr ModificationDescriptor); IntPtr ModificationDescriptor);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 ReadDirectory( internal delegate Int32 ReadDirectory(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
[MarshalAs(UnmanagedType.LPWStr)] String Pattern, [MarshalAs(UnmanagedType.LPWStr)] String Pattern,
[MarshalAs(UnmanagedType.LPWStr)] String Marker, [MarshalAs(UnmanagedType.LPWStr)] String Marker,
IntPtr Buffer, IntPtr Buffer,
@ -305,28 +321,28 @@ namespace Fsp.Interop
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 GetReparsePoint( internal delegate Int32 GetReparsePoint(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
[MarshalAs(UnmanagedType.LPWStr)] String FileName, [MarshalAs(UnmanagedType.LPWStr)] String FileName,
IntPtr Buffer, IntPtr Buffer,
out UIntPtr PSize); out UIntPtr PSize);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 SetReparsePoint( internal delegate Int32 SetReparsePoint(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
[MarshalAs(UnmanagedType.LPWStr)] String FileName, [MarshalAs(UnmanagedType.LPWStr)] String FileName,
IntPtr Buffer, IntPtr Buffer,
UIntPtr Size); UIntPtr Size);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 DeleteReparsePoint( internal delegate Int32 DeleteReparsePoint(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
[MarshalAs(UnmanagedType.LPWStr)] String FileName, [MarshalAs(UnmanagedType.LPWStr)] String FileName,
IntPtr Buffer, IntPtr Buffer,
UIntPtr Size); UIntPtr Size);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate Int32 GetStreamInfo( internal delegate Int32 GetStreamInfo(
IntPtr FileSystem, IntPtr FileSystem,
IntPtr FileContext, ref FullContext FullContext,
IntPtr Buffer, IntPtr Buffer,
UInt32 Length, UInt32 Length,
out UInt32 PBytesTransferred); out UInt32 PBytesTransferred);