ОБНОВЛЕННЫЙ ВОПРОС
Поскольку ctor не поддерживается .NETCF (public FileStream (дескриптор IntPtr, доступ к FileAccess). Не могли бы вы предложить другие способы совместного использования большого файла в памяти между управляемым и неуправляемым кодом на платформе с ограниченными ресурсами (RAM). Я хочу отобразить файл в верхней области 2 ГБ пользовательского пространства (Win CE 5.0) за пределами пространства процесса / кучи. Как я могу сделать это в C #.
Кроме того, объекты MemoryStream выделяют пространство в куче или в области отображения памяти в Win CE 5.0?
спасибо ...
ОРИГИНАЛЬНЫЙ ВОПРОС
Я создаю экземпляр объекта FileStream (.NETCF, C #), используя дескриптор файла, возвращенный встроенным CreateFile (), как показано ниже:
//P/Invoke
[DllImport("coredll.dll", SetLastError = true)]
public static extern IntPtr CreateFile(string lpFileName,
uint dwDesiredAccess,
uint dwShareMode,
IntPtr lpSecurityAttributes,
uint dwCreationDisposition,
uint dwFlagsAndAttributes,
IntPtr hTemplateFile);
// File handle received from native Win32 API
IntPtr ptr= CreateFile("myfile.txt",
0,
0,
0,
FileMode.Create,
0,
IntPtr.Zero);
//Instantiate a FileStream object using handle (returned above) as parameter.
FileStream fs = new FileStream(ptr,FileAccess.ReadWrite);
Файл увеличится в размере> 500 КБ или более . Итак, мои вопросы:
* 1) Что-то не так с этим способом, учитывая, что свойства SafeFileHandle / Handle не поддерживаются в версии .NETCF? Есть ли лучший способ сделать это (я планирую использовать собственный дескриптор сопоставленного памяти с FileStream / MemoryStream)?
2) Память, выделенная объектом FileStream, попадает в сборщик мусора .NETCF? Или, учитывая, что дескриптор файла сопоставления памяти, созданного с использованием собственного API, он (управляемый объект FileStream и его ресурсы) находится вне области действия сборщика мусора? *
Заранее спасибо.