ОБНОВЛЕННЫЙ ВОПРОС
Поскольку ctor не поддерживается .NETCF (общедоступный FileStream (дескриптор IntPtr, доступ к FileAccess). Не могли бы вы предложить другие способы совместного использования большого файла в памяти между управляемым и неуправляемым кодом на платформе с ограниченными ресурсами (ОЗУ). В основном я хочу сопоставьте файл в верхней части пользовательского пространства размером 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 и его ресурсы) находится вне поля зрения сборщика мусора? *
Заранее спасибо.