Текущий архив: 2002.12.26;
Скачать: CL | DM;
ВнизОшибка при удалении File Mapping Найти похожие ветки
← →
N (2002-11-10 16:57) [0]Здравствуйте.
Открываю файл, создаю два FileMapping, тут же особождаю их, в результате, при попытке закрыть файл, возникает ошибка "Неверный дескриптор", и файл остается занятым до следующей перезагрузки. Если содать только один FileMapping, то все нормально. Ни размер, мэппинга, ни изменение имени объекта не влияют на ситуацию. :(
Спасибо заранее.
procedure TForm1.Button1Click(Sender: TObject);
var
MyFile, FileMap1, FileMap2: THandle;
function CreateMapping: THandle;
begin
Result := CreateFileMapping(
MyFile, // handle to file to map
nil, // optional security attributes
PAGE_READWRITE, // protection for mapping object
0, // high-order 32 bits of object size
1024, // low-order 32 bits of object size
nil); // name of file-mapping object
end;
begin
MyFile := CreateFile(
"Test.bin", // file name
GENERIC_READ or GENERIC_WRITE, // access mode
0, // share mode
nil, // SD
OPEN_ALWAYS, // how to create
FILE_ATTRIBUTE_NORMAL or FILE_FLAG_RANDOM_ACCESS, // file attributes
0); // handle to template file
FileMap1 := CreateMapping;
ShowMessage(SysErrorMessage(GetLastError));
FileMap2 := CreateMapping;
ShowMessage(SysErrorMessage(GetLastError));
CloseHandle(FileMap1);
ShowMessage(SysErrorMessage(GetLastError));
CloseHandle(FileMap2);
ShowMessage(SysErrorMessage(GetLastError));
CloseHandle(MyFile);
ShowMessage(SysErrorMessage(GetLastError));
end;
← →
Cobalt (2002-11-11 19:27) [1]Дело в том, что у вас FileMap1 и FileMap2, скорее всего - одинаковые, ведь эти файлы - одно и тоже, и для одного АП у них должен быть один и тот же Handle. Если же вам надо обращаться к одному файлу через несколько "ручек", то смотрите ф-ию
DuplicateHandle
P.S. кстати, после какого закрытия выдаются ошибки?
Страницы: 1 вся ветка
Текущий архив: 2002.12.26;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.006 c