Hi. I have the same issue and sent an email to Easyanticheat. Unfortunately, their response was not helpful in my case but maybe you will have more luck. Hope this helps
The cause to this error is the current Windows installation somehow being in a corrupted state. For some reason a simple file operation that should take less than a second is taking over half a minute and timing out, resulting in the error. As the first step, please use the Windows Update to ensure that your Windows is fully up-to-date. After installing all available Windows updates, verify all system files explicitly by running the following command in command prompt
as Administrator
: sfc /scannow.
If the problem persists after updating Windows, we recommend running an anti-virus scan as it is possible that the system has been infected by a virus. You can use for example the free Malwarebytes anti-rootkit scan to check this.
Lastly, if the error still persists, you may need to use the Windows System Restore function to revert your computer to a previously working state. Unfortunately, after having investigated this extremely rare issue on few end-user PCs, we have not been able to identify the specific cause to what makes the system stall the failing operation for such long time period without no apparent reason.
Код ошибки 0x80004005 что это такое и как это исправить
Код ошибки 0x80004005: что это такое и как это исправить
Это ошибка, которая может появляться как самостоятельно, так и вместе с другими ошибками. Выглядит обычно таким образом: “Error Code 080004005. Unspecified error”. Но все они легко решаются.
Почему появляется данное сообщение?
Код ошибок 0x80004005 обычно происходит при доступе к общим папкам или дискам, при использовании определенных программ или при установке обновлений. Вот наиболее распространенные причины кода ошибок 0x80004005:
Компания Microsoft по-прежнему не решила многочисленные проблемы с глобальными обновлениями «Виндовс». Пользователи компьютеров часто встречают ошибку:
Это может быть связано с рядом причин, наиболее распространенными из них являются следующие:
К счастью, есть способы решения для каждого из этих сценариев.
Способ исправления проблем с активацией
Первое, что мы должны сделать – это убедиться в активации операционной системы. Для исправления ошибки 0x80004005 необходимо открыть меню «Пуск», а затем выбрать «Парраметры». В открывшемся окне выбираем пункт «Обновление и безопасность» и в появившемся списке слева нажимаем на «Устранение неполадок». Таким образом мы открыли еще одну вкладку, в которой необходимо запустить диагностику и устранить неполадку «Центра обновления». В большинстве случаев все проблемы будут решены в автоматическом режиме.
Способ исправления проблем с поврежденными файлами
Достаточно часто случается, что поврежден системный файл opencl. dll, из-за которого возникает сообщение “Error Code 0x80004005. Unspecified error“. Для проверки целостности и устранения проблемы вы можете воспользоваться одним из встроенных в Windows 10 инструментов: SFC (система проверки файлов) или DISM (обслуживание и управление образами обновления).
Также можно попробовать полностью очистить директорию загрузки файлов обновления. Для этого запустите файловый менеджер и перейдите в папку «C:WindowsSoftwareDistributionDownload». После чего удалите все файлы и другие папки, которые увидите. Это заставит Windows 10 загрузить все файлы обновления заново.
Ошибка при попытке доступа к общим папкам и дискам
Если код 0x80004005 появляется при попытке доступа к общим папкам и дискам, то проблема может быть в реестре или в наличии скрытых виртуальных сетевых адаптеров.
Способ исправления ошибки 0x 80004005 в реестре
В обоих случаях ставим значение «1», и не забудьте нажать «ОК». Возможно, потребуется перезагрузка компьютера.
Внимание! Не удаляйте и не меняйте ничего в реестре, если вы не знаете, что делаете.
Способ исправления лишних виртуальных сетевых устройств
Нажмите кнопки «Windows» + R и введите hdwwiz. cpl. Так вы быстро попадете в диспетчер устройств. Нажмите «Вид» в меню и выберите «Показать скрытые устройства». Просмотрите список сетевых адаптеров. Если вы увидели устройство под названием Microsoft 6to4, то они, вероятнее всего, и стали причиной ошибки 80004005. Их надо удалить.
После этого перезагрузите компьютер и проверьте результат.
«E-FAIL 0x80004005» в VirtualBox
Появление 0x80004005 на VirtualBox обычно связана с ключом реестра.
Способ исправления
Нажмите кнопки «Windows» + R. В появившемся окне введите regedit для открытия редактора реестра. Перейдите к следующему пути реестра:
Если сообщение с надписью 80004005 по-прежнему появляется, то:
Вывод
Любая неисправность в работе Windows 10 поддается лечению. Но самый верный, а для многих единственный, способ исправить ошибку 0x 80004005 – это чистая установка «Виндовс 10». При этом удалятся все сохраненные данные, установленные приложения и ошибки.
Код ошибки: 30005 (CreateFile failed with 32.)
С каждым днем разработчики пытаются удивить пользователей новыми играми и даже игровыми жанрами. С ростом их количества, увеличивается и число новых, до этого неизвестных ошибок. При запуске таких популярных игр, как Tom Clancy’s Ghost Recon Wildlands, CrossOut, Dead by Daylight, Fortnite и других в компьютере появляется сообщение с кодом ошибки 30005 (CreateFile Failed with 32.). Как её решить — читайте в этой статье.
Причины появления окна с ошибкой 30005
Ошибка может появляться в результате нарушения файлов игры. Или при блокировке некоторых игровых файлов вашим антивирусным программным обеспечением. В отдельных случаях этот сбой может быть временным. Если попытаться через некоторое время снова запустить игру вы заметите, что она решилась сама собой. Следуйте всем приведенным далее инструкциям, и вы с большей степенью вероятности сможете исправить ошибку 30005 (CreateFile failed with 32.). Если вам не удастся это сделать — обязательно напишите об этом в комментариях, чтобы мы смогли найти для вас новые способы устранения.
Быстрые решения ошибки
Как это ни банально звучит, но многим помогает избавиться от ошибки простая перезагрузка компьютера. Можно предположить, что пользователи в первую очередь выполняют это действие. И все же тем, кто еще не пробовал — перезагрузите систему. Если игра заработала после перезагрузки, то скорее всего это были незначительные сбои в оперативной памяти вашего компьютера. Поэтому вы можете больше не встретить её при запуске.
Даже если она и появится еще раз через время, снова перезагрузите компьютер. А лучше — почистите его от ненужных файлов и программ.
Еще один совет — не запускайте вместе несколько программ одновременно. Особенно, если в вашем компьютере мало оперативной памяти (до 2Гб). Чтобы продолжить, нам нужны быть уверенным, что файлы игры в порядке. Для этого запустите клиент Steam и выполните проверку.
Если проверкой будут найдены отсутствующие файлы игры, необходимо переустановить игру.
Работа с антивирусом
Перед следующими действиями проверьте свою систему на вирусы средством, которое есть у вас в компьютере. Чтобы устранить ошибку с кодом 30005 CrateFile Failed with 32, в некоторых случаях достаточно отключить на время ваш антивирус. Если вы не устанавливали дополнительных, нужно выключить встроенный Защитник Windows.
Для отключения дополнительного вируса необходимо нажать на стрелочку внизу экрана и ПКМ выбрать ваш антивирус. Выберите «Управление экранами» (Avast) или подобный пункт в других антивирусах и укажите время, на сколько нужно деактивировать программу. Если этой возможности нет — удалите антивирус и запустите игру. Если игра заработает, скачайте снова антивирусную программу и добавьте игру в её исключения. Как это сделать, вы можете найти на сайте разработчика антивируса.
Удаление установочного файла EasyAntiCheat
Следующий метод основан на удалении установочного файла АнтиЧита из папки с игрой. Вам необходимо найти полный путь к папке с игрой. Если установка производилась по умолчанию, значит ваша игра должна находится на диске C:. В других случаях ищите папку там, куда вы указали установку.
Такой же файл есть в папке Steam на вашем компьютере, например, C:Usersимя пользователяSteamsteamappscommomназвание игры. Если вы не нашли его в папке с игрой, попробуйте удалить в папке Стим. Если результатов нет — верните файл на прежнее место.
Источники:
Https://fixbin. ru/kod-oshibki-0x80004005/
Https://rusadmin. biz/oshibki/kod-oshibki-30005-createfile-failed-with-32/
MSDN says
If the function fails, the return value is WAIT_FAILED. To get extended error information, call GetLastError.
The code is:
HANDLE m_mutex_handle; /**< m_mutex_handle. The handle to the created mutex. */
m_mutex_handle = ::CreateMutex( 0, false, NULL );
::WaitForSingleObject( m_mutex_handle, INFINITE );
But what are the reasons that could happen?
asked Oct 17, 2008 at 0:32
![]()
1
If you lack the SYNCHRONIZE privilege on the object, then you cannot wait. WAIT_FAILED will be returned.
answered Oct 17, 2008 at 0:56
1800 INFORMATION1800 INFORMATION
129k29 gold badges159 silver badges239 bronze badges
Passing in a bogus object might cause that.
answered Oct 17, 2008 at 0:41
1
Closing a handle while the handle is being waited on can also cause undefined behaviour.
answered Oct 17, 2008 at 0:46
В случае многопоточности иногда нам нужно дождаться завершения потока, прежде чем продолжить выполнение других действий.Для этого вы можете использовать функцию Windows API WaitForSingleObject или WaitForMultipleObjects. Обе эти функции ждут, пока объект не будет помечен как сигнализированный, прежде чем вернуться.
Итак, что это за сигнал? Прежде всего, мы можем предположить, что существует файл и два потока. Мы оговариваем, что этот файл может быть доступен и открыт только одним потоком одновременно. Как наш поток узнает, обращается ли этот файл в настоящее время к другим потокам? Мы можем позволить потоку ждать в бесконечном цикле. Один из циклов пытается открыть файл и получить к нему доступ, пока он не может быть открыт; хотя это может достичь цели, бесконечный цикл займет много памяти, поэтому окна устанавливают семафор. Простое понимание роли семафора — это бит флага. В нашей вышеупомянутой проблеме этот файл имеет семафор. Первоначально мы устанавливаем семафор в FALSE, и только когда семафор FALSE может открыть поток и получить доступ к файлу. Затем, когда приходит первый поток, семафор ЛОЖЬ, поток открывает файл для доступа и устанавливает семафор в ИСТИНА; когда первый поток обращается к файлу, приходит второй поток, а семафор еще не ИСТИНА, так что второй поток ждет.Этот процесс ожидания — WaitForSingleObject. WaitForSingleObject перейдет в очень эффективное состояние ожидания в спящем режиме во время процесса ожидания, который занимает очень небольшое количество процессорного времени.
WaitForSingleObject()
1. Форматировать
DWORD WaitForSingleObject( HANDLE hHandle, DWORDdwMilliseconds);
Есть два параметра, а именно THandle и Timeout (единицы миллисекунды).
Если вы хотите дождаться потока, вам необходимо указать дескриптор потока и соответствующее время ожидания. Конечно, если вы хотите ждать бесконечно, параметр Timeout может указывать системную константу INFINITE.
2. Цель
Он может ждать следующих типов объектов:
Event,Mutex,Semaphore,Process,Thread
3. Тип возврата
Есть три типа возврата:
WAIT_OBJECT_0, что означает, что у ожидающего объекта есть сигнал (для потока это означает конец выполнения);
WAIT_TIMEOUT, что означает, что объект не получил сигнал в течение указанного периода времени (поток не был выполнен);
WAIT_ABANDONED указывает, что у объекта есть сигнал, но он по-прежнему не может быть выполнен, обычно из-за того, что блокировка не была получена или по другим причинам.
Пример кода выглядит следующим образом:
// ConsoleApplication1.cpp: определяет точку входа консольного приложения. // #include "stdafx.h" #include "stdio.h" #include "windows.h" #include <iostream> using namespace std; int i = 0; DWORD WINAPI FunProc(LPVOID lpParameter); DWORD WINAPI FunProc(LPVOID lpParameter) { for (; i < 10; i++) { if (!(i % 10)) cout << endl; else cout << i << endl; } return 0; } void main() { cout << i << endl; HANDLE hThread; hThread = CreateThread(NULL, 0, FunProc, NULL, 0, NULL); DWORD dwRet = WaitForSingleObject(hThread, 1); if (dwRet == WAIT_OBJECT_0) { cout<< "Конец выполнения созданного потока" << endl; } if (dwRet == WAIT_TIMEOUT) { cout<< "Тайм-аут ожидания" << endl; } if (dwRet == WAIT_ABANDONED) { cout<< "Abandoned" << endl; } CloseHandle(hThread); system("pause"); return 0; }
Результат:

В этом коде сначала определите переменную i как 0 в начале, а затем выведите ее в функции main, чтобы в первой строке результата было 0.
После этого мы запускаем поток, вводим функцию потока FunProc и выводим остаток от i ++ до 10 в FunProc до тех пор, пока i> 10 не завершит цикл и поток не завершится. В это время результатом, возвращаемым в WaitForSingleObject, будет WAIT_OBJECT_0, что означает, что поток завершается нормально, и результатом является Вывод.
Среди них эффект WaitForSingleObject эквивалентен уровню, и программа может продолжить выполнение только после того, как результат будет возвращен в WaitForSingleObject.
Это время ожидания исчерпания семафора после завершения потока. Мы также можем установить второй параметр WaitForSingleObject наINFINITE, Можно ждать вечно. Результат:

Исходный текст ссылки:WaitForSingleObject
Другие ссылки:Функция и использование WaitForSingleObject
- Remove From My Forums
-
Question
-
Hi,
I want to wait for an Event but also want to execute the Loop to see if the
program is shutting down, here my code:
while (g_bThreadRun ) { dwWaitResult = WaitForSingleObject(ghBlockAvailableEvent, 100); // INFINITE ); switch (dwWaitResult) { // Event object was signaled case WAIT_OBJECT_0: // // TODO: Read from the shared buffer // break; case WAIT_TIMEOUT: //6: // Just give the thread a chance to read the g_bThreadRun flag at regular time intervals // This way we have a chance to stop the thread during program shutdown break; // An error occurred default: int err = GetLastError(); return 0; }
I found out, that a return code of 6 is generated, when the function runs into a timeout unfortunately the Symbol
WAIT_TIMEOUT has a different
value. Why?With best regards
Gerhard
Gerhard
-
Moved by
Tuesday, July 19, 2016 5:52 AM
Thread written in English -
Moved by
Xavier Xie-MSFT
Wednesday, July 20, 2016 3:19 AM
not uwp question
-
Moved by

Форум программистов Vingrad
| Модераторы: feodorv, GremlinProg, xvr, Fixin |
Поиск: |
![]() ![]()
|
|
Опции темы |
| KRTPC |
|
||
|
Новичок Профиль Репутация: нет
|
Люди я работаю с GSM модемом и не факт что он всегда ответит и по этому я использую Wait for single object. Я пишу в порт с помошью WriteFile сбрасываю событие ResetEvent и жду приема Wait for single object. WaitComEvent неподходит так как модем может не ответить и прога зависнет. Как правильно дождаться приема и считать а по истечению таймера сказать что устройство вовремя не ответило
зарание спасибо да и я не спец то если можно и немного поясните если можно но буду рад всему |
||
|
|||
| ElcnU |
|
||
Новичок Профиль Репутация: нет
|
в другом патоке и с помощью событий |
||
|
|||
| KRTPC |
|
||
|
Новичок Профиль Репутация: нет
|
а как мне определить что порт свободен? |
||
|
|||
| Romikgy |
|
||
Любитель-программер Профиль
Репутация: 7
|
если открыть его не удасться значит занят ——————— Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности.
|
||
|
|||
| KRTPC |
|
||
|
Новичок Профиль Репутация: нет
|
нужна помошь
на операцию WriteFile прога выдает ошибку 997 ERROR_NOACCESS |
||
|
|||
| Romikgy |
|
||
Любитель-программер Профиль
Репутация: 7
|
после этого в переменой порт что? ——————— Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности.
|
||
|
|||
| KRTPC |
|
||
|
Новичок Профиль Репутация: нет
|
переменная pory HANDEL и CreateFile возврашает тоже HANDEL если не так то поясни по подробнее что ты хочешь спросить |
||
|
|||
| Romikgy |
|
||||
Любитель-программер Профиль
Репутация: 7
|
то что она возвращает я знаю, что в ней при трасировке?
такую проверку сделай после криате файла
——————— Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности.
|
||||
|
|||||
| KRTPC |
|
||
|
Новичок Профиль Репутация: нет
|
эту проверку я делаю и в ней ошибок нет.Ошибка появляется после writefile-код ошибки 997, |
||
|
|||
| Romikgy |
|
||
Любитель-программер Профиль
Репутация: 7
|
KRTPC, SetCommState Добавлено @ 15:23 ——————— Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности.
|
||
|
|||
| Ataru |
|
||
|
Новичок Профиль Репутация: нет
|
вообще-то 997 это ERROR_IO_PENDING, а ERROR_NOACCESS = 998 |
||
|
|||
| maxim1000 |
|
||
|
Эксперт Профиль
Репутация: 2
|
довольно опасная строка ——————— qqq |
||
|
|||
| GremlinProg |
|
||
|
Эксперт Профиль
Репутация: 99
|
ResetEvent тут точно стабильности не прибавит кстати, к чему тут WAIT_ABANDONED?
GetOverlappedResult и т.п. ставь в ветку WAIT_TIMEOUT ——————— «Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины.» |
||
|
|||
| Dem_max |
|
||
Эксперт Профиль Репутация: 16
|
А не вариант посмотреть двумя темами ниже и увидеть работающий код ??? что за лень такая ? ——————— Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют «Твой зайка написал» («Yоur bunnу wrоte») |
||
|
|||
| xvr |
|
||||
|
Эксперт Профиль
Репутация: 40
|
Прием осуществляется функцией ReadFile, а ее в исходнике не наблюдается
|
||||
|
|||||



















![]() ![]()
|
| Правила форума «C/C++: Системное программирование и WinAPI» | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .
Если Вам понравилась атмосфера форума, заходите к нам чаще! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
| 0 Пользователей: |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
Плохая логика вообще. Например, есть следующие проблемы.
- CreateEvent/CloseHandle не должны выполняться при каждом событии ReadFile/WaitCommEvent.
- Использование GetCommMask/WaitCommEvent также неверно.
- Размер прочитанных данных, указанный в ReadFile, является фиксированным независимо от ситуации.
- Он также включает комментарий к @RbMm.
Вы можете изменить дизайн своей программы со ссылкой на следующие статьи и исходный код:
Синхронизация и перекрытие ввода и вывода
Последовательная связь
Бмо/мттти
Кроме того:
Я не заметил, что для WaitForSingleObject был указан дескриптор файла (а не дескриптор события), как указала @Rita Han.
Самая большая проблема в том.
Однако ситуация, что лучше сделать редизайн, не изменилась.
В источнике ответа @Rita Han нет описания WaitCommEvent и Overlapped для него. Кроме того, в ReadFile фиксируется размер прочитанных данных.
С другой стороны:
Хотя это не происходит в исходном коде вопроса, WaitCommEvent/WaitForSingleObject может генерировать событие, не указанное в SetCommMask.
-
Пока WaitCommEvent ожидает завершения, измените маску события с помощью SetCommMask.
Примечания — функция WaitCommEventIf a process attempts to change the device handle’s event mask by using the SetCommMask function while an overlapped WaitCommEvent operation is in progress, WaitCommEvent returns immediately. The variable pointed to by the lpEvtMask parameter is set to zero.
-
Пока WaitCommEvent ожидает завершения, вызовите WaitCommEvent несколько раз, используя одну и ту же структуру Overlapped.
Синхронизация и перекрытие ввода и выводаWhen performing multiple simultaneous overlapped operations on a single thread, the calling thread must specify an OVERLAPPED structure for each operation. Each OVERLAPPED structure must specify a handle to a different manual-reset event object.
A thread should not reuse an event with the assumption that the event will be signaled only by that thread’s overlapped operation. An event is signaled on the same thread as the overlapped operation that is completing. Using the same event on multiple threads can lead to a race condition in which the event is signaled correctly for the thread whose operation completes first and prematurely for other threads using that event.
Документ описан выше, но в зависимости от драйвера/поставщика устройства, WaitCommEvent, который вызывается позже, заканчивается ошибкой, а WaitCommEvent, ожидающий завершения, — это lpEvtMask, возвращающий ноль (как в SetCommMask).
Для нескольких перекрывающихся структурных переменных:
Распространенным ноу-хау в программировании является то, что использование одной переменной для нескольких целей чревато ошибками.
Если вы проектируете в асинхронном и/или многопоточном режиме, лучше подготовить как минимум три структурные переменные Overlapped для ReadFile, WriteFile, WaitCommEvent.
О запуске ReadFile вне зависимости от состояния входного буфера:
Речь идет о вызове ReadFile с фиксированной длиной 256 байт без получения размера полученных данных во входном буфере драйвера устройства.
На самом деле, даже если придут все данные, если они меньше 256 байт, они всегда будут задерживаться до тех пор, пока не произойдет тайм-аут приема 256 байт.
Например, цикл считывает по одному байту за раз, пока не произойдет ошибка тайм-аута, что означает конец полученных данных (тайм-аут чтения 1 байта не повлияет).
Или, как было сказано в предыдущей статье, используйте ClearCommError, чтобы получить размер данных, хранящихся во входном буфере драйвера устройства, и вызовите ReadFile, указав этот размер.
Не будет проблем с обработкой буфера на стороне приложения, которую вы объясняете.
О поведении WaiCommEvent при вызове SetCommMask:
Это может зависеть от используемого драйвера устройства.









)
)
