WriteFile с помощью DLL - PullRequest
       14

WriteFile с помощью DLL

0 голосов
/ 08 февраля 2010

Я пишу DLL, и я хочу записать некоторые данные в файл (150k +)

Проблема в том, что WriteFile не пишет все, что должно записать

Похоже, что поток завершается до того, как WriteFile завершит свою работу.

есть идеи? спасибо

1 Ответ

3 голосов
/ 08 февраля 2010

Если вы выйдете из процесса до завершения потока, все остальные потоки будут прерваны (с ExitProcess ):

Выход из процесса вызывает следующее:

  1. Все потоки в процессе, кроме вызывающего потока, прекратить их исполнение без получение DLL_THREAD_DETACH уведомление.
  2. Состояния всех потоков, завершенных на шаге 1, становятся сигнальными.
  3. Функции точки входа всех загруженных динамически подключаемых библиотек (DLL) вызываются с помощью DLL_PROCESS_DETACH.
  4. После того, как все подключенные библиотеки DLL выполнили любой код завершения процесса, функция ExitProcess завершается текущий процесс, в том числе вызывающая тема.
  5. Состояние вызывающего потока становится сигнальным.
  6. Все дескрипторы объектов, открытые процессом, закрыты.
  7. Статус завершения процесса изменяется с STILL_ACTIVE на выходное значение процесса.
  8. Состояние объекта процесса становится сигнальным, удовлетворяющим любому темы, которые ждали процесс прекращения.

Вам нужно будет явно дождаться завершения потока, выполняющего WriteFile, обычно через WaitForSingleObject(thread handle, ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...