Вы можете использовать вызовы win32 так же, как это делают файловые потоки / конструкторы файлов (через p / invoke).
Взломать его в .NET Reflector , похоже, что он использует эту функцию:
[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
private static extern SafeFileHandle CreateFile(
string lpFileName,
int dwDesiredAccess,
FileShare dwShareMode,
SECURITY_ATTRIBUTES securityAttrs,
FileMode dwCreationDisposition,
int dwFlagsAndAttributes,
IntPtr hTemplateFile);
Вот официальная ссылка:
http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
Это просто для открытия файла, как вы спросили, когда сказали:
Как открыть файл с помощью простого дескриптора файла в C ++
Если вы хотите прочитать уже открытый файл, у вас могут возникнуть дополнительные проблемы. Я не уверен. Вы могли бы использовать эту функцию:
[DllImport("kernel32.dll", SetLastError=true)]
internal static extern unsafe int ReadFile(
SafeFileHandle handle,
byte* bytes,
int numBytesToRead,
IntPtr numBytesRead_mustBeZero,
NativeOverlapped* overlapped
);
http://msdn.microsoft.com/en-us/library/aa365467(v=VS.85).aspx