Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Please Помогите откомпилировать пример в книге Walterа Oney  (Прочитано 22281 раз)
0 Пользователей и 1 Гость смотрят эту тему.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« : 26-05-2004 07:07 » 

У меня Visual C++ 2003
Когда компилирую пример из 12й главы - usbint Появляется ошибка линкера что /ignore:401 неверная опция
Заменяю ее на /ignore:4010 появляются сообщения  о Unresolved externals в GetStringDescriptor
Как откомпилировать проект...
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 26-05-2004 07:40 » 

Дай ссылку на текст
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #2 : 26-05-2004 08:55 » 

На текст книги чтоли Она на этом сайте лежит
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #3 : 26-05-2004 09:00 » 

Значит так - это вот этот текст?
Код:

NTSTATUS GetStringDescriptor)PDEVICE_OBJECT fdo, UCHAR istring,
  PUNICODE_STRING s:
  |
  NTSTATUS status;
  PDEVICE_EXTENSION pdx =
    )PDEVICE_EXTENSION: fdo->DeviceExtension;
  URB urb;

  UCHAR data[256(;

  if )!pdx->langid:
    |
    UsbBuildGetDescriptorRequest)&urb,
      sizeof)_URB_CONTROL_DESCRIPTOR_REQUEST:,
      USB_STRING_DESCRIPTOR_TYPE,
      0, 0, data, NULL, sizeof)data:, NULL:;
    status = SendAwaitUrb)fdo, &urb:;
    if )!NT_SUCCESS)status::
      return status;
    pdx->langid = *)LANGID*:)data + 2:;
    "

  UsbBuildGetDescriptorRequest)&urb,
    sizeof)_URB_CONTROL_DESCRIPTOR_REQUEST:,
    USB_STRING_DESCRIPTOR_TYPE,
    istring, pdx->langid, data, NULL, sizeof)data:, NULL:;
  status = SendAwaitUrb)fdo, &urb:;
  if )!NT_SUCCESS)status::
    return status;

  ULONG nchars = )data[0( - sizeof)WCHAR:: / sizeof)WCHAR:;
  if )nchars > 257:
    nchars = 257;
  PWSTR p = )PWSTR: ExAllocatePool)PagedPool,
    )nchars + 1: * sizeof)WCHAR::;
  if )!p:
    return STATUS_INSUFFICIENT_RESOURCES;
  RtlCopyMemory)p, data + 2, nchars * sizeof)WCHAR::;
  p[nchars( = 0;
  s->Length = )USHORT: )sizeof)WCHAR: * nchars:;
  s->MaximumLength = )USHORT: ))sizeof)WCHAR: * nchars:
    + sizeof)WCHAR::;
  s->Buffer = p;

  return STATUS_SUCCESS;
  "



На что у тебя ругается?
По всей видимости на SendAwaitUrb.
Это ф-ция не из ядра и должна быть определена в каком-то из файлов проекта.
Все остальные ф-ции есть в хидарах DDK, единственная проблема- у тебя могут не совпадать по версии заголовочные файлы и lib, иногда в заголовочных файлах одна ф-ция определяется через другую, которая может отсутствовать в предыдущей версии ядра.
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #4 : 26-05-2004 09:08 » 

Ругается на символ ___security_cookie

Дословно говорит вот что

usbint error LNK2019: unresolved external symbol ___security_cookie referenced in function "long __stdcall GetStringDescriptor(struct _DEVICE_OBJECT *,unsigned char,struct _UNICODE_STRING *)" (?GetStringDescriptor@@YGJPAU_DEVICE_OBJECT@@EPAU_UNICODE_STRING@@@Z)
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #5 : 26-05-2004 09:10 » 

Да Текст мой
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #6 : 26-05-2004 09:11 » 

А также
usbint error LNK2019: unresolved external symbol @__security_check_cookie@4 referenced in function "long __stdcall GetStringDescriptor(struct _DEVICE_OBJECT *,unsigned char,struct _UNICODE_STRING *)" (?GetStringDescriptor@@YGJPAU_DEVICE_OBJECT@@EPAU_UNICODE_STRING@@@Z)
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #7 : 26-05-2004 09:18 » 

DDK XPшный
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #8 : 26-05-2004 09:21 » 

