Ошибка использования загрузчика vxd

Для начала, выясним что такое VxD. Это Windows-драйвера системного уровня (то есть уровня ядра системы), исполняющиеся в нулевом кольце защиты защищённого режима и обладающие всеми мыслимыми и немыслимыми привилегиями (в частности – правом доступа к устройствам на физическом уровне). Очень многие интересуются тем, как создать и загрузить такой драйвер “штатными средствами”. Что же, спрашивали – отвечаем!

В этой заметке я коснусь проблематики установки, загрузки, регистрации VxD-драйвера в системе и некоторые слабо документированные вопросы их реализации. Прежде всего – инструментарий. Как минимум, нам потребуется Microsoft Driver Development Kit (DDK). Он включает в себя набор файлов заголовков (*. h), библиотеки импорта системных модулей (*. lib), исходные тексты примеров, файлы справок и несколько специализированных утилит. Кроме того, потребуется компилятор языка C из пакета Microsoft Visual C/C++. Конечно, никто не мешает использовать и компиляторы других производителей, но тогда вам придётся самостоятельно создавать *. lib-файлы и довольно долго мучиться, чтобы *. h-файлы DDK транслировались без ругательств.

Необязательным, но очень полезным средством является отладчик уровня ядра системы. Отладчик, рекомендуемый фирмой Microsoft (WinDbg), я использовать не советую, очень уж он неудобен в работе. Лучше воспользоваться отладчиком SoftIce фирмы Numega Compuware, который обладает большими возможностями и устойчивостью в работе.

С чего начать?

Нужно почитать документацию из DDK и кратко уяснить себе, как работает ядро Windows вообще и драйвера (VxD) в частности. Так, VxD разделяются на два основных класса: загружаемые статически (static loadable) и динамически (dynamic loadable). Основное их отличие – в том, что статически загружаемые драйвера считываются в оперативную память при загрузке системы и остаются в ней до завершения работы Windows (во всяком случае, я не знаю способа принудительной выгрузки таких VxD). Динамически загружаемые драйвера считываются в оперативную память по мере необходимости, и при желании могут быть оттуда удалены.

Теперь разберёмся с классификацией устройств. Они могут быть Plug and Play (PnP) и т. н. legacy (“наследство” от более ранних ранних версий).

  • PnP-устройства автоматически распознаются и конфигурируются операционной системой при подключении, тогда как legacy-устройства нужно устанавливать и конфигурировать вручную. PnP-устройствами являются все USB и SCSI-устройства, модемы, мыши, стандартные порты СОМ и LPT, а также практически все современные ISA и PCI-платы.
  • Ну а всё остальное, что не может быть автоматически определено и сконфигурировано средствами Windows, относится к legacy-устройствам (нестандартные COM-порты и навешанное на них оборудование, старые ISA-платы, внешнее оборудование, не поддерживающее спецификацию PnP, а также драйвера, не работающие непосредственно с физическим оборудованием, например – TCP/IP стек).

Каждое устройство в системе представлено так называемым DevNode (совокупность данных, описывающая используемые ресурсы, точку входа в драйвер и некоторую дополнительную служебную информацию), а все известные системе устройства объединяются в DevNode Tree. При этом дерево (tree) устройств может иметь несколько уровней: например, имеется DevNode для драйвера шины PCI, у которого имеются дочерние DevNode для видеокарты и звуковой платы, подключенных к данной шине.

Ну и последнее замечание по классификации VxD: в Win9x определены три типа функциональных драйверов: загрузчики (loaders), перечислители (enumerators) и собственно драйверы (drivers). Device loader – практически всегда статический VxD, его назначение понятно из названия, это загрузка драйверов указанного типа. Обычно программисту нет необходимости писать свой загрузчик, можно воспользоваться одним из стандартных (*IOS – для драйверов файловой системы, *VCOMM – для последовательных и параллельных портов, *CONFIGMG – для PnP-устройств).

Enumerator – это штука, которая постоянно сидит в памяти и смотрит, не появилось ли новое известное ей PnP-устройство. Или не делось ли куда-нибудь существовавшее ранее. В этих ситуациях enumerator (посредством *CONFIGMG – который, по совместительству, является ещё и конфигуратором PnP-устройств) загружает или выгружает соответствующий драйвер устройства. Device driver – VxD, который и занимается непосредственно обслуживанием оборудования. Драйвер устройства может быть как статическим, так и динамическим (в последнем случае он загружается по запросу от enumerator’a, прикладной программы или любого другого VxD). С остальной теорией можно разобраться самостоятельно, прочитав документацию из DDK. Поэтому переходим к практике!

Вряд ли вам придется писать драйвер для устройства, вставляемого в штатный ISA или PCI-слот компьютера – обычно такие платы поддерживаются производителями оборудования на достаточно приличном уровне. Скорее всего, к вам в руки попадет нечто, подключаемое к СОМ или LPT-порту, да к тому же и не поддерживающее спецификацию PnP. Поэтому основной задачей будет:

  • написание процедуры корректной установки драйвера, с “менюшками”, и “чтобы был виден в менеджере устройств”;определение всех имеющихся в
  • системе портов СОМ и LPT (зачем озадачивать пользователя лишними вопросами при установке драйвера?);
  • корректное определение наличия на указанном порту именно вашего устройства (представляете, как здорово, если в момент опроса портов полностью
  • накрывается мышь или принтер перестает печатать);
  • корректный захват и освобождение ресурсов, необходимых для функционирования вашего устройства.

