S>Ну не такое уж это пустое занятие (настройка ужасного VC++ 6.0) Совершенно не нужно >глядеть в мейкфайлы. Если хочется сваять нативный VCшный проект, то нужно собрать при
А зачем? Для крупных проектов BUILD как раз удобнее, чем билдование из VC++. Насчет .NET и Шарпа — не знаю, но для unmanaged coda — так точно.
VC++ный проект имеет смысл использовать только тогда, когда часть кода ваяется визардами.
>сначала пробовал не build.exe а ddkbuild.bat. Но как мне теперь свою минимальную прогу >скомпилить, так наврядли получиться, потому что там кроме .c и .h файлов необходимы и >разные другие (*.mk, *.rc, ...)
Элементарно. .rc указывается во фразе SOURCES= вперемежку с .C и .CPP
Что касается .mc — то там надо еще второй мейкфайл, в котором будет командная строка для message compiler. В одном из DDKшных сэмплов это все точно было сделано.
Кстати, я не помню, чтоб VC++ умел билдовать .mc файлы.
Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>Кстати, я не помню, чтоб VC++ умел билдовать .mc файлы.
Ну, его можно запросто научить через Custom Build Step...
Здравствуйте, Maxim S. Shatskih, Вы писали:
S>>Ну не такое уж это пустое занятие (настройка ужасного VC++ 6.0) Совершенно не нужно >>глядеть в мейкфайлы. Если хочется сваять нативный VCшный проект, то нужно собрать при
MSS>А зачем? Для крупных проектов BUILD как раз удобнее, чем билдование из VC++. Насчет .NET и Шарпа — не знаю, но для unmanaged coda — так точно.
А затем, что мне иногда так просто удобней Естественно, имея готовый продукт, заточенный под build, перетачивать его под нативный VC-проект просто, чтобы было, бессмысленно, тем более что makefile-based проекты никто не отменял. Но начинать разработку нового модуля я предпочитаю в VC именно с нативным проектом, я уже наловчился, настраиваю его быстро, когда модуль "созреет", при помощи простых скриптов переношу его под build. Возможно не оптимальная, но удобная лично для меня схема.
А шарповые проекты билдом собираются, и ATL с MFC последних версий тоже, но требуется некоторая доработка напильником makefile.new.
MSS>VC++ный проект имеет смысл использовать только тогда, когда часть кода ваяется визардами.
На вкус и цвет... Замечания см. выше.
descrip -> SerialNumberOffset всегда равно 0 (HDD & USB), почему ? VendorIdOffset, ProductIdOffset, ProductRevisionOffset нормально. Это можно получить и так :
Но этого SPDRP_HARDWAREID, я так понимаю, недостаточно для уникальности (возможно могут быть два устройста с одинаковой такой строкой). Какие ещё плюс к этому можно добавить данные ? Может Cylinders, RawPropertiesLength ...
А usbview показывает iSerialNumber: 0x03 ,и для другой флешки 0x02.
GRO>> Я пробую перенести usbview в VC++ (что б отлаживать можно было, смотреть на ход программы). Обычная минимальная прога идёт нормально (взял пример WinBuild), а вот usbview выдаёт :
GRO>>Linking Executable — libchk\i386\usbview.exe for i386 GRO>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Parent@12 GRO>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Sibling@12 GRO>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Child@12 GRO>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_DevNode_Registry_PropertyA@24 GRO>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Locate_DevNodeA@12 GRO>>source\usbview.obj() : error LNK2001: unresolved external symbol __imp__InitCommonControls@0 GRO>>source\usbview.obj() : error LNK2001: unresolved external symbol __imp__ImageList_ReplaceIcon@12 GRO>>source\usbview.obj() : error LNK2001: unresolved external symbol __imp__ImageList_Create@20 GRO>>libchk\i386\usbview.exe() : error LNK1120: 8 unresolved externals
GRO>> Что нужно сделать ?
А>Выкинуть нафиг usbview из проекта. А>1. За основу взять только файл enum.c + код функции DriverNameToDeviceDesc из файла devnode.c А>2. Из функций энумирации выкинуть код который работает с ListView А>3. Для начала начни перенос с функции EnumerateHostControllers и потехоньку переноси все те функции которые теребуются А>4. Повторять перенос. А>
Сделал так. Всё почти также осталось, кроме трёх последних ошибок, и добавилось "unresolved external symbol _ConnectionStatuses". У меня весь код с объявлениями в одном файле. Как можно скомпилировать ?
Re[8]: Работа с WIN2KDDK (USB_DEVICE_DESCRIPTOR)
От:
Аноним
Дата:
21.08.05 07:07
Оценка:
Здравствуйте, GROWER, Вы писали:
GRO>>> Я пробую перенести usbview в VC++ (что б отлаживать можно было, смотреть на ход программы). Обычная минимальная прога идёт нормально (взял пример WinBuild), а вот usbview выдаёт :
GRO>>>Linking Executable — libchk\i386\usbview.exe for i386 GRO>>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Parent@12 GRO>>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Sibling@12 GRO>>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Child@12 GRO>>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_DevNode_Registry_PropertyA@24 GRO>>>source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Locate_DevNodeA@12 GRO>>>source\usbview.obj() : error LNK2001: unresolved external symbol __imp__InitCommonControls@0 GRO>>>source\usbview.obj() : error LNK2001: unresolved external symbol __imp__ImageList_ReplaceIcon@12 GRO>>>source\usbview.obj() : error LNK2001: unresolved external symbol __imp__ImageList_Create@20 GRO>>>libchk\i386\usbview.exe() : error LNK1120: 8 unresolved externals
GRO>>> Что нужно сделать ?
А>>Выкинуть нафиг usbview из проекта. А>>1. За основу взять только файл enum.c + код функции DriverNameToDeviceDesc из файла devnode.c А>>2. Из функций энумирации выкинуть код который работает с ListView А>>3. Для начала начни перенос с функции EnumerateHostControllers и потехоньку переноси все те функции которые теребуются А>>4. Повторять перенос. А>>
GRO> Сделал так. Всё почти также осталось, кроме трёх последних ошибок, и добавилось "unresolved external symbol _ConnectionStatuses". У меня весь код с объявлениями в одном файле. Как можно скомпилировать ?
Так помоему у тебя еще большие сложности с основами линковки програм. Если видишь что то типа
unresolved external symbol __imp__CM_Get_Child@12 то поищи в какой библиотеке она находится и подключи к проекту!!!
Ну а на счет ConnectionStatuses, что я могу сказать, ВНИМАТЕЛЬНО КОД usbview СМОТРИ!!!
в stringDescNodeTail->StringDescriptor храняться данные, где серийный номер начинаеться с индекса stringDescNodeTail->DescriptorIndex. Так вот, если индексация начинаеться с нуля, то для одной флешки индекс равен 2, и номер именно оттуда и начинается, а для другой DescriptorIndex == 3, но номер всё равно начинается с 2 ! т.е. там в [3] уже идет 0x00 (unicode). Как такое может быть и что можно с этим сделать ?