Здрасьте. Скажите пожалуйста, как настроить win2kddk (у меня VC++ 6.0, Windows2000prof), что б всё нормально компилировалось. Пытаюсь скомпилить usbview (все файлы из папки добавил в проект), — "C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE/common.ver (83): error RC2104 : undefined keyword or key name: VER_FILEFLAGSMASK". А когда удаляю из проекта файл usbview.rc, то куча ошибок (непонятные идентификаторы). Добавил в Tools -> Options -> Directories : D:\NTDDK\inc\ddk и D:\NTDDK\inc. Может не так надо , а как-то по другому ? Мне вообще надо получить USB_DEVICE_DESCRIPTOR что б узнать серийный номер флешки , может у кого-то код есть ... Пока я пробую скомпилить такой вот :
// #include <какие файлы надо подключать ?> ... (usb100.h, usbdi.h, wdm.h, usbdlib.h)
// при подключении куча ошибок в разных файлах
Здравствуйте, GROWER, Вы писали:
GRO>Здрасьте. Скажите пожалуйста, как настроить win2kddk (у меня VC++ 6.0, Windows2000prof), что б всё нормально компилировалось.
Оставить это пустое занятие (настройка ужасного VC++ 6.0) и использовать DDK'шный build.exe. Если сомневаетесь, то гляньте на досуге в %BASEDIR%\bin\makefile.def и makefile.new для того, чтобы оценить сколько понадобится времени для выстраивания правильных опций компилятору и линкеру.
Чтобы пользоваться средой, лучше сходить на http://www.osronline.com/article.cfm?article=43 и взять готовый батник DDKBUILD для среды, создать т.н. makefile project в среде и вызывать этот батник.
Здравствуйте, Samael, Вы писали:
S>Здравствуйте, GROWER, Вы писали:
S>Оставить это пустое занятие (настройка ужасного VC++ 6.0) и использовать DDK'шный build.exe. Если сомневаетесь, то гляньте на досуге в %BASEDIR%\bin\makefile.def и makefile.new для того, чтобы оценить сколько понадобится времени для выстраивания правильных опций компилятору и линкеру.
S>Чтобы пользоваться средой, лучше сходить на http://www.osronline.com/article.cfm?article=43 и взять готовый батник DDKBUILD для среды, создать т.н. makefile project в среде и вызывать этот батник.
Спасибо за ответ, makefile.def посмотрел а makefile.new такого нету , ну это не важно. Скачал этот батник ddkbuild.bat, а нельзя ли поподробней рассказать что дальше делать .... как это всё настроить.
Re: Работа с WIN2KDDK (USB_DEVICE_DESCRIPTOR)
От:
Аноним
Дата:
04.08.05 15:25
Оценка:
Здравствуйте, GROWER, Вы писали:
GRO>// #include <какие файлы надо подключать ?> ... (usb100.h, usbdi.h, wdm.h, usbdlib.h) GRO>// при подключении куча ошибок в разных файлах
Что ж ты делаешь то? Ты определись что хочешь откомпилить драйвер, так как по тексту ниже явный пример из KernelMode.
или Win32 App. Если компишишь USBVIEW то не морочь голову и компили build-ом. Переносить этот проект в VC можно, но толку будет немного. Лучше написать свою тулзу подобную USBVIEW просто переносом нужных исходников в свой проект.
Для того чтобы откомпилить полноценную тулзу подобную USBVIEW тебе помнадобятся такие файлы:
#include <usbioctl.h>
#include <initguid.h>
#include <setupapi.h>
и некоторые стуруктуры из DDK которые просто можно перенести в свой h файл.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, GROWER, Вы писали:
GRO>>// #include <какие файлы надо подключать ?> ... (usb100.h, usbdi.h, wdm.h, usbdlib.h) GRO>>// при подключении куча ошибок в разных файлах
А>Что ж ты делаешь то? Ты определись что хочешь откомпилить драйвер, так как по тексту ниже явный пример из KernelMode. А>или Win32 App. Если компишишь USBVIEW то не морочь голову и компили build-ом. Переносить этот проект в VC можно, но толку будет немного. Лучше написать свою тулзу подобную USBVIEW просто переносом нужных исходников в свой проект.
А>Для того чтобы откомпилить полноценную тулзу подобную USBVIEW тебе помнадобятся такие файлы: А>#include <usbioctl.h> А>#include <initguid.h> А>#include <setupapi.h> А>и некоторые стуруктуры из DDK которые просто можно перенести в свой h файл.
Мне надо Win32App (которе в последствии будет dll) чтобы получить данные из USB_DEVICE_DESCRIPTOR для определения серийника флешки. Просто я впервые сталкиваюсь с ddk, скачал батник ddkbuild (как посоветовали), расскажите пожалуйста (если можно подробно) как мне скомпилить с помощью build'а.
Re[3]: Работа с WIN2KDDK (USB_DEVICE_DESCRIPTOR)
От:
Аноним
Дата:
04.08.05 15:57
Оценка:
Здравствуйте, GROWER, Вы писали:
GRO> Мне надо Win32App (которе в последствии будет dll) чтобы получить данные из USB_DEVICE_DESCRIPTOR для определения серийника флешки. Просто я впервые сталкиваюсь с ddk, скачал батник ddkbuild (как посоветовали), расскажите пожалуйста (если можно подробно) как мне скомпилить с помощью build'а.
Для начала на установить DDK
Затем действуешь примерно так:
Запускаешь:Start->Development Kit->/Здесь зависит от версии DDK/->Checked Build Environment (Free Build Environment)
Появляется консоль в которой делаешь cd ..в каталог с исходниками usbview (гам где лежит source файл)и там запускаешь build вот и все.
По своему опыту. Провозившись какое то время с компиляцией usbview под VC переписал все заново в своем проекте
используя логику исходников usbview, что и тебе советую.
Здравствуйте, GROWER, Вы писали:
GRO>Здравствуйте, Samael, Вы писали:
S>>Здравствуйте, GROWER, Вы писали:
S>>Оставить это пустое занятие (настройка ужасного VC++ 6.0) и использовать DDK'шный build.exe. Если сомневаетесь, то гляньте на досуге в %BASEDIR%\bin\makefile.def и makefile.new для того, чтобы оценить сколько понадобится времени для выстраивания правильных опций компилятору и линкеру.
S>>Чтобы пользоваться средой, лучше сходить на http://www.osronline.com/article.cfm?article=43 и взять готовый батник DDKBUILD для среды, создать т.н. makefile project в среде и вызывать этот батник.
GRO>Спасибо за ответ, makefile.def посмотрел а makefile.new такого нету , ну это не важно. Скачал этот батник ddkbuild.bat, а нельзя ли поподробней рассказать что дальше делать .... как это всё настроить.
Ну не такое уж это пустое занятие (настройка ужасного VC++ 6.0) Совершенно не нужно глядеть в мейкфайлы. Если хочется сваять нативный VCшный проект, то нужно собрать при помощи build пример из DDK, который похож на Ваше нетленное творение и вдумчиво покурив лог, любезно предоставленный билдом, понять, что настройка проекта оригинальным методом copy-paste займет минут 20 от силы. Другой вопрос, что создавать и настраивать проект не всегда целесообразно.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, GROWER, Вы писали:
GRO>> Мне надо Win32App (которе в последствии будет dll) чтобы получить данные из USB_DEVICE_DESCRIPTOR для определения серийника флешки. Просто я впервые сталкиваюсь с ddk, скачал батник ddkbuild (как посоветовали), расскажите пожалуйста (если можно подробно) как мне скомпилить с помощью build'а.
А>Для начала на установить DDK А>Затем действуешь примерно так: А>Запускаешь:Start->Development Kit->/Здесь зависит от версии DDK/->Checked Build Environment (Free Build Environment) А>Появляется консоль в которой делаешь cd ..в каталог с исходниками usbview (гам где лежит source файл)и там запускаешь build вот и все. А>По своему опыту. Провозившись какое то время с компиляцией usbview под VC переписал все заново в своем проекте А>используя логику исходников usbview, что и тебе советую.
Не получается ( ...
D:\NTDDK\src\wdm\usb\usbview>D:\NTDDK\src\wdm\usb\usbview\ddkbuild.bat
OSR DDKBUILD.BAT V6.3 — OSR, Open Systems Resources, Inc.
Непредвиденное появление: -NT4.
S>Ну не такое уж это пустое занятие (настройка ужасного VC++ 6.0) Совершенно не нужно глядеть в мейкфайлы. Если хочется сваять нативный VCшный проект, то нужно собрать при помощи build пример из DDK, который похож на Ваше нетленное творение и вдумчиво покурив лог, любезно предоставленный билдом, понять, что настройка проекта оригинальным методом copy-paste займет минут 20 от силы. Другой вопрос, что создавать и настраивать проект не всегда целесообразно.
А как собрать при помощи build.exe (если это имеется ввиду) пример из DDK ?
GRO> А как собрать при помощи build.exe (если это имеется ввиду) пример из DDK ?
Об этом вам уже говорили, кратко напомню: из стартменю "запустить" нужный build environment, находясь "внутри" сделать каталог с примером текущим и в нем запустить build -eZ.
GRO>> А как собрать при помощи build.exe (если это имеется ввиду) пример из DDK ? S>Об этом вам уже говорили, кратко напомню: из стартменю "запустить" нужный build environment, находясь "внутри" сделать каталог с примером текущим и в нем запустить build -eZ.
Спасибо, скомпилить usbview получилось ... то я запутался с этими build'ами и сначала пробовал не build.exe а ddkbuild.bat. Но как мне теперь свою минимальную прогу скомпилить, так наврядли получиться, потому что там кроме .c и .h файлов необходимы и разные другие (*.mk, *.rc, ...)
Здравствуйте, GROWER, Вы писали:
GRO> При попытке скомпилить таким батником :
GRO>call D:\NTDDK\bin\setenv D:\NTDDK GRO>cd D:\NTDDK\src\wdm\usb\usbview GRO>nmake
D:\NTDDK\bin\setenv d:\NTDDK\src\wdm\usb\usbview wdm free
cd ..\src\wdm\usb\usbview
make -zcE
Кажется, так. wdm — это для w2k/XP, free либо checked — как тебе надо.
Re: Работа с WIN2KDDK (USB_DEVICE_DESCRIPTOR)
От:
Аноним
Дата:
07.08.05 02:53
Оценка:
GRO>Здрасьте. Скажите пожалуйста, как настроить win2kddk (у меня VC++ 6.0, Windows2000prof), что б всё нормально компилировалось.
Всем спасибо за ответы/советы, я понял что мне надо разобраться как сделать "взять готовый батник DDKBUILD для среды, создать т.н. makefile project в среде и вызывать этот батник". Хотя на моей рабочей машине этого нету (а дома есть) где в проекте File -> New-> makefile (это тоже интересно, от чего зависит появление тех или иных опций в среде, на разных машинах по разному).
При подкючение фалов , например, #include <usb100.h> и <usbdi.h>, нормально, а если другие — <wdm.h>,
<usbdlib.h>, то ошибки (redefinition). Пример из DDK, в котором используется usbstdlib.h не собирается
(Linking Executable — objchk\i386\usbcamd.sys for i386 stream.obj() : error LNK2001: unresolved external symbol _memcmp). В этом файле описание UsbBuildGetDescriptorRequest, а где ExAllocatePool — непонятно.
Re[2]: Работа с WIN2KDDK (USB_DEVICE_DESCRIPTOR)
От:
Аноним
Дата:
08.08.05 14:44
Оценка:
Здравствуйте, GROWER, Вы писали:
GRO>> PUSB_DEVICE_DESCRIPTOR deviceDescriptor = NULL; GRO>> PURB urb;
GRO>> urb = ExAllocatePool(NonPagedPool, GRO>> sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST));
GRO>> if (deviceDescriptor) {
GRO>> UsbBuildGetDescriptorRequest(urb, ...
GRO> При подкючение фалов , например, #include <usb100.h> и <usbdi.h>, нормально, а если другие — <wdm.h>, GRO> <usbdlib.h>, то ошибки (redefinition). Пример из DDK, в котором используется usbstdlib.h не собирается GRO> (Linking Executable — objchk\i386\usbcamd.sys for i386 stream.obj() : error LNK2001: unresolved external symbol _memcmp). В этом файле описание UsbBuildGetDescriptorRequest, а где ExAllocatePool — непонятно.
Где где в ntoskrnl.lib . Слушай, ну не путай ты билд для WIN32 APP с помошью DDK и билд для kernel mode driver с помошью все тогоже DDK.
GRO>>> PUSB_DEVICE_DESCRIPTOR deviceDescriptor = NULL; GRO>>> PURB urb;
GRO>>> urb = ExAllocatePool(NonPagedPool, GRO>>> sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST));
GRO>>> if (deviceDescriptor) {
GRO>>> UsbBuildGetDescriptorRequest(urb, ...
GRO>> При подкючение фалов , например, #include <usb100.h> и <usbdi.h>, нормально, а если другие — <wdm.h>, GRO>> <usbdlib.h>, то ошибки (redefinition). Пример из DDK, в котором используется usbstdlib.h не собирается GRO>> (Linking Executable — objchk\i386\usbcamd.sys for i386 stream.obj() : error LNK2001: unresolved external symbol _memcmp). В этом файле описание UsbBuildGetDescriptorRequest, а где ExAllocatePool — непонятно.
А>Где где в ntoskrnl.lib . Слушай, ну не путай ты билд для WIN32 APP с помошью DDK и билд для kernel mode driver с помошью все тогоже DDK.
Так что, получается в WIN32 APP нельзя использовать этот код (пользоваться этими ф-ми) ?
Re[4]: Работа с WIN2KDDK (USB_DEVICE_DESCRIPTOR)
От:
Аноним
Дата:
08.08.05 14:56
Оценка:
GRO> Так что, получается в WIN32 APP нельзя использовать этот код (пользоваться этими ф-ми) ?
Здрасте Вам, приехали . Если бы ты заглянул в доку которая идет с DDK то скорей всего бы прочел там, что
функции ядра всетаки лучше вызывать имеено в драйвере, так как подсистема WIN32 не сможет этого сделать.
Да и потом, чтобы получить дискриптор устройства вызов этих функций не требуется для user mode. Смотри внимательно код
usbview там это сделано простым обращением к контролеру посредством вызова DeviceIoContol.
Если уж загорелся желанием использовать функции работы с usb из драйвера, то тебе прийдется его написать.
Я пробую перенести usbview в VC++ (что б отлаживать можно было, смотреть на ход программы). Обычная минимальная прога идёт нормально (взял пример WinBuild), а вот usbview выдаёт :
Linking Executable — libchk\i386\usbview.exe for i386
source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Parent@12
source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Sibling@12
source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_Child@12
source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Get_DevNode_Registry_PropertyA@24
source\devnode.obj() : error LNK2001: unresolved external symbol __imp__CM_Locate_DevNodeA@12
source\usbview.obj() : error LNK2001: unresolved external symbol __imp__InitCommonControls@0
source\usbview.obj() : error LNK2001: unresolved external symbol __imp__ImageList_ReplaceIcon@12
source\usbview.obj() : error LNK2001: unresolved external symbol __imp__ImageList_Create@20
libchk\i386\usbview.exe() : error LNK1120: 8 unresolved externals
Что нужно сделать ?
Re[6]: Работа с WIN2KDDK (USB_DEVICE_DESCRIPTOR)
От:
Аноним
Дата:
09.08.05 13:18
Оценка:
Здравствуйте, 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. Повторять перенос.