Шаг первый – установка драйвера. Как мы уже выяснили, драйвера могут быть статическими и динамическими. Для загрузки статических драйверов их можно прописать в секции [386Enh] файла SYSTEM. INI. Но этот метод устарел и оставлен, фактически, только для совместимости со старыми версиями Windows (единственное исключение – драйвера, загрузка которых должна производиться еще до перевода процессора в защищённый режим работы – например, для обращения к real mode функциям BIOS).

Вторым (предпочтительным) способом является записывание информации в registry, в ветку HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDИМЯ_УСТРОЙСТВА, где значение ИМЯ_УСТРОЙСТВА может быть произвольным (на ваш вкус). В этой ветке должна находиться переменная типа REG_SZ с именем StaticVxD и со значением, содержащим имя вашего VxD-драйвера. Если файл располагается в директории %SystemRoot%SYSTEM, то можно указать только его имя, в противном случае обязательно прописать полный путь. Кроме того, в этой же ветке нужно создать переменную Start типа REG_BINARY со значением, равным 0. В принципе, переменная Start предназначена только для совместимости с последующими версиями Windows.

При старте система сканирует ветвь HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxD и загружает все описанные в ней VxD. Создать запись в registry можно как функциями Win32 API, так и через секцию REGISTRY *. INF-файла (подробнее об *. INF-файлах читайте в DDK). Естественно, драйвер будет активизирован только после выполнения перезагрузки системы, так что не забудьте сообщить об этом пользователю в финале вашей программы установки. Hint: для загрузки VxD, использующих в качестве Device loader *IOS, можно просто переписать ваш VxD в директорию %SystemRoot%SYSTEMIOSUBSYS и установить расширение файла *. VXD или *. MPD. Но использование статически загружаемых драйверов без особой необходимости не оправдано, так как ведет к повышенному расходу оперативной памяти, которой никогда не бывает много.

Поэтому предпочтителен второй вариант – использование динамически загружаемых VxD. Если ваше устройство не поддерживает спецификацию PnP, оно по определению является legacy. Для legacy-устройств ядро Windows предоставляет некий эмулятор enumerator, который загружает все драйвера, которые описаны в registry в ветке HKEY_LOCAL_MACHINEEnumRoot. Фактически, для того, чтобы ваше не-PnP устройство стало аналогом PnP – нужно загрузить написанный вами VxD-enumerator, который и будет, при необходимости, заниматься загрузкой и выгрузкой непосредственно драйвера физического устройства. Кстати, по этой же причине enumerator и драйвер выполняют обычно в виде двух различных VxD (т. к. enumerator находится в оперативной памяти постоянно, а драйвер устройства подгружается по мере необходимости).

  • Итак, для установки написанного вами enumerator’a нужно задать минимальную информацию о нем в registry – например, в ветке HKEY LOCAL MACHINEEnumRootИМЯ_УСТРОЙСТВА00, где в качестве ИМЯ_УСТРОЙСТВА может быть любая строка (например, имя вашего enumerator’a), а 0000 означает, что это первое логическое устройство (а зачем нужно больше?).

Из минимально необходимой информации необходимо в эту ветку записать следующие переменные (все значения имеют тип REG_SZ): HardwareID=ИДЕНТИФИКАТОР_УСТРОЙСТВА Class=КЛАСС_УСТРОЙСТВА infName=ИМЯ_ФАЙЛА. INF где ИДЕНТИФИКАТОР_УСТРОЙСТВА – любой выбранный вами идентификатор устройства (должен совпадать со значением HardwareID в соответствующей секции INF-файла), КЛАСС_УСТРОЙСТВА – класс вашего устройства (например, “Unknown”). В этой категории ваше устройство будет отображаться в окне Device Manager. ИМЯ_ФАЙЛА. INF – имя INF-файла для вашего драйвера (без пути). Всё это можно записать в registry стандартными средствами API Win32 (прямо в вашей программе установки).

Вот, в принципе, и всё. После перезагрузки системы появится сообщение Windows “обнаружено новое устройство и идет поиск программного обеспечения для него”, дальше предложат вставить диск от производителя оборудования – и установка драйвера продолжится в обычном режиме. Возникает вопрос: а можно ли обойтись без перезагрузки системы? Оказывается – можно! Хотя наше устройство и является legacy, но сама Windows эмулирует его как PnP. В принципе, можно просто войти в Device Manager и на закладке, на которой находится device tree нажать кнопку Refresh (Обновить), и последствия будут такие же, как и после перезагрузки системы. А еще лучше – попросить *CONFIGMG (именно он занимается конфигурированием PnP-устройств) проверить все устройства (в т. ч. и вновь появившиеся в системе). Для этого после записи информации в registry вызовем функцию ReenumerateDevices().

Теперь рассмотрим некоторые неочевидные вещи. С установкой драйвера мы, вроде бы, разобрались. Для написания самого драйвера можно позаимствовать готовый скелет из примеров DDK. А здесь лучше рассказать о некоторых вещах, на уяснение которых мною было потрачено довольно много времени. Одна из таких нетривиальных задач – определить все имеющиеся в системе СОМ и LPT порты, не запрашивая у пользователя никакой дополнительной информации. И, поскольку с этим оборудованием мы потом будем работать напрямую (минуя штатные драйвера) – нужно узнать ещё и аппаратные характеристики устройств. Не факт, что устройство “СОМ1” будет обязательно иметь базовый адрес 0x3F8 и использовать IRQ4. Кроме того, в компьютере может быть установлена плата расширения портов, об особенностях которой мы можем не знать. К сожалению, в Win9x нет штатных средств для определения количества и имён СОМ-портов, имеющихся в системе.

Нумерация портов не обязательно будет сквозной, в системе могут быть, например, “СОМ1”, “СОМ7″и”СОМ18”. Да и вообще, последовательные порты не обязаны называться “COMx”, а параллельные “LPTx”. В принципе, имена портов могут быть абсолютно произвольными.

Для решения этой задачи воспользуемся тем обстоятельством, что все устройства в системе упорядочены в виде дерева устройств (DevNode tree). Кроме того, для любого последовательного и параллельного порта штатным перечислителем (enumerator) является драйвер *VCOMM, интерфейс к которому документирован в DDK. Так как количество портов в системе может быть разным, выделять память для хранения информации о них в виде статического массива не стоит – лучше воспользоваться средствами, предоставляемыми для VxD ядром системы (т. н. сервисные функции VMM).

Затем, когда мы уже имеем список всех физических портов, известных системе, нам остаётся определить, к какому из них подключено наше внешнее оборудование. И определить, по-возможности, в “горячем” режиме, так как пользователь может подключить и отключить наше оборудование без выключения питания компьютера и без перезагрузки системы. Конечно, в качестве лобового способа можно использовать опрос по событиям таймера, запрещая на время опроса прерывания командой CLI и разрешая их потом командой STI (т. к. VxD выполняются на уровне ядра – команды CLI/STI выполняются непосредственно процессором, а не эмулируются операционной системой). Но такая тактика может привести к потерям прерываний от других устройств, да и быстродействие системы от этого не улучшится.

С другой стороны, мы не должны получать доступ к аппаратным ресурсам в “любой понравившийся нам момент времени” – не исключено, что с данным портом уже кто-нибудь работает, и мы можем ему просто помешать. Для решения этой проблемы VCOMM предлагает механизм, называемый contention handler. Его идея заключается в том, что если нам нужны физические ресурсы, управляемые другим драйвером (в данном случае – драйвером последовательного или параллельного порта), то мы обращаемся в точку входа contention handler с запросом на захват ресурса. Ресурс нам могут дать, а могут и не дать. Если ресурс нам выдали – мы его можем использовать совершенно свободно, а после завершения использования снова вызвать contention handler и освободить его. Ну а уж если ресурс недоступен, то делать нечего, придётся подождать и повторить попытку захвата на следующем цикле проверки. Кстати, если мы получили ресурс “во временное пользование”, то другой драйвер также может попытаться его запросить. При этом будет вызвана наша callback-функция, в которой мы и решим – отдать ресурс, или он нам ещё нужен для эксклюзивного использования.

К сожалению, в этой бочке меда имеется и пара ложек дегтя. Во-первых, contention handler не поддерживает более двух запросов одновременно. Т. е. если наш драйвер выполнил запрос ресурса, который уже кем-то использовался, то этот ресурс у нас уже никто не сможет отобрать, пока мы не вернем его добровольно. А во-вторых, и это самое неприятное, contention handler некорректно реализован в стандартном драйвере последовательного порта. Мало того, что ни мышь, ни уже открытый какой-либо прикладной программой COM-порт никогда не отдаст свой ресурс нашему драйверу, так еще и в случае, когда мы корректно захватили и затем корректно освободили COM-ресурс, операционная система останется в нестабильном состоянии!

Кроме того, callback-функция, отвечающая за перехват ресурса у нашего драйвера будет просто игнорировать возвращаемое нами значение: “уведомили – и ладно, ресурс отберем безусловно”. Исходя из вышесказанного, использовать contention handler для последовательных портов категорически не рекомендуется (во всяком случае, я потратил несколько дней на изучение исходников в DDK и трассировку обработчика средствами SoftIce – и подходящего решения так и не нашел).

Ну что, заработало ваше устройство? Довольны? Ах, на “зелёных” материнских платах ваш драйвер либо вообще не работает, либо работает минуты три, а потом обмен с вашим устройством прекращается без объяснения причин? В принципе, эта ерунда впервые появилась в Windows 98 (в Windows 95 поддержка ACPI реализована в минимальном объеме и не мешает жить системному программисту). Дело в том, что при захвате ресурса посредством обращения к contention handler (и уж тем более, если вы захватываете его “нелегально”, между командами CLI/STI), никто и не думает переводить порт из “спящего” режима в “рабочий”. Короче говоря, на нем просто отсутствует напряжение питания! Кстати, это относится как к последовательным, так и к параллельным портам (особенно, если они интегрированы на “зелёной” материнской плате). Вы знаете, как включать/выключать питание порту? Лично я – не знаю.

А вот небезызвестный нам CONFIGMG – знает (интересно, откуда?). Можно обратиться к нему за помощью. В принципе, сохранять исходное состояние напряжения питания и восстанавливать его по окончании использования ресурсов абсолютно не обязательно, это делается исключительно для обеспечения”корректности”по отношению к другому драйверу, работающему с этим же устройством. Как говорится, “не делай другому того, чего не желаешь себе“.

Вообще, использование этого принципа при написании драйверов очень положительно влияет на совместимость с другим аппаратным и программным обеспечением. Ну вот, в общем, и всё, что я хотел рассказать. Вооружайтесь отладчиком, изучайте ядро системы, смотрите примеры из DDK. И всё равно, даже будучи подготовленными морально, когда перейдёте к написанию драйверов под платформу Windows NT, будете плеваться и вспоминать недобрым тихим словом славную фирму Microsoft – за её реализацию VxD под Windows

  • Remove From My Forums
  • Question

  • I am using Vista Premium on a brand new Dell computer and I ran the Reliability and Performance Monitor. The following messages appeared:

    A device has a configuration problem that prevents it from working properly. The device, Microsoft Tun Miniport Adaptor, is reporting «tv_ConfigMgrErr19». This device will not be available untill the issue is resolved. The Plug and Play ID for this device is 5.

    A second error message is the same as the first except it ends with: The Plug and Play ID for this device is ROOT*TUNMP000

    I can’t really find anything on the internet about this problem.

    My computer basically seems to be running fine except the Program Updates gave me a Error# -5 before it ran and Roxio Creator DE is not working at all.

    Any ideas?

такая вот проблема при попытке выключения ПК через «пуск» выпадает синий экран На экране следующая надпись

Windows

Ошибка ОЕ по адресу 0028:C14554FB в VXD SNAPMAN(01)+0000E0FB

прложение будет снято.

нажмите любую клавишу

нажимаем клавишу и всё, рабочий стол зелёным цветом(стандарт цвет ) без каких либо значков, иконок и т.д.

и больше не реагирует ни на ,что

для выключения выдёргиваем вилку с розетки

Винда 98

нашёл я VXD это параметр реестра, а дольше что не знаю

други помогите срочно

Всем кто ответит заранее спасибо! :blink:

Проблема загрузки драйвера Vxd

Установили программное обеспечение с диска

ЗАО «Л-Кард», 2000г.(Каталог ..DLLNEW)

Выполнен 32bit Lsetup из Control Panel для платы L-1221 с настройками: IRQ 11, Base I/O address 300

Length 10.

Запуск тестового примера L1221dsk.exe приводит

к выдаче сообщения  «Can`t load Vxd».

Тест производился в win98 sec.edit. на ПК с

процессором Pentium II. В BIOS Setup в меню PCI … напротив IRQ11 выбран режим аналогичный ‘Legasy ISA’.

При использовании ПО под DOS тест платы проходит

успешно.

Помогите устранить проблему. Заранее благодарен.

  • Ответить
Сотрудник «Л Кард»
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема загрузки драйвера Vxd

Смотрите в Устройствах — кто-то еще использует это прерывание.

  • Ответить

Re: Проблема загрузки драйвера Vxd

После устранения конфликтов устройств по IRQ

появилось новое сообщение  «Can`t load BIOS».

Тестовый пример под DOS  выдает аналогичное сообщение.

Что Вы посоветуете?

  • Ответить
Сотрудник «Л Кард»
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема загрузки драйвера Vxd

проверить базовый адрес платы

  • Ответить

Re: Проблема загрузки драйвера Vxd

Плата АЦП L-1221 на шине ISA материнки SOLTEK SL-65KV2-T с интегрированной звуковой картой. ОС Windows 98 SE.

Для всех рекомендуемых IRQ 10,11,12,15

драйвер платы выдает сообщение «Can`t load Vxd».


Ниже приведен список задействованных IRQ в системе:

0    Системный таймер

1    Стандартная клавиатура 101/102 или Microsoft Natural

2    Программируемый контроллер прерываний

3    Последовательный порт (COM2)

4    Последовательный порт (COM1)

5    Универсальный хост-контроллер VIA Tech 3038 PCI — USB

5    Универсальный хост-контроллер VIA Tech 3038 PCI — USB

5    Владелец ACPI IRQ для управления PCI IRQ

6    Стандартный контроллер гибких дисков

7    Порт принтера (LPT1)

8    CMOS и часы

9    SCI IRQ для шины ACPI

10    VIA AC/’97 Audio Controller (WDM)

10    Владелец ACPI IRQ для управления PCI IRQ

11    ASUS AGP-V3800PRO v3.75

11    Владелец ACPI IRQ для управления PCI IRQ

12    PS/2-совместимый порт для мыши

13    Сопроцессор

14    Основной контроллер IDE (два буфера fifo)

14    Контроллер VIA Bus Master PCI IDE

15    Дополнительный контроллер IDE (два буфера fifo)

15    Контроллер VIA Bus Master PCI IDE

Подскажите, как исключить конфликт системных устройств с платой АЦП?

  • Ответить
Сотрудник «Л Кард»
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема загрузки драйвера Vxd

Выключить ACPI. Сказать для конкретного прерывания в биосе компа что  оно для Legasy ISA устройства.

  • Ответить

Re: Проблема загрузки драйвера Vxd

Большое спасибо за совет.

Теперь плата в Windows 98 SE работает нормально.

Но Windows XP Home Edition, которая установлена на

этом же ПК второй операционной системой, отказывается загружаться.

Подскажите, как «оживить» Windows XP?

  • Ответить
Сотрудник «Л Кард»
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема загрузки драйвера Vxd

Вернуть все обратно — загрузится в ХР и в ней тоже отлючить ACPI.

  • Ответить

Re: Проблема загрузки драйвера Vxd

Большое спасибо за предыдущий совет.

Windows XP заработала.

Но возникла следующая проблема:

Под Windows XP Home Edition установил

{согласно рекомендациям по созданию

дистрибутива для Windows NT/2000)

и настроил драйвер VXD:

Плата L-1221;Базовый адрес 300;IRQ 11.

Драйвер платы выдает сообщение «Can`t load Vxd».

Проверил список IRQ задействованных в системе XP,

но IRQ 11 не обнаружил.

Под Windows 98 SE по прежнему плата работает нормально.

Подскажите, как заставить работать плату под Windows XP.

  • Ответить
Сотрудник «Л Кард»
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема загрузки драйвера Vxd

Под XP надо ставить Sys драйвер а не Vxd.

  • Ответить

Re: Проблема загрузки драйвера Vxd

Находясь в ОС Windows XP

вставил фирменный CD, прилагаемый к плате L-1221.

Перешел в каталог DLL//NEW//

и запустил setup.exe

В конце инсталляции появилось окно L-Card Configuration Utility

где указал тип платы L-1221, базовый адрес 300, IRQ 11

Нажал Apply и выполнил перезагрузку компьютера.

Затем перешел в каталог с установленным ПО

d://L-Card//Library//L1221.dsk// и запустил файл L1221dsk.exe

На экран появилось сообщение «Cannot load VxD».

Как устранить указанное выше сообщение в Windows XP?

  • Ответить
Сотрудник «Л Кард»
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема загрузки драйвера Vxd

Это значит что 11 прерывание уже занято. В биосе компа надо поставить для 11 прерывания Legasy ISA.

  • Ответить

Re: Проблема загрузки драйвера Vxd

Дело в том, что на момент написания предыдущего вопроса

в BIOS уже стояли следующие параметры:

IRQ-11 assigned to -> Legacy ISA

ACPI function -> Disabled

В L-Card Configuration Utility в XP

указан тип платы L-1221, базовый адрес 300,IRQ 11

Повторюсь, что в списке IRQ задействованных в ОС Windows XP IRQ 11 отсутствует:

IRQ 0    System timer                                     OK

IRQ 1    PC/AT Enhanced PS/2 Keyboard (101/102-Key)     OK

IRQ 3    Communications Port (COM2)                     OK

IRQ 4    Communications Port (COM1)                     OK

IRQ 5    NVIDIA RIVA TNT2                             OK

IRQ 6    Standard floppy disk controller                     OK

IRQ 8    System CMOS/real time clock                     OK

IRQ 9    VIA Rev 5 or later USB Universal Host Controller OK

IRQ 9    VIA Rev 5 or later USB Universal Host Controller OK

IRQ 10    VIA AC/’97 Audio Controller (WDM)             OK

IRQ 10    Intel(R) PRO/100 S Desktop Adapter             OK

IRQ 12    Microsoft PS/2 Mouse                             OK

IRQ 13    Numeric data processor                             OK

IRQ 14    Primary IDE Channel                             OK

IRQ 15    Secondary IDE Channel                             OK

Однако тестовый пример L1221dsk.exe в Windows XP продолжает упрямо выдавать сообщение «Cannot load VxD».

Тогда как в Windows 98 SE пример работает корректно,и в списке IRQ задействованных системой напротив IRQ 11 стоит свободно.

В чем же тогда причина, может быть под XP нужны новые драйвера?

Файлы установленные в XP имеют следующие атрибуты:

ldevisa.sys —  32464  11.10.2001 11:54 (в //SYSTEM32//DRIVERS)

ldevpci.sys —  26688  29.03.2001 10:48 (в //SYSTEM32//DRIVERS)

pcicfg.sys —   6112   08.12.1999 15:45 (в //SYSTEM32//DRIVERS)

vxdapi.dll —   94208  08.02.2001 13:16 (в //SYSTEM32)

lcardstp.cpl — 257024 14.02.2001 15:04 (в //SYSTEM32)

pci780.inf —   1615   14.02.2001 15:05 (в //INF)

  • Ответить
Сотрудник «Л Кард»
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема загрузки драйвера Vxd

Не знаю. ООфициально XP драйверами не поддерживается пока. ТОлько 98/NT/2000.

  • Ответить

Re: Проблема загрузки драйвера Vxd

Помогите!!! Не могу установить контроллер

VIA Tech 3038 PCI-USB! Где взять драйвер?

  • Ответить
Сотрудник «Л Кард»
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблема загрузки драйвера Vxd

на сайте Via…

  • Ответить

Re: Проблема загрузки драйвера Vxd

Люди, недавно поставил WinXP и проинсталировал с оригинального диска VIA Service Pack для материнской платы, но после вылезает табличка Found New Hardware, Please insert disk in the cd-rom и т.д. после того как вставил CD, эта Hardware Wizard не может найти информацию About new Hardware. И далее ничего не выходит. VIA Bus Master IDE Drivers не работают и я не могу их запустить. Пробовал переинсталировать и та же история. Знаю, что в этот пакет входит Vxd драйвер и ещё 3 драйвера, которые отвечают за Power Management и у меня сейчас комп сам не вырубается, подозреваю что проблема в этом. Если кто что знает напишите

  • Ответить

Re: Проблема загрузки драйвера Vxd

Снеси винду, поставь фри smile

А если серьезно, качни новую версию дров и попробуй поставить их. Кроме того, насколько я знаю VIA (равно как и nVidia), у них на дисках все лежит в инсталляторах, так что поищи временную папку на винте и натрави мастера на эту папку. Как правило, этих танцев с бубном не требуется, когда дрова довольно свежие и винда без второго пака.

  • Ответить

Re: Проблема загрузки драйвера Vxd

Просто не ставь IDE дрова для материнской платы. В WinXP итак все нормально особенно в SP2 (там других глюков навалом smile). А чтобы вырубался сам нужно включить ACPI в биосе (но после этого возможно придется помучиться с XP).

  • Ответить

Re: Проблема загрузки драйвера Vxd

при попытке проверки диска(служебная программа) появляется сообщение о недостаточности памяти.Из панели управления(система)ссылка на драйверы PCI.VXD и PCIMP.PCI.Обновление не даёт результата.Отсылает к разработчику bios. Что сделать чтобы к нему не обращаться и ком заработал.

  • Ответить

Быстрый ответ

← Вернуться в раздел «Microsoft Windows»

AvRUS

Цитата:

VxD — мастдайный анахронизм, не использующийся в XP.

Точно, это драйверы виртуальных устройств, которые закончили свое существованием с Win 98/Me. В XP применяется иная технология.

Какое событие предшествовало поломке? (Установка чего то, или может забралась какая то зараза).

Восстановить реестр можно, если не отключена служба восстановления системы. В этом случае в папке «System Volume Information» хранятся упакованные файлы реестра (в snapshot). Папка пополняется новыми снимками во время создания точки восстановления системы. Чтобы в нее залезть, нужно сначала разрешить доступ. Удобнее всего восстанавливать с помощью инструментов восстановления системы, чем вручную. Для этого нужно выяснить есть ли эти самые контрольные точки восстановления, и какая их них самая свежая, не содержащая поломок.

Автор: copsmith
Дата сообщения: 21.08.2008 14:06

AvRUS
Попробуй добавить виртуальной памяти в Мой компьютер (Свойства и далее до Быстродействия…).
И почисть реестр каким-то чистильщиком.

Автор: AvRUS
Дата сообщения: 22.08.2008 01:55

Sish
Я думаю началось после обновления Windows какого именно не помню
SHANDLE
служба восстановления системы отключена давно.DrWeb ругался только на antiwpa.dll а nod32 удалил пару троянов.
copsmith
Увеличил виртуальную память до 2500mb.Чистил реестр Reg Organizer,TuneUp Utilities 2008,Norton WinDoctor 2007 с настройками по умолчанию.

Мне тут предлагают заменить C:WINDOWSsystem32configsystem на C:WINDOWSrepairsystem -это поможет?

Автор: SHANDLE
Дата сообщения: 22.08.2008 05:26

AvRUS

Цитата:

Мне тут предлагают заменить C:WINDOWSsystem32configsystem на C:WINDOWSrepairsystem -это поможет?

Там реестр сразу после установки системы (Ветка HKLMSYSTEM). В ней все железяки живут. Можешь попытаться, но ещё раз говорю, XP не пользуется драйверами для железок в виде VxD. Я так думаю, что более вероятнее это какая то зараза. Они сейчас умею очень глубоко вгрызаться в систему. А оригинальный C:WINDOWSsystem32configsystem
не забудь где нибудь зарезервировать. Он обычно значительно больше, чем второй. В том самая малость.

Зря отключена служба восстановления. У меня месяца три назад был похожий случай. Касперский прибил какую то заразу на компьютере моего клиента. XP перестала работать. В процессе загрузки происходит смертельный сбой и очередная безуспешная перезагрузка.
Все попытки восстановления оказались безуспешными. Спасли снимки реестра в «System Volume Information» за пару недель до этой беды. Вручную их перекинул, все заработало. Незначительная кривизна проявилась, но легко исправилась.

Добавлено:
Или ещё очень трудоемкий вариант:
из repairsystem скопировать файл куда нибудь, и эту копию загрузить как куст. CD/DVD в нем сконфигурированы. Трудоемкость заключается в том, чтобы отыскать эти конфигурации и сравнить чем они отличаются от существующих.
Сделать это можно и моим regshot-ом, сделать сначала снимок configsystem , потом repairsystem, и сравнить их. Но от обилия информации будет рябить в глазах.

Автор: shakerru
Дата сообщения: 23.08.2008 07:46

Автор: AvRUS
Дата сообщения: 23.08.2008 14:09

Цитата:

Перестали отображатся DVD и CD-ROM дисководы как физический так и виртуальный.В диспетчере устройств такая ошибка:Windows не удалось запустить это устройство, поскольку информация о его конфигурации в реестре неполна или повреждена. (Код 19).В сведениях о системе такая ошибка:Ошибка использования загрузчика VxD.

Проблему решил путём удаления параметров UpperFilters и LowerFilters в HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E965-E325-11CE-BFC1-08002BE10318}

Автор: mihas83
Дата сообщения: 31.08.2008 07:10

После очередного запуска regedit он заходит в ту ветку, где ты последний раз был.
На одной из машин regedit после очередного запуска »не помнит» последнего своего местонахождения и всегда открывается в корне…

Как поправить?

Автор: trigliff
Дата сообщения: 01.09.2008 18:35

mihas83, возможно закрыт доступ на запись
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionAppletsRegedit
или кто-то удаляетменяет этот ключ.

Автор: Sish
Дата сообщения: 02.09.2008 07:10

mihas83

Цитата:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionAppletsRegedit\LastKey

При очередном запуске программы Regedit, дерево разделов откроется в том месте, которое будет указано в значении данного параметра. Если Вы хотите, чтобы программа открывалась на верхней строчке «Мой компьютер», удалите значение данного параметра.

Автор: mihas83
Дата сообщения: 02.09.2008 07:20

Цитата:

Sish

, oткуда цитируешь?

Добавлено:
В ветке HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionApplets
на машине без проблемы, описанной мной
вообще нет Regedit…

Добавлено:
Пардон. На еще одной машине LastKey прописывается нормально…

Автор: Sish
Дата сообщения: 02.09.2008 08:44

mihas83

Цитата:

oткуда цитируешь?

Отсюда, вестимо

Автор: Valdon
Дата сообщения: 07.09.2008 15:01

Кто подскажет как с помощью REG ADD добавить пустое значение в конец строки для типа данных REG_MULTI_SZ ? Например, через *.reg-файл это будет выглядеть так:
Код: REGEDIT4
[HKEY_LOCAL_MACHINESoftwareMyCo]
«MyValue»=hex(7):01,00,00,00

Автор: SHANDLE
Дата сообщения: 07.09.2008 19:05

Valdon

Цитата:

Кто подскажет как с помощью REG ADD добавить пустое значение в конец строки для типа данных REG_MULTI_SZ ?

REG_MULTI_SZ не может содержать пустых строк, ни в конце, ни в середине.
Пустая строка означает конец REG_MULTI_SZ.

Автор: Valdon
Дата сообщения: 07.09.2008 19:20

SHANDLE, через *.reg пустая строка спокойно добавляется в REG_MULTI_SZ . Надо это для определенного твика. Приходится извращаться через *.reg или в ручную через regedit.exe. Хотелосьбы через REG ADD, но видимо такое невозможно….

А можно ли както, стандратными средствами ХРюши из bat’ника прочитать значение реестра REG_MULTI_SZ в двоичном виде?

Автор: SHANDLE
Дата сообщения: 07.09.2008 21:27

Valdon
С помощью WinAPI в реестр можно засандалить любые данные любого типа. Мне, кстатит, удалось откопать в своем реестре данные некого не документированного типа.
Специфика REG_MULTI_SZ в том, что это набор текстовых строк. 01 не является кодом какого то текстового символа. Признаком конца строки является 0. Признаком конца блока является пустая строка. Алгоритмы разбора текстового блока как правило прекращают разбор, как только встретится сначала один 0 (конец строки), а потом второй 0 (пустая строка). Так что третий ноль в твоем примере — лишний, до него дело не дойдет.

Автор: Valdon
Дата сообщения: 08.09.2008 07:32

SHANDLE, дам пример для наглядности:
Код: REG ADD «HKLMSYSTEMCurrentControlSetControlSession Manager» /v PendingFileRenameOperations /t REG_MULTI_SZ /d ??%SystemRoot%system32myfile.dll /f

Автор: SHANDLE
Дата сообщения: 08.09.2008 11:00

Valdon
Возможно, что удаление файлов из системной директории — это ответственная операция и имеет повышенные риски с точки зрения безопасности, поэтому и наюлюдается некое отступление от стандартов.
Попробуйте сразу дополнить параметр пустыми строками:
??%SystemRoot%system32myfile.dll /f

Добавлено:

Цитата:

??%SystemRoot%system32myfile.dll /f

А параметр то правильно записан?
??%SystemRoot%system32myfile.dll /f
Может нужно так
\?%SystemRoot%system32myfile.dll /f

Из MSDN: правила именования файлов
D:<256 chars>NULL
Однако, для UNICODE функций WINAPI может быть использован префикс \?

Цитата:

The Unicode versions of several functions permit a maximum path length of approximately 32,000 characters composed of components up to 255 characters in length. To specify that kind of path, use the «\?» prefix.
\?D:<path>

Зарезервированные имена:

Цитата:

Do not use the following reserved device names for the name of a file: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. Also avoid these names followed by an extension, for example, NUL.tx7.

Автор: Valdon
Дата сообщения: 08.09.2008 12:58

SHANDLE, пробовал по разному, через REG ADD никак невыходит без ручного добавления пустой строки в конце…. Лично проверял файлы на предмет удаления! Можешь сам попробовать (удалить/переименовать) любой файл. Строка батника, указаная выше проверена мной на практике…

У кого получится через REG ADD добавить в конец значения пустую строку отпишитесь сдесь плиззз!!!!

ЗЫ: ща опробую твой вариант!

Автор: SHANDLE
Дата сообщения: 08.09.2008 13:48

Valdon
Похоже, что reg четко следует описанным выше правилам. Он автоматически добавляет пустую строку для завершения блока. На лишние пустые строки в конце заявляет «ошибка в командной строке». Т.е. отказ происходит на этапе разбора командной строки.

Варианты:
Попробуй REG IMPORT file.reg
Попробуй REG ADD /t REG_BINARY. Вдруг сработает, а на binary таких ограничений нет.

Автор: Drazil
Дата сообщения: 08.09.2008 22:31

Уважаемые Гуру!
Подскажите где копать.
Такая ситуация Комп работает всё нормально.
Только когда заходишь в реестр и запускаешь поиск, машина умерла загрузка проца 100%.
Что с этим делать не знаю.

Автор: Sish
Дата сообщения: 09.09.2008 07:04

Drazil
А какое железо (проц, объём ОЗУ) и винда у тебя?

Автор: SHANDLE
Дата сообщения: 09.09.2008 07:24

Drazil
Компутер точно с одним процессором. В принципе, нормальное явление для regedit, может понадобиться несколько минут чтобы обшарить весь реестр. Попробуй дождаться. Или выбери поиск того, что часто встречается и быстро находится (например, txtfile).

Автор: Drazil
Дата сообщения: 10.09.2008 09:45

Проц 2,5 dual core 2Гб памяти, Windows XP.
Размер файла реестра 75 метров.
Чтобы дождаться надо ждать где то 1час терпения не хватает.

Автор: SHANDLE
Дата сообщения: 10.09.2008 10:35

Drazil

Цитата:

где то 1час

Это действительно много. При сходной геометрии (P4 3.2 HT, 2 Гб, XP), больше чем на пару минут в спячку не впадал при загрузке 50%.
А как насчет антивирусов, защиты реестра, мониторинга реестра, сторонних утилит?

Цитата:

Проц 2,5 dual core

Т.е. двухядерный? Тогда regedit не должен грузить больше чем на 50%.
Есть такая утилита Process Explorer Марка Русиновича. Попробуй с её помощью выяснить какие процессы «помогают» regedit.

Автор: Drazil
Дата сообщения: 10.09.2008 10:59

Да загружает на 50% но тормоза жуткие пока от дуплится пару минут ждать надо
поставил программку Process Explorer он показывает что только regedit занимает 50%

Автор: NORIO
Дата сообщения: 13.09.2008 21:35

Можно ли восстановить реестр затиранием рабочих файлов реестра резервной копией (сделанной простым копированием файлов)?

Получится ли таким простым способом восстановить реестр так что бы это невызвало никакого нарушения работы системы, или есть что то не очевидное?

(Допустим, я не буду устанавливать всякие драйверы после бекапа.)

Если всё это возможно то в каких файлах содержится реестр и где находятся эти файлы?

ps есть вторая операционка на другом диске восстановить реестр я смогу из неё
pps вопрос про реестр в Win XP

Автор: PMRaven666
Дата сообщения: 14.09.2008 14:29

Drazil
попробуй другой программой, например Registry Workshop

Автор: Sish
Дата сообщения: 15.09.2008 07:11

NORIO
Можно попробовать. Гарантий, естественно, никаких, весьма желательно предварительно сделать бэкап и всё это производить из-под LiveCD.

Цитата:

в каких файлах содержится реестр и где находятся эти файлы?

%windir%system32config

Автор: MIHMIH007
Дата сообщения: 15.09.2008 09:23

народ подскажите плиз можно ли сделать как нить батник или файл реестра чтобы на любой виндеXP менялось автоматически значение по этой ветке HKEY_USERSS-1-5-21-1078081533-1450960922-839522115-1003Control PanelInternational дело в том что ветка S-1-5-21-1078081533-1450960922-839522115-1003 на кадой винде по разному называется…..(((

Автор: Sish
Дата сообщения: 15.09.2008 09:28

MIHMIH007
HKEY_USERS — зеркало HKCU

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

Предыдущая тема: Интернет тупит


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель — сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.

Понравилась статья? Поделить с друзьями:
  • Ошибка использование удаленной функции
  • Ошибка использование неинициализированной памяти c
  • Ошибка использование маркированного товара недоступно эвотор
  • Ошибка исполняемый файл для отладки не существует
  • Ошибка исполнителя уголовное право