Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.009 c
1-85907
Шишкин Илья
2002-12-16 20:20
2002.12.26
StringGrid


3-85879
_toltec
2002-12-08 18:40
2002.12.26
Blob поля в FireBird


8-86040
Dad Evil
2002-09-09 14:17
2002.12.26
обрезка TBitmap


3-85783
Андрусь
2002-12-03 20:37
2002.12.26
как оптимально обработать разделенный запрос


14-86137
msts
2002-12-06 10:33
2002.12.26
Парсер PAS/DPR/DPK+-DFM




   Наверх