Проблемы с одновременным доступом к файлу.
2601
2
AnotherBoris
activist
Итак, есть WDM-драйвер, который пишет данные в файл. Одновременно необходимо эти данные из этого же файла вычитывать. Но, как и следовало ожидать, возникают проблемы.
Драйвер писан с использованием SoftICE Driver Suite.
Там файл открывается так:
kfDataFile.OpenCreate(PUNICODE_STRING(strCurrentFileName), NULL,
FILE_WRITE_DATA | FILE_APPEND_DATA,
OBJ_CASE_INSENSITIVE, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ, FILE_OVERWRITE_IF, 0, NULL);
То есть открываем на запись/добавление, шаря при этом файл на чтение.
На пользовательском уровне открываем так:
CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
То есть открываем на чтение, шаря на чтение же.
И, в итоге, имеем ошибку ERROR_SHARING_VIOLATION. ЧЯДНТ?
Драйвер писан с использованием SoftICE Driver Suite.
Там файл открывается так:
kfDataFile.OpenCreate(PUNICODE_STRING(strCurrentFileName), NULL,
FILE_WRITE_DATA | FILE_APPEND_DATA,
OBJ_CASE_INSENSITIVE, FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ, FILE_OVERWRITE_IF, 0, NULL);
То есть открываем на запись/добавление, шаря при этом файл на чтение.
На пользовательском уровне открываем так:
CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
То есть открываем на чтение, шаря на чтение же.
И, в итоге, имеем ошибку ERROR_SHARING_VIOLATION. ЧЯДНТ?
KSergey
guru
CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ,Быть может - выделенное заменить на FILE_SHARE_WRITE, а то и вовсе на оба сразу два.
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
Но это в порядке общего предполжения
AnotherBoris
activist
Спасибо, добрый человекВроде проканало. Сам бы я ещё дня три мог бы тупить