Вы когда-нибудь сталкивались с системной ошибкой с кодом 1400 в Windows? Что делать, если вы увидели System Error Code 1400? Вот несколько советов для вас.
Системная ошибка с кодом 1400 — «Недопустимый дескриптор окна«. Этот код ошибки может также отображаться как: «ERROR_INVALID_WINDOW_HANDLE» или со значением 0x578.
Во-первых, вы можете перезагрузить ваш компьютер, иногда ошибка появляется случайно, если же перезагрузка не решила проблему, перейдите к следующим шагам.
Вы должны использовать ваш антивирус для сканирования вашего компьютера, вирус может повредить систему и тем самым вызывать ошибку. При обнаружении любого вируса, поместите его в карантин или удалите. Вы можете использовать CCleaner для очистки системы на данном этапе.
Если с помощью антивируса и CCleaner’а вы не избавились от проблемы, проверьте реестр, узнайте, есть ли какие-либо ошибки, если есть, то восстановите его. Можно использовать Reggenie, которая может восстанавливать реестр быстро и безопасно.
Если проблема остаётся, то лучше обратиться к специалистам для решения проблемы.
You have posted a lot of code but not the key, relevant part. Specifically the implementation of your xOnAsyncRequestDone
event handler/method (unless it literally only calls that log method that you posted).
This method is being executed in the context of the TMySynHTTPAsync thread and based on the behaviour you are describing — particularly the fact that Synchronize
resolves your problem — it is highly likely that some activity in that event handler is creating a window handle.
That window handle is then owned by the HTTP Async thread, not the main application thread (sometimes referred to as the «VCL thread») that is otherwise running your application. When your application closes, the VCL thread performs some final housekeeping, destroying objects and windows etc. if one of those windows was created by some other thread this will cause problems.
Window handles are the strict property of the thread in which they were created. You cannot create a window handle in one thread and then destroy it in another.
NOTE: This is a fundamental of Windows, not Delphi.
Worth noting here is that window handles in VCL can often be created indirectly. You won’t necessarily see an explicit creation of a control that marks the creation of the underlying window handle. It is quite common for window handles only to be actually created when required. Similarly changing the properties of a control can trigger the VCL to attempt to recreate the window for that control, destroying the current one in the process.
It should be fairly apparent that these mechanisms are highly vulnerable to problems that can arise when VCL methods are called by threads other than the VCL thread. This is why you will often here it said that «the VCL is not thread-safe«.
The safest way to operate is to only manipulate VCL objects from code running in the VCL thread itself.
Synchronize to the Rescue
This is in fact precisely why Synchronize
exists.
The mechanism that you are invoking by using Synchronize
actually works to ensure that the method you are Synchronizing is execute on the VCL thread. If this is in fact creating a window handle then when the VCL thread later comes to destroy that window handle it is quite free to do so since it did in fact create it.
Hence your problem is solved.
Other Options
The Synchronize
mechanism is quite complex however, dealing (these days) with cross platform concerns among other things, and as a result may be overkill in this case.
If your code is specific to Windows, a possible alternate solution to this problem may be to exploit the fact that windows allows threads to send (or post) messages to windows in other threads. When those messages are received by those windows, they are then processed by that window’s own thread just as all other messages to those windows are. i.e. you cannot end up interrupting a «click» message received by that window by suddenly jumping across to run the notification from the thread. That notification message simply has to wait it’s turn while the window finishes processing that click message. For example.
You can think of this as a ‘Synchronize’ system «built-in» in to the OS.
So you could, for example, pass a window handle to a form (or control or anything with a window handle) to your HTTP async thread during initialisation, identifying a VCL window that wishes to receive the «request complete» or other notifications from the thread. The thread can then send notifications to that window handle using PostMessage
or SendMessage
which you could handle either by overriding the WindowProc on the form or using a declared message handler.
If the thread uses SendMessage()
to send the notification, then it is automatically suspended and forced to wait until the message is received and processed by the window (in the VCL thread).
If the thread uses PostMessage()
then the message is sent asynchronously and the thread can continue with other work without having to wait. The VCL thread will eventually pick up the message and process it.
NOT a Recommendation
This is not to say that I would recommend this alternative in this case. Although it does seem that it might be appropriate given that it does appear to be a simple «work is complete» notification in this case, without a more comprehensive understanding of your specific needs it is impossible to say which is most appropriate.
I mention it only to highlight the fact that alternatives do exist and that the key to safe, reliable threading is to understand the principles and the mechanisms involved.
Недопустимый дескриптор окна.
Суть такая, есть боольшой проект(не игра), после добавления своего контрола пошла такая трабла при закрытии приложения : «Project vmi.exe raised exception class EOSError with message ‘System Error’. Code: 1400. Недопустимый дескриптор окна.» Я так понимаю хэндл моего контрола несколько раз освобождается, но все проверял по 100 раз и отлаживал — все верно.
В интернете подобные вопросы находил, но толкового ответа не нашел, я бы с отладчика нашел бы при закрытии, да прекомпилированые модули нельзя по строчкам отлаживать.
Есть идеи куда копать?
лови эксепшен и забей)
none4
> лови эксепшен и забей)
LexGD, никогда не маскируй эксепшены.
Что значит добавление своего контрола?
Куда и как добавляешь?
Ты в курсе, что зарегистрированные объекты освобождаются автоматически?
none4
> лови эксепшен и забей)
>лови эксепшен и забей)
Не, это не дело.
>Что значит добавление своего контрола?
Написал свой визуальный компонент, тыркнул его на форму. Все работает как часы, но при завершении программы такой вот эксцепшн.
>Ты в курсе, что зарегистрированные объекты освобождаются автоматически?
Конешно, когда родительский класс освобождается, то и объекты навешанные на него тоже.
Я даже отловить это исключение не могу, стек ничего не говорит.
Сделай логирование внутри своего компонента.
Если он удаляется несколько раз — ты это увидишь.
>Сделай логирование внутри своего компонента.
>Если он удаляется несколько раз — ты это увидишь.
В нулевом посте писал — отлаживал по 100 раз, дело не в нем.
В том то и трабла.
LexGD
> дело не в нем.
в нем, в нем. Просто ты не до конца отладил.
Тогда итеративным методом отлаживай:
Убери из компонента вообще ВСЕ, оставь только минимум, который позволяет его разместить на форме.
Проверь. Если по прежнему косяк — смотри чем твой код отличается от аналогичных примеров.
Если все ок — добавляй функционал.
В итоге найдешь код, который генерирует проблему.
Почему при создании окна возвращается 1400 недействительных дескрипторов? Не так ли? В функции создания окна нет дескриптора окна, хорошо? Как это может быть неверный дескриптор? Я долго искал в поисковике, но до сих пор не могу решить эту проблему?
Почему CreateWindowExW() вернуть 1400?
Код в строке 44.
Решение
Вы используете WindowHandle в процедуре окна, прежде чем он был установлен на возвращаемое значение CreateWindowEx , Часть этого CreateWindowEx вызов вызывает оконную процедуру с WM_NCCREATE а также WM_CREATE , Ваша оконная процедура вызывает DefWindowProc с нулевой ручкой в этой точке.
Простое решение здесь заключается в использовании _windowHandle параметр вместо вашего WindowHandle Глобальный.
Также обратите внимание, что для того, чтобы ваше окно было видно, вам нужно позвонить ShowWindow , Кроме того, сообщение о выходе, которое вы публикуете, не относится к этому окну, поэтому ваш GetMessage вызов не получит его, и приложение не будет завершено.
Другие решения
Вы не проверяли, действительно ли произошла ошибка. Вам нужно проверить дескриптор, который вы получаете от CreateWindowEx, прежде чем вызывать GetLastError. В противном случае он вернет некоторую предыдущую, не связанную ошибку или какое-либо случайное значение.
Вызывайте GetLastError только после неудачного CreateWindow (то есть, если CreateWindow возвращает NULL).
последнее значение ошибки не указывается после подавляющего большинства успешных вызовов Windows API, необходимо проверить возвращаемое значение перед вызовом GetLastError.
Возможные причины ошибки «EOSError 1400 — Недействительный дескриптор окна»
У меня проблема. У меня есть приложение VCL, использующее поток. Этот поток выполняет некоторые вычисления и вызывает метод MainForm через Synchronize (). Все работает нормально, у меня есть кнопка «Пуск», которая создает и запускает поток, и кнопка «Стоп», которая останавливает и освобождает его. Никаких ошибок, ничего.
Но почему-то когда закрываю приложение и Я запустил нить Я получаю EOSError 1400 — Invalid window handle . Я установил точку останова для процедуры OnClose, и единственное, что я там делаю, — это сохраняю ini файл, без ошибок в этом, когда я продолжаю трассировку (с помощью F7), я добираюсь до самого конца ( Application.Run; end. ), после «вызова» end. Я получаю сообщение об ошибке, поэтому нет конкретной строки кода, поднимающей ее.
Я надеюсь, что вопрос несколько ясен, и я надеюсь, что он разрешим, потому что простое игнорирование ошибки кажется немного нечистым.
ОТВЕТ
Эта ошибка возникла у меня, когда был вызван метод Execute потока, он выглядел так:
задан 15 июн ’11, 03:06
Вы уверены, что ваш поток больше не работает в этот момент («в самом конце Application.run»)? — gabr
Почему голосование против? Это добрый и актуальный вопрос. Я проголосовал за это, чтобы компенсировать отрицательный голос. Эти неоправданные отрицательные голоса, похоже, в последнее время выходят из-под контроля: — / — jpfollenius
Вероятно, он был отклонен, потому что на исходный вопрос невозможно было ответить. На него по-прежнему нельзя ответить, даже добавив некоторый код. Если вопросы неясны, за них следует проголосовать против, так как я понимаю, как работает сайт. — David Heffernan
@David: Я согласен, но если OP сделает все возможное, чтобы описать ситуацию, было бы лучше, ИМХО, запросить у него дополнительную информацию. И, кроме того, отрицательный голос без комментария НИКОГДА не поможет. — jpfollenius
Омигош. Простите всю эту возню, пока форматируете .Execute метода публикации, я заметил, что есть один прямой (несинхронизированный) вызов MainForm.Memo1.Lines.Add(); . По какой-то причине я помещаю ее в одну строку с другой командой. Черт меня побери. Извините и спасибо. После комментирования ошибок больше не появляется. — Martin Melka
2 ответы
Возможная причина — несинхронизированный доступ к графическому интерфейсу из потока. Вы сказали, что нить этого не делает, но не видя TRunThread.Execute исходный код, который выглядит как лучшее предположение.
У меня была такая же проблема, код ошибки 5 Access is denied . Оказалось, что это связано с тем, что поток начал тестировать подключение к Интернету на встроенной панели (используя BeginThread ). Если пользователь выходит из формы (которая проверяет подключение к Интернету) сразу после отображения формы, происходит AV.
На моем компьютере разработки тест подключения к Интернету прошел успешно . и так быстро, что я никогда не видел проблемы! После нескольких часов борьбы я наконец отследил это до этой темы и воспроизвел, отключив сетевой кабель.
Решение было простым: при выходе из формы (например, в FormDestroy event) перед продолжением убедитесь, что поток определенно не запущен.
INstantKiLLer 9 / 9 / 3 Регистрация: 11.10.2014 Сообщений: 363 |
||||
1 |
||||
22.07.2016, 19:55. Показов 10314. Ответов 2 Метки нет (Все метки)
Пишу многопоточную программу, а при ее закрытии после работы потоков выдает эту ошибку, из-за чего не могу понять, в интернете тоже дельного найти не смог.
Возможно из-за того что я создаю поток через динамический массив?
0 |
5538 / 4323 / 1383 Регистрация: 14.04.2014 Сообщений: 19,387 Записей в блоге: 19 |
|
22.07.2016, 20:31 |
2 |
приведенный код вообще ни при чем
0 |
Заблокирован |
|
22.07.2016, 21:50 |
3 |
Прежде чем программировать потоки, прочитайте справку по ним, иначе погрязнете в ошибках. Код unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,syncobjs, contnrs, StdCtrls; type TMyThread=class(tthread) private FTime: integer; procedure ThreadTerminated(sender:tobject); procedure SetTime(const Value: integer); protected procedure execute;override; public property Time:integer read FTime write SetTime; constructor create; destructor destroy; override; end; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; threadlist:tthreadlist; implementation {$R *.dfm} function ThreadsCount:integer; begin result:=threadlist.locklist.Count; threadlist.UnlockList; end; procedure TForm1.FormCreate(Sender: TObject); begin threadlist:=tthreadlist.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin while ThreadsCount >0 do application.ProcessMessages; threadlist.Free; end; { TMyThread } constructor TMyThread.create; begin inherited create(true); // создаем ожидающий поток, чтобы можно было изменять параметры FreeOnTerminate:=true; Priority:=tpNormal; OnTerminate:=ThreadTerminated; ThreadList.Add(self); end; destructor TMyThread.destroy; begin threadlist.LockList; /// здесь может быть код, для освобождения объектов inherited; threadlist.Remove(self); threadlist.UnlockList; end; procedure TMyThread.execute; begin // код, который должен выполняться в потоке. sleep(FTime); end; procedure TMyThread.SetTime(const Value: integer); begin FTime := Value; end; procedure TMyThread.ThreadTerminated(sender: tobject); begin showmessage('Поток завершил работу'); end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; thread:tmythread; begin for i:=1 to 10 do begin thread:=tmythread.create; thread.Time:=4000; thread.Resume; end; end; end.
1 |
Содержание
- Исправить ошибочный дескриптор в Windows 10
- Ошибка дескриптора в Windows 10
- 1] Отключение с помощью клавиши Shift и комбинированной кнопки питания
- 2] Загрузитесь в безопасном режиме и удалите последние обновления
- 3] Запустите DISM в расширенном запуске с использованием CMD
- 4] Выполнить восстановление при запуске/автоматическое восстановление
- Простые руководства
- Доступные руководства каждому!
- Избавляемся от System Error Code 1400
- Избавляемся от System Error Code 1400 : 2 комментария
- Недопустимый дескриптор окна
- Вложенный файл:
- Вложенный файл:
- Вложенный файл:
- Вложенный файл:
- Вложенный файл:
- Исправить ошибочный дескриптор в windows 10
- Удалите букву диска из командной строки
- Устранение ошибок реестра
- Создайте новую учетную запись локального администратора.
- Отключите сетевой диск
- 2 ответов
- Исправление службы через командную строку
- Неверный дескриптор файла
- Распространенные сообщения об ошибках в Descriptor.dll
- Установлен ли драйвер?
- Windows 10
- Запрет на отключение порта usb
- Неизвестное USB-устройство (сбой запроса дескриптора устройства): проверка драйверов
- Ошибка номер 1400
- Причины ошибок в файле Descriptor.dll
- При подписании документа появляется ошибка «Сертификат не найден» — Сертифікат не знайдено(51) дфс
- Проверка настроек ОС и устройства
- Занята очередь печати
- Ошибка дескриптора в Windows 10
- 1] Отключение с помощью клавиши Shift и комбинированной кнопки питания
- 2] Загрузитесь в безопасном режиме и удалите последние обновления
- 3] Запустите DISM в расширенном запуске с использованием CMD
- 4] Выполнить восстановление при запуске/автоматическое восстановление
- Анализ энергопотребления периферийных устройств и проблемы статического электричества
- Запуск средства устранения неполадок принтера
- Как устранить код ошибки 43 USB подключения
- Энергосберегающий режим USB
- Обновление драйверов USB при ошибке 43
- Проблемы с драйверами материнской платы
- Снятие статического электричества
- Причины ошибки 1400
Исправить ошибочный дескриптор в Windows 10
Ошибка дескриптора в Windows 10
1] Отключение с помощью клавиши Shift и комбинированной кнопки питания
Этот ярлык должен заставить Windows 10 загружать новые обновления. Кажется, есть некоторые проблемы с автоматическим обновлением, и этот ярлык помогает исправить.
2] Загрузитесь в безопасном режиме и удалите последние обновления
Если вышеуказанное решение не работает, лучше всего удалить обновление. Для этого вам нужно загрузиться в безопасном режиме. Оказавшись внутри, зайдите в Настройки> Обновление и безопасность> Просмотр обновлений и истории> удалить обновления. Выберите последние обновления и выберите, чтобы удалить его.
3] Запустите DISM в расширенном запуске с использованием CMD
Загрузите параметры расширенного запуска и выберите «Устранение неполадок»> «Дополнительные параметры»> «Командная строка». Здесь вы можете запустить инструмент DISM. Он будет сканировать ваш компьютер Windows на наличие несоответствий. Они обычно возникают в результате различных сбоев оборудования или проблем с программным обеспечением. Инструмент DISM потенциально исправит это повреждение.
4] Выполнить восстановление при запуске/автоматическое восстановление
Восстановление при загрузке или автоматическое восстановление – это расширенный параметр в Windows. Это может исправить проблемы, которые блокируют Windows от нормальной загрузки. Он будет сканировать системные файлы, параметры реестра, параметры конфигурации и многое другое и автоматически попытаться решить проблему самостоятельно.
Загрузите параметры расширенного запуска и выберите «Устранение неполадок»> «Дополнительные параметры»> «Автоматическое восстановление». Этот процесс может занять некоторое время, и ваша система может даже загрузиться.
Во время восстановления при загрузке вам нужно будет выбрать учетную запись и войти в свою учетную запись Microsoft или локального администратора, чтобы завершить процесс. Во время этого входа в систему вы не должны получить сообщение об ошибке «The Handle is Invalid».
Сообщите нам, помогло ли это исправить ошибку.
Источник
Простые руководства
Доступные руководства каждому!
Избавляемся от System Error Code 1400
Вы когда-нибудь сталкивались с системной ошибкой с кодом 1400 в Windows? Что делать, если вы увидели System Error Code 1400? Вот несколько советов для вас.
Системная ошибка с кодом 1400 – “Недопустимый дескриптор окна“. Этот код ошибки может также отображаться как: “ERROR_INVALID_WINDOW_HANDLE” или со значением 0x578.
Во-первых, вы можете перезагрузить ваш компьютер, иногда ошибка появляется случайно, если же перезагрузка не решила проблему, перейдите к следующим шагам.
Вы должны использовать ваш антивирус для сканирования вашего компьютера, вирус может повредить систему и тем самым вызывать ошибку. При обнаружении любого вируса, поместите его в карантин или удалите. Вы можете использовать CCleaner для очистки системы на данном этапе.
Если с помощью антивируса и CCleaner’а вы не избавились от проблемы, проверьте реестр, узнайте, есть ли какие-либо ошибки, если есть, то восстановите его. Можно использовать Reggenie, которая может восстанавливать реестр быстро и безопасно.
Если проблема остаётся, то лучше обратиться к специалистам для решения проблемы.
Избавляемся от System Error Code 1400 : 2 комментария
А вам не кажется что подобные советы даются всегда и для всех проблем. Это как та таблетка аспирина поломанная на две половинки (одна от головы, другая от кашля – не перепутай) Вот бы действительно дельный совет сказали.
Источник
Недопустимый дескриптор окна
Вложенный файл:
Вложенный файл:
Вложенный файл:
Вложенный файл:
Вложенный файл:
Вложения:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что то пошло не так.
1. Либо у Вас проблемы с самой виндовс
2. Либо после создания окна у программы нет возможности получить дескриптор созданного окна или объекта(кнопки и т.п.) Может блокировать какой нить антивирус, либо другое ПО, которое пытается перехватить окна, в том числе и вирусы.
3. Либо что то просто тормозит программу и разработчики не предусмотрели такого случая при использовании потоков(либо что то не успевает выполниться, либо появляется системное сообщение при выводе которого происходит такая фигня).
Во всяком случае проблема в вашей рабочей станции. И как это решить, никто Вам не ответит, все в Ваших руках.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Попробуйте устанавливать Континент TLS Клиент 2.0.1440.0 с отключенным в BIOS Secure Boot (если он был включён).
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
В качестве эксперимента попробуйте выполнить следующее:
В папке C:Program FilesSecurity CodeContinent TLS Client находится точно такой же файл sciter.dll, его необходимо куда-нибудь скопировать в другое место, а в саму папку поместите sciter.dll из архива.
Пересчитайте контрольные суммы, запустив в папке Continent TLS Client GUIIntegrityController.exe, нажав на него правой кнопкой мыши и выбрав «Запуск от имени администратора», а далее нажав кнопку «Пересчитать контрольные суммы».
Вложения:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Источник
Исправить ошибочный дескриптор в windows 10
Удалите букву диска из командной строки
Команда, которую вы собираетесь запустить, позволяет подключать и отключать буквы дисков в и из виртуального расположения. Отключение буквы диска должно позволить вам установить программу без генерации сообщения об ошибке. Итак, вот что вам нужно сделать:
Теперь мы рекомендуем использовать этот инструмент для вашей ошибки. Кроме того, этот инструмент исправляет распространенные компьютерные ошибки, защищает вас от потери файлов, вредоносных программ, сбоев оборудования и оптимизирует ваш компьютер для максимальной производительности. Вы можете быстро исправить проблемы с вашим ПК и предотвратить появление других программ с этим программным обеспечением:
Устранение ошибок реестра
Системный реестр может ошибочно указывать временный диск.
Создайте новую учетную запись локального администратора.
Войдите на компьютер с локальной учетной записью и установите приложения.
Отключите сетевой диск
2 ответов
возможной причиной является несинхронизированный доступ к GUI из потока. Вы сказали, что нить этого не делает, но не видя TRunThread.Execute исходный код, который выглядит как догадка.
на моем ПК разработки тест подключения к интернету был успешным. и так быстро, что я никогда не видел проблемы! После нескольких часов борьбы я, наконец, отследил его до этой темы и воспроизвел его, отсоединив сетевой кабель.
решение было простым: при выходе из формы (напр. в FormDestroy event) убедитесь, что поток определенно не работает перед продолжением.
Исправление службы через командную строку
Вызов Startdocprinter не может быть произведен при нарушении работы диспетчера. В этом случае попробуйте устранить проблему путем изменения списка управления доступом службы.
Откройте строку системного поиска клавишами Win + S, наберите «cmd» и под найденным результатом нажмите на «Запуск от имени администратора».
В консоли наберите команду:
Теперь выполните следующую команду, чтобы изменить управление доступом:
cacls.exe PRINTERS /E /G администратор:C
После успешной обработки команды перезагрузите ПК и проверьте, устранен ли сбой при вызове Startdocprinter.
В языке разметки гипертекста, который применяется для создания статичных веб-страниц, дескрипторы — это не что иное, как тэги. В этой среде они выполняют роль меток, благодаря которым текст, размещённый между ними, отображается определенным способом. Таким образом и формируется дизайн и расположение элементов на странице.
Как правило, специфика языка определяет наличие открывающего дескриптора и закрывающего. Все, что между ними, подвержено изменению.
Дескриптор может иметь атрибуты, то есть определённые свойства. Их синтаксис выглядит так: имя атрибута = его значение.
Подчиняясь общей логике, дескрипторы в HTML представляют собой идентификационные метки объектов. С их помощью можно управлять внешним видом, взаимодействовать со страницей и присваивать ей особые значения.
Неверный дескриптор файла
Откройте командную строку на компьютере Windows и выполните эту команду:
Вам необходимо ввести полный путь к файлу/папке.
Например, если у вас есть папка с именем CON на рабочем столе, путь будет выглядеть так:
Команда будет выглядеть так:
Если эта ошибка возникает по другим причинам, используйте следующее:
Это удаляет расширенную функциональность точки повторного анализа.
Создать папку или файл с зарезервированным именем прямиком из Проводника Windows 10 пользователь даже с правами Администратора не может. Сделать это могут некоторые утилиты, а также такие файлы могут быть переданы с другого компьютера.
Зачастую такие объекты не представляют для пользователя никакой ценности, а только занимаю свободное место на жестком диске. Поэтому юзер пытается их удалить, сталкиваясь с ошибкой Неверного дескриптора.
Причин, по которым в Windows 10 не получается удалить такие файлы, несколько. Главная – объект может удерживаться системным процессом. Также удалить такие файлы невозможно, если они имеют зарезервированные имена, такие, как: CON, PRN, AUX, NUL, COM1 или LPT1.
Распространенные сообщения об ошибках в Descriptor.dll
Наиболее распространенные ошибки descriptor.dll, которые могут возникнуть на компьютере под управлением Windows, перечислены ниже:
Такие сообщения об ошибках DLL могут появляться в процессе установки программы, когда запущена программа, связанная с descriptor.dll (например, Third-Party Application), при запуске или завершении работы Windows, или даже при установке операционной системы Windows
Отслеживание момента появления ошибки descriptor.dll является важной информацией при устранении проблемы
Установлен ли драйвер?
При первичном подключении любого устройства к компьютеру необходима установка драйверов. В случае с принтерами лучше устанавливать не только драйвер, но и программу для работы с устройством. ПО практически всегда поставляется на диске вместе с аппаратом и также содержит инструкцию на нескольких языках.
Изредка в дорогих моделях программное обеспечение предоставляется на USB-флешке. Чтобы проверить, правильно ли установлен драйвер, необходимо зайти в «Диспетчер устройств» операционной системы Windows.
в меню слева выбрать «Диспетчер…»;
проверить перечень на наличие вашего устройства.
Аппарат должен находиться в категории «Принтеры и сканеры». Его название должно соответствовать точно или приблизительно названию вашего устройства (в случае если драйвер универсален, или программно-аппаратная часть не изменялась с прошлой модели).
Например, у вас модель Canon Pixma MP 280, в диспетчере задач может отображаться как Canon Pixma MP 200 или MP 2.
Windows 10
Сбой запроса дескриптора устройства на Windows 10 возникает только в том случае, когда происходит подключение к USB 3.0. Это нормальная ситуация, поэтому и решается она легко — нужно найти подходящие драйвера:
Для ноутбуков есть на сайте производителя (важно учитывать модель устройства).
Для ПК — по материнской плате.
После установки драйверов обычно всё срабатывает. Однако, если нет, и если никакой из описанных методов не сработал, значит, случай уникальный и помочь могут только радикальные способы — сброс настроек BIOS или переустановка ОС, так как дело может быть в том, что она пиратская и ошибки были изначально.
Но к этим способам лучше не прибегать, да и до них вряд ли дойдёт, потому что, какой-то из предложенных ранее, сработает. Ведь в 99% случаев причина возникновения проблем с дескриптором USB лежит в неправильной конфигурации ОС, а в этих случаях эффективна проверка драйверов и настроек. О чём и рассказывается в материале выше.
Запрет на отключение порта usb
Еще одним вариантом, когда флешка не опознается, может быть временное отключение операционкой юсб-порта.
Чтобы это устранить, понадобится открыть «Панель управления» и перейти на вкладку «Электропитание».
В появившемся окне раскройте список пункта «Параметры usb» и выберите «Параметр временного отключения usb-порта».
Установите в нем значение «Запрещено» и нажмите «Ок» для подтверждения изменения.
Кроме этого установите на операционку новые обновления, а при необходимости — последние программы для материнской платы.
Это можно выполнить при помощи программы Driver Easy, которая устанавливает драйвера для любого имеющегося оборудования, в том числе и usb.
Внешний вид программы
Что делать, если usb устройство не опознает Windows 10?
Во — первых следует убедиться в том, что само устройство полностью исправно.
В противном случае причину следует искать в самом компьютере. Для начала проверьте аппаратную часть.
Неизвестное USB-устройство (сбой запроса дескриптора устройства): проверка драйверов
Если же с энергопотреблением все в порядке, возможно, проблема состоит в драйверах контроллеров.
Проверить их состояние можно в том же «Диспетчере устройств». Если устройство не определяется (происходит сбой дескриптора), драйверы придется переустановить. В списке USB-контроллеров следует найти все записи, относящиеся к Generic USB Hub, корневым концентраторам и составным устройствам.
Для каждого из них нужно выполнить операцию обновления драйверов, вызываемую из меню правого клика, а при установке либо задать поиск на локальном компьютере, либо выбрать драйвер из списка установленных. Как правило, в списке будет отображен только один совместимый драйвер.
После переустановки драйверов для всех устройств исчезновение проблемы имеет все шансы на успех. Проблема совместимости с Windows 10 для устройств USB 3.0 решается не установкой стандартного драйвера из собственной базы данных системы, а загруженного с официального сайта производителя компьютерной техники. В частности, эта проблема касается большинства ноутбуков.
Ошибка номер 1400
Данная проблема часто встречается в семействе операционных систем Windows. При её появлении вместе с ней может быть и краткое описание — недопустимый дескриптор окна. А может встречаться и такая формулировка — «Error_invalid_window_handle» или 0х578.
Как бороться и что значит неверный дескриптор? В зависимости от контекста объекта, нужно принимать разные меры.
В любом случае стоит сразу же пройтись по стандартным мерам, принимаемым ко всем проблемам с системой:
Если базовые шаги не помогли, то, возможно, стоит удалить и снова установить приложение, которое вызывает сбой.
Ещё один надёжный способ быстро восстановить работоспособность системы — сделать её откат с помощью стандартных инструментов. После использования «Восстановления системы», она вернётся к последней действующей резервной копии, при условии что она была ранее создана.
Причины ошибок в файле Descriptor.dll
Большинство ошибок descriptor.dll связано с отсутствием или повреждениями файлов descriptor.dll. Тот факт, что descriptor.dll – внешний файл, открывает возможность для всяческих нежелательных последствий.
Непредвиденные завершения работы вашего компьютера или заражение вирусом может повредить descriptor.dll, что приведет к ошибкам dll. Когда файл descriptor.dll повреждается, он не может быть нормально загружен и выведет сообщение об ошибке.
В других случаях ошибки файла descriptor.dll могут быть связаны с проблемами в реестре Windows. Нерабочие ссылки DLL файлов могут помешать зарегистрировать файл dll должным образом и вызвать ошибку descriptor.dll. Эти нерабочие ключи реестра могут появиться в результате отсутствия файла DLL, перемещения файла DLL или ввиду наличия остаточной ссылки DLL файла в реестре Windows после неудачной установки или удаления программы.
Более конкретно, данные ошибки descriptor.dll могут быть вызваны следующими причинами:
При подписании документа появляется ошибка «Сертификат не найден» — Сертифікат не знайдено(51) дфс
Чтобы проверить наличие сертификатов, то необходимо использовать раздел «Поиск сертификатов» на официальном сайте ресурса АЦСК, к которому относится Ваш ключ (детально /kak-nayti-i-zagruzit-sobstvennyy-sertifikat-lichnogo-klyucha-ecp)
В данном разделе ввести в одно из полей «Код ЕГРПОУ» или «Регистрационный номер учетной карточки плательщика налогов» соответствующий номер и найти соответствующий усиленный сертификат открытого ключа.
Обязательно обращайте внимание на дату и срок действия сертификата!
Если дата ключа соответствует дате сертификата, то его нужно сохранить на Ваш локальный диск, который выбран для сохранения сертификатов в качестве файлового хранилища.
После этих настроек повторите попытку загрузки ключа электронной цифровой подписи еще раз.
Нужно проверить наличие действующего сертификата вашего ключа следующим образом:
Зайти в Сонате в Меню-Криптобиблиотека-настройки…»
Перейти на вкладку «Личный ключ», затем кликнуть по кнопке «Проверить»
Далее, вставьте флешку или другой носитель в компьютер
Далее введите пароль и кликните по кнопке «Считать».
Скачайте ваши сертификаты с сайта АЦСК
Загруженные сертификаты нужно импортировать:
Зайти в Сонате в Меню-Криптобиблиотека-посмотреть сертификаты»
Снизу нажать «Импортировать», выбрать все загруженные сертификаты и нажать кнопку «Открыть»
Если данная проверка была выполнена успешно, то это может быть ошибка в работе самой сонаты. Если при проверке была ошибка — то нужного сертификата нет.
Проверка настроек ОС и устройства
Если вы столкнулись с тем, что устройство не выводит на экран никаких сообщений, и при отправке файла на печать ничего не происходит, то прежде чем обращаться в сервисный центр с вопросом: «что делать принтер перестал печатать, проверьте настройки подключения аппарата, а также операционой системы.
Чтобы это сделать первым делом следует проверить, правильно ли подключено устройство к компьютеру, и видит ли его операционная система.
оно должно быть в списке и соответствовать наименованию вашего аппарата;
напротив него не должно быть обозначений ошибочного подключения, конфликта или отключения (желтый восклицательный знак или красный крест).
Теперь нужно проверить, правильность настроек самого аппарата.
В случае если печать не начинается, проблем может быть несколько:
неправильно указан порт подключения;
сменился адрес или имя компьютера, к которому подключен сетевой принтер;
не работает устройство, которое является связующим для подключения по сети (роутер, маршрутизатор, компьютер);
неверно выбран принтер, как устройство по умолчанию;
в настройках аппарата стоит запрет на вывод определенного типа данных.
Для проверки этих данных необходимо обратиться к «Панели управления» и выбрать пункт «Устройства и принтеры». Тут можно изменить устройство для печати, выбранное по умолчанию (правой кнопкой мыши вызвав меню и активировав соответствующую галочку). В свойствах аппарата – проверить правильность настройки.
Если подключение к сетевому аппарату невозможно, лучше обратиться за помощью к пользователю удаленного компьютера или сетевому администратору.
Занята очередь печати
Если вы уверены, что принтер работает но не печатает, необходимо проверить, не занята ли очередь печати. Большинство современных устройств с полностью установленным программным обеспечением сами выводят на экран подобную ошибку. Однако это не всегда происходит.
В таком случае нужно самому проверять очередь на печать. Сделать это можно, вызвав программу драйвера из трея (значок возле часов). Однако этот способ не всегда подходит для тех, кто пользуется аппаратом по сети.
Наиболее часто с проблемой очереди печати сталкиваются пользователи обширных сетей при работе с общим принтером. В таком случае одно задание может состоять из множества частей. Например, если оно очень большое, программа могла сама поделить его для того, чтобы не перегружать внутреннюю память устройства.
Кроме того, корпоративная практика показывает, что очень часто встречаются случаи, когда одно задание не завершилось полностью из-за ошибок (закончилась или замялась бумага, перегрелся принтер), и было послано еще одно и еще.
В зависимости от модели аппарат может не обращать внимания на недоработанные задания и продолжать работать, пока его память полностью не забьется подобными фрагментами. Или же сразу не давать продолжить работу.
Выхода может быть два:
некоторые аппараты требуют физического воздействия, то есть квитирования ошибок и удаления очереди печати кнопками непосредственно на нём.
Ошибка дескриптора в Windows 10
1] Отключение с помощью клавиши Shift и комбинированной кнопки питания
Этот ярлык должен заставить Windows 10 загружать новые обновления. Кажется, есть некоторые проблемы с автоматическим обновлением, и этот ярлык помогает исправить.
2] Загрузитесь в безопасном режиме и удалите последние обновления
Если вышеуказанное решение не работает, лучше всего удалить обновление. Для этого вам нужно загрузиться в безопасном режиме. Оказавшись внутри, зайдите в Настройки> Обновление и безопасность> Просмотр обновлений и истории> удалить обновления. Выберите последние обновления и выберите, чтобы удалить его.
3] Запустите DISM в расширенном запуске с использованием CMD
Загрузите параметры расширенного запуска и выберите «Устранение неполадок»> «Дополнительные параметры»> «Командная строка». Здесь вы можете запустить инструмент DISM. Он будет сканировать ваш компьютер Windows на наличие несоответствий. Они обычно возникают в результате различных сбоев оборудования или проблем с программным обеспечением. Инструмент DISM потенциально исправит это повреждение.
4] Выполнить восстановление при запуске/автоматическое восстановление
Восстановление при загрузке или автоматическое восстановление — это расширенный параметр в Windows. Это может исправить проблемы, которые блокируют Windows от нормальной загрузки. Он будет сканировать системные файлы, параметры реестра, параметры конфигурации и многое другое и автоматически попытаться решить проблему самостоятельно.
Загрузите параметры расширенного запуска и выберите «Устранение неполадок»> «Дополнительные параметры»> «Автоматическое восстановление». Этот процесс может занять некоторое время, и ваша система может даже загрузиться.
Во время восстановления при загрузке вам нужно будет выбрать учетную запись и войти в свою учетную запись Microsoft или локального администратора, чтобы завершить процесс. Во время этого входа в систему вы не должны получить сообщение об ошибке «The Handle is Invalid».
Сообщите нам, помогло ли это исправить ошибку.
Анализ энергопотребления периферийных устройств и проблемы статического электричества
Одной из причин того, что система выдает сообщение о том, что произошел сбой запроса дескриптора USB-устройства, может быть и потребление электроэнергии, показатель которого превышает номинал.
Чтобы проверить эту информацию для начала нужно зайти в «Диспетчер устройств», который можно вызвать либо через «Панель управления», либо командой devmgmt.msc в консоли «Выполнить» (Win + R), и найти там установленные USB-контроллеры, а в самом разделе выбрать пункт, соответствующий корневому USB-концентратору.
Далее правым кликом вызывается контекстное меню и выбирается строка свойств. На вкладке питания следует убедиться, что потребляемая мощность не превышает доступную.
Если превышение имеется, следует полностью отключить все периферийные устройства вместе с компьютером и выдернуть шнур из розетки, после чего на несколько секунд зажать кнопку питания, чтобы с материнской платы исчезли остаточные токи. После включения и повторной загрузки операционной системы отключенные устройства следует подключать поочередно, чтобы найти источник сбоя.
Запуск средства устранения неполадок принтера
Прежде чем перейти к более сложным способам решения, рекомендуется начать поиск неисправностей запуском утилиты, способной автоматически решить большинство проблем.
Воспользуйтесь инструментом устранения неполадок принтера, чтобы проанализировать текущую ситуацию с драйверами и посмотреть, эффективность его предустановленных способов восстановления. Инструмент ищет несоответствия, которые приводят к ошибкам печатающего устройства. Если ему удастся найти способ восстановления, он порекомендует исправление, которое разрешит ошибку.
Откройте вкладку Устранения неполадок командой ms-settings:troubleshoot из окна «Выполнить» (Win + R).
В правой части окна прокрутите вниз до раздела «Запустить диагностику и устранить неисправность». Затем выберите принтер и кликните на кнопку «Запустить средство устранения неполадок».
Дождитесь завершения начального сканирования, а затем нажмите «Применить это исправление», если средство определило вариант восстановления.
После успешного применения исправления перезагрузите компьютер и проверьте, возникает ли ошибка, повторив то действие, при котором она возникала. Если продолжаете сталкиваться с ошибкой, из-за которой не произведен вызов функции Startdocprinter или инструмент не нашел никаких проблем с конфигурацией принтера, перейдите к следующему методу.
Как устранить код ошибки 43 USB подключения
В тех ситуациях, когда ошибка 43 возникает из-за программного сбоя, у этого может быть несколько причин.
Энергосберегающий режим USB
Сбой запроса дескриптора устройства может быть временным или постоянным. Когда некоторое время компьютер через USB стабильно взаимодействует с устройством, а после отключается из-за ошибки 43, вероятнее всего ситуация в обесточивании разъемов. Чтобы исправить ситуацию проделайте следующее:
Когда данные действия будут выполнены для всех указанных пунктов, попробуйте вновь подключить внешнее USB устройство. Если ошибка 43 сохраняется, перейдите к следующему пункту инструкции.
Обновление драйверов USB при ошибке 43
Ошибка 43, связанная с проблемами дескриптора устройства, может возникать из-за неисправности драйверов. В таком случае лучшим вариантом будет их переустановить. Процедуру переустановки драйверов USB, описанную ниже, следует провести для всех корневых USB-концентраторов, составных USB устройств и Generic USB Hub.
Как переустановить драйвера USB для устранения ошибки 43:
Указанные шаги следует проделать для всех обозначенных выше USB контроллеров.
Проблемы с драйверами материнской платы
Возникать ошибка 43 может по вине неправильно установленных драйверов материнской платы или при их полном отсутствии. Чаще всего автоматической установки драйверов операционной системой Windows достаточно, чтобы USB контроллеры работали без сбоя, но с редкими материнскими платами могут возникать ошибки.
Чтобы обновить драйвера материнской платы, следует загрузить актуальную их версию с официального сайта разработчиков платы или чипсета. Найдите требуемые драйвера (Intel Chipset Driver, ACPI Driver или другие) для своей модели оборудования, после чего произведите их установку.
Важно: Если на сайте производителя отсутствует версия драйверов для Windows 10, можно установить вариацию для Windows 8 в режиме совместимости, но обращайте внимание на разрядность ОС
Снятие статического электричества
Ошибка 43 при подключении USB устройств также может являться следствием проблем с питанием портов. Чтобы устранить возможные перенапряжения, статические сгустки или недостаток питания на портах, проделайте следующее:
После выполнения указанных выше действий, блок питания сбрасывает из памяти информацию о том, что некоторые портам требуется больше энергии, чем другим. Вместе с тем удаляется статическое электричество с портов компьютера, если оно имеет место быть.
(445 голос., средний: 4,51 из 5)
Причины ошибки 1400
Ошибки типа Ошибки во время выполнения, такие как «Ошибка 1400», могут быть вызваны целым рядом факторов, поэтому важно устранить каждую из возможных причин, чтобы предотвратить повторение ошибки в будущем
Источник