Ты как это все компилишь? У тебя настройки для lib и заголовочных файлов на что указывают, какие параметры передаешь компилятору и линковщику? У тебя mangling name - GetStringDescriptor@@YGJPAU_DEVICE_OBJECT@@EPAU_UNICODE_STRING@@@Z), значит компилишь ты все как С++ файл.
  По все видимости ты компилишь проект не как драйвер для native подсистемы, а как обыкновенное приложение Win32, да еще и С++.
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #9 : 26-05-2004 09:40 » 

Как обычно...
Я просто кликнул на файл usbint.dsp и когда проект загрузился в Visual Studio нажал компилировать
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #10 : 26-05-2004 09:45 » 

Настройки для либов указывают на
$(ddkpath)\lib\wxp\i386,$(wdmbook)\generic\objchk_wxp_x86\i386
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #11 : 26-05-2004 09:53 » 

Цитата

Я просто кликнул на файл usbint.dsp и когда проект загрузился в Visual Studio нажал компилировать


Напиши параметры, которые передаются компилятору и линковщику.
Записан
аа
Гость
« Ответ #12 : 26-05-2004 11:08 » 

а если просто Build'ом попробовать?
Записан
AlexANDor
Гость
« Ответ #13 : 26-05-2004 16:15 » 

При установке кодов Walter Oney по правой кнопке мыши на .dsp появляется опция "Open as DDK Project" !!!
Записан
maaaaaad
Гость
« Ответ #14 : 27-05-2004 05:24 » 

попробуй пеименовать все cpp файлы в c. В дополнении к этому придется немного преобразовать развязаный спп синтаксис а с =)

у мя недавно был проект, где точка входа была в спп файле, а все остальное - в с. И линкер не хотел видеть экстерны из сишних в сппюшных

там еще можно побаловаться с
#ifdef __cplusplus
extern "C" {
#endif

lalala

#ifdef __cplusplus
};
#endif

cpp это зло. DDK XP, кстати тоже зло =) лучше уж  сразу IFS XP, если на то уж дело пошло. там ничего, кроме обновления хедеров NDIS 5.0 нет.

а вапще, все примеры для VC6.X и DDK2k.


================================================
There's a nail in the door
And there's glass on the lawn
Tacks on the floor
And the TV is on
And I always sleep with my guns when you're gone

There's a blade by the bed
And a phone in my hand
A dog on the floor
And some cash on the nightstand
When I'm all alone the dreaming stops
And I just can't stand

What should I do I'm just a little baby
What if the lights go out
And maybe and then the wind just starts to moan
Outside the door he followed me home
Записан
AlexANDor
Гость
« Ответ #15 : 27-05-2004 09:39 » 

Цитата: maaaaaad
DDK XP, кстати тоже зло =)

А почему? Встроенный компилятор - как минимум уже хорошо и должен уменьшать число возможных нестыковок.
Цитата: maaaaaad
а вапще, все примеры для VC6.X и DDK2k.

Второе издание Oney недвусмысленно рекомендует DDK-XP:
You will need the following software installed on your computer:
- The Windows XP Device Driver Kit, build 2600 (the Released To Manufacturing version from around September 7, 2001) or later. All the driver projects in these samples use the compiler that ships with the DDK. Alternatively, use any version of the .NET DDK.
- For some of the samples only, the Windows 98 Device Driver Kit.
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #16 : 27-05-2004 12:12 » 

Цитата: аа
а если просто Build'ом попробовать?


Пробовал Он начинает ругаться на generic Когда ему его подсовываешь говорит что не может откомпилить e:\walter и вылетает
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #17 : 27-05-2004 12:15 » 

Цитата: AlexANDor
При установке кодов Walter Oney по правой кнопке мыши на .dsp появляется опция "Open as DDK Project" !!!


А вот этого еще не пробовал Завтра попробую
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #18 : 27-05-2004 12:19 » 

Цитата: SlavaI
Цитата

Я просто кликнул на файл usbint.dsp и когда проект загрузился в Visual Studio нажал компилировать


Напиши параметры, которые передаются компилятору и линковщику.


Compiler options
/Oi /G6 /I "e:\walter oney\generic" /I "C:\WINDDK\2600\inc\wxp" /I "C:\WINDDK\2600\inc\ddk\wxp" /I "C:\WINDDK\2600\inc\ddk\wdm\wxp" /I "C:\WINDDK\2600\inc\crt" /D "CONDITION_HANDLING=1" /D "DBG=1" /D "DEVL=1" /D "DRIVER" /D "FPO=0" /D "NDEBUG" /D "NT_INST=0" /D "NT_UP=1" /D "RDRDBG" /D "SRVDBG" /D "STD_CALL" /D "WIN32" /D "WIN32=100" /D "WIN32_LEAN_AND_MEAN=1" /D "WINNT=1" /D "WINVER=0x0501" /D "_DEBUG" /D "_DLL=1" /D "_IDWBUILD" /D "_NT1X_=100" /D "_WIN32_IE=0x0600" /D "_WIN32_WINNT=0x0501" /D "_WINDOWS" /D "_X86_=1" /D "i386=1" /D "_MBCS" /GF /FD /EHsc /MLd /GS /Gy /Yu"stddcls.h" /Fp".\objchk_wxp_x86\i386/usbint.pch" /Fo".\objchk_wxp_x86\i386/" /Fd".\objchk_wxp_x86\i386/" /FR".\objchk_wxp_x86\i386/" /W3 /WX /nologo /c /Z7 /Gz /FI "C:\WINDDK\2600\inc\wxp\warning.h"
Compiler command line
-QI0f -QIf -QIfdiv- -Zel -cbstring

Linker options
/OUT:"objchk_wxp_x86\i386\usbint.sys" /VERSION:5.1 /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\WINDDK\2600\lib\wxp\i386" /LIBPATH:"e:\walter oney\generic\objchk_wxp_x86\i386" /NODEFAULTLIB /PDB:".\objchk_wxp_x86\i386/usbint.pdb" /STACK:262144,4096 /ENTRY:"DriverEntry@8" /RELEASE /BASE:"0x10000" /MERGE:"_TEXT=.text" wdm.lib C:\WINDDK\2600\lib\i386\free\usbd.lib generic.lib wmilib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "\walter oney\Generic\objchk_wxp_x86\i386\generic.lib"
Linker command line
/DRIVER:WDM -debug:full -fullbuild -ignore:4010 -ignore:4010,4037,4039,4049,4065,4070,4078,4087,4089,4198,4221 -opt:icf -opt:nowin98 -opt:icf -opt:nowin98 -opt:ref -osversion:4.00 -section:init,d -subsystem:native,4.00 -opt:nowin98 -opt:ref -osversion:4.00 -section:init,d -subsystem:native,4.00 -opt:ref -osversion:4.00 -section:init,d -subsystem:native,4.00 -osversion:4.00 -section:init,d -subsystem:native,4.00 -section:init,d -subsystem:native,4.00 -subsystem:native,4.00
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #19 : 27-05-2004 15:36 » 

Как минимум убери /D "_WIN32_IE=0x0600" , это для юзер мода.
/EHsc - это тоже надо убрать, это относится к обработке исключений в стиле C++.
/D "_WINDOWS" - тоже по моему лишнее.
_MBCS - для драйвера тоже не надо.
Записан
maaaaaad
Гость
« Ответ #20 : 27-05-2004 15:49 » 

гммм....тут больше от usermode чем для kernel.....
мой совет, сотри все и возьми рабочее
Записан
maaaaaad
Гость
« Ответ #21 : 27-05-2004 15:49 » 

из другого проекта
Записан
maaaaaad
Гость
« Ответ #22 : 27-05-2004 15:51 » 

или ты прогу компилишь? =) или dll =))) ?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #23 : 28-05-2004 06:41 » 

Цитата

или ты прогу компилишь? =) или dll =))) ?


Это точно. Смесь из параметров обыкновенного пользовательского приложения и параметров для драйвера.
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #24 : 28-05-2004 12:52 » 

Цитата: SlavaI
Цитата

или ты прогу компилишь? =) или dll =))) ?


Это точно. Смесь из параметров обыкновенного пользовательского приложения и параметров для драйвера.


Ну вот так вот она конвертит...(
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
maaaaaad
Гость
« Ответ #25 : 28-05-2004 13:11 » 

DSP все всегда нормально конвертит
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #26 : 28-05-2004 14:18 » 

Цитата

Ну вот так вот она конвертит...(


А, так ты конвертнул проект для 6 студии в 7. Это не работает для проектов драйверов- это нестандартные проекты, открывай файлы проектов как текстовые и правь сам их- ручками.
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #27 : 01-06-2004 03:03 » new

Цитата: SlavaI
Цитата

Ну вот так вот она конвертит...(


А, так ты конвертнул проект для 6 студии в 7. Это не работает для проектов драйверов- это нестандартные проекты, открывай файлы проектов как текстовые и правь сам их- ручками.


Знать бы еще что править... Есть где нибудь инфа по различиям директив этих 2х компиляторов?
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines