Что заставляет WriteFile возвращать ERROR_ACCESS_DENIED?

В настоящее время мы сталкиваемся с проблемой вызова WriteFile (или, скорее, CFile :: Write - но это просто вызывает WriteFile изнутри), вызывая Win32 ошибка 5 ERROR_ACCESS_DENIED .

(РЕДАКТИРОВАТЬ: Обратите внимание, что мы не можем воспроизвести поведение. Все, что у нас есть на данный момент, это файл журнала, указывающий исходную строку, где был CFile :: Write, и содержащий ошибку ERROR_ACCESS_DENIED!)

(РЕДАКТИРОВАТЬ:

  • Дескриптор недействителен или файл вообще не открыт
  • Права доступа или флаг защиты от записи для файла изменяются после файл был открыт процессом. (Если они изменены до открытия файла, то мы никогда не доберемся до WriteFile, потому что открытие файла не удастся.)
  • Файл каким-то образом заблокирован другим процессом / дескриптором (в лучшем случае это приведет к in error 32 ERROR_SHARING_VIOLATION).

Это оставляет нам ситуацию, что, по-видимому, единственная возможность для этого вызова потерпеть неудачу, если файл был фактически открыт с флагом чтения вместо флага записи. Однако, глядя на наш код, это кажется крайне маловероятным. (Благодаря нашему отслеживанию,

7
задан tshepang 6 September 2014 в 04:42
поделиться