проблемы с wdk

Тема в разделе "LANGS.C", создана пользователем loginrl_103, 20 фев 2008.

  1. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    Второй день мучаю гугл.
    Никак не могу разобраться в чём проблема. В программе (не драйвер) нужно использовать некоторые структуры определённые в ddk. В настройках проекта подцепил хидеры. Дальше смех:
    (просто пример)
    Код (Text):
    1. #include <ntddk.h>
    2.  
    3. int main()
    4. {
    5.  DWORD ex;
    6.  return 0;
    7. }
    - отвечает error C2065: 'DWORD' : undeclared identifier.
    Подцепляю winnt.h. Отвечает
    Код (Text):
    1. d:\winddk\3790.1830\inc\wxp\winnt.h(260) : error C2146: syntax error : missing ';' before identifier 'WCHAR'
    2. d:\winddk\3790.1830\inc\wxp\winnt.h(260) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    3. d:\winddk\3790.1830\inc\wxp\winnt.h(265) : error C2143: syntax error : missing ';' before '*'
    4. d:\winddk\3790.1830\inc\wxp\winnt.h(265) : error C2371: 'WCHAR' : redefinition; different basic types
    5.         d:\winddk\3790.1830\inc\wxp\winnt.h(252) : see declaration of 'WCHAR'
    6. d:\winddk\3790.1830\inc\wxp\winnt.h(265) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    7. d:\winddk\3790.1830\inc\wxp\winnt.h(265) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    8. d:\winddk\3790.1830\inc\wxp\winnt.h(266) : error C2143: syntax error : missing ';' before '*'
    9. d:\winddk\3790.1830\inc\wxp\winnt.h(266) : error C2371: 'WCHAR' : redefinition; different basic types
    10.         d:\winddk\3790.1830\inc\wxp\winnt.h(252) : see declaration of 'WCHAR'
    11. d:\winddk\3790.1830\inc\wxp\winnt.h(266) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    12. d:\winddk\3790.1830\inc\wxp\winnt.h(266) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    13. d:\winddk\3790.1830\inc\wxp\winnt.h(274) : error C2143: syntax error : missing ';' before '*'
    14. d:\winddk\3790.1830\inc\wxp\winnt.h(274) : error C2371: 'CHAR' : redefinition; different basic types
    15.         d:\winddk\3790.1830\inc\wxp\winnt.h(242) : see declaration of 'CHAR'
    16. d:\winddk\3790.1830\inc\wxp\winnt.h(274) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    17. d:\winddk\3790.1830\inc\wxp\winnt.h(274) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    18. d:\winddk\3790.1830\inc\wxp\winnt.h(277) : error C2143: syntax error : missing ';' before '*'
    19. d:\winddk\3790.1830\inc\wxp\winnt.h(277) : error C2371: 'CHAR' : redefinition; different basic types
    20.         d:\winddk\3790.1830\inc\wxp\winnt.h(242) : see declaration of 'CHAR'
    21. d:\winddk\3790.1830\inc\wxp\winnt.h(277) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    22. d:\winddk\3790.1830\inc\wxp\winnt.h(277) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    23. d:\winddk\3790.1830\inc\wxp\winnt.h(292) : error C2146: syntax error : missing ';' before identifier 'PCTSTR'
    24. d:\winddk\3790.1830\inc\wxp\winnt.h(292) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    25. d:\winddk\3790.1830\inc\wxp\winnt.h(292) : error C2378: 'LPCWSTR' : redefinition; symbol cannot be overloaded with a typedef
    26.         d:\winddk\3790.1830\inc\wxp\winnt.h(265) : see declaration of 'LPCWSTR'
    27. d:\winddk\3790.1830\inc\wxp\winnt.h(292) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    28. d:\winddk\3790.1830\inc\wxp\winnt.h(292) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    29. d:\winddk\3790.1830\inc\wxp\winnt.h(294) : error C2146: syntax error : missing ';' before identifier 'PCUTSTR'
    30. d:\winddk\3790.1830\inc\wxp\winnt.h(294) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    31. d:\winddk\3790.1830\inc\wxp\winnt.h(294) : error C2378: 'LPCUWSTR' : redefinition; symbol cannot be overloaded with a typedef
    32.         d:\winddk\3790.1830\inc\wxp\winnt.h(266) : see declaration of 'LPCUWSTR'
    33. d:\winddk\3790.1830\inc\wxp\winnt.h(294) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    34. d:\winddk\3790.1830\inc\wxp\winnt.h(294) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    35. d:\winddk\3790.1830\inc\wxp\winnt.h(331) : error C2146: syntax error : missing ';' before identifier 'FCHAR'
    36. d:\winddk\3790.1830\inc\wxp\winnt.h(331) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    37. d:\winddk\3790.1830\inc\wxp\winnt.h(331) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    38. d:\winddk\3790.1830\inc\wxp\winnt.h(332) : error C2146: syntax error : missing ';' before identifier 'FSHORT'
    39. d:\winddk\3790.1830\inc\wxp\winnt.h(332) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    40. d:\winddk\3790.1830\inc\wxp\winnt.h(332) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    41. d:\winddk\3790.1830\inc\wxp\winnt.h(333) : error C2146: syntax error : missing ';' before identifier 'FLONG'
    42. d:\winddk\3790.1830\inc\wxp\winnt.h(333) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    43. d:\winddk\3790.1830\inc\wxp\winnt.h(333) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    44. d:\winddk\3790.1830\inc\wxp\winnt.h(390) : error C2146: syntax error : missing ';' before identifier 'PLCID'
    45. d:\winddk\3790.1830\inc\wxp\winnt.h(390) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    46. d:\winddk\3790.1830\inc\wxp\winnt.h(390) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    47. d:\winddk\3790.1830\inc\wxp\winnt.h(7566) : error C2065: 'IN' : undeclared identifier
    48. d:\winddk\3790.1830\inc\wxp\winnt.h(7566) : error C2146: syntax error : missing ')' before identifier 'PSLIST_HEADER'
    49. d:\winddk\3790.1830\inc\wxp\winnt.h(7566) : warning C4229: anachronism used : modifiers on data are ignored
    50. d:\winddk\3790.1830\inc\wxp\winnt.h(7566) : error C2182: 'RtlInitializeSListHead' : illegal use of type 'void'
    51. d:\winddk\3790.1830\inc\wxp\winnt.h(7566) : error C2491: 'RtlInitializeSListHead' : definition of dllimport data not allowed
    52. d:\winddk\3790.1830\inc\wxp\winnt.h(7567) : error C2059: syntax error : ')'
    53. d:\winddk\3790.1830\inc\wxp\winnt.h(7572) : error C2143: syntax error : missing ')' before 'const'
    54. d:\winddk\3790.1830\inc\wxp\winnt.h(7572) : error C2491: 'RtlFirstEntrySList' : definition of dllimport data not allowed
    55. d:\winddk\3790.1830\inc\wxp\winnt.h(7573) : error C2059: syntax error : ')'
    56. d:\winddk\3790.1830\inc\wxp\winnt.h(7579) : error C2146: syntax error : missing ')' before identifier 'PSLIST_HEADER'
    57. d:\winddk\3790.1830\inc\wxp\winnt.h(7579) : warning C4229: anachronism used : modifiers on data are ignored
    58. d:\winddk\3790.1830\inc\wxp\winnt.h(7579) : error C2491: 'RtlInterlockedPopEntrySList' : definition of dllimport data not allowed
    59. d:\winddk\3790.1830\inc\wxp\winnt.h(7580) : error C2059: syntax error : ')'
    60. d:\winddk\3790.1830\inc\wxp\winnt.h(7586) : error C2146: syntax error : missing ')' before identifier 'PSLIST_HEADER'
    61. d:\winddk\3790.1830\inc\wxp\winnt.h(7586) : warning C4229: anachronism used : modifiers on data are ignored
    62. d:\winddk\3790.1830\inc\wxp\winnt.h(7586) : error C2491: 'RtlInterlockedPushEntrySList' : definition of dllimport data not allowed
    63. d:\winddk\3790.1830\inc\wxp\winnt.h(7588) : error C2059: syntax error : ')'
    64. d:\winddk\3790.1830\inc\wxp\winnt.h(7594) : error C2146: syntax error : missing ')' before identifier 'PSLIST_HEADER'
    65. d:\winddk\3790.1830\inc\wxp\winnt.h(7594) : warning C4229: anachronism used : modifiers on data are ignored
    66. d:\winddk\3790.1830\inc\wxp\winnt.h(7594) : error C2491: 'RtlInterlockedFlushSList' : definition of dllimport data not allowed
    67. d:\winddk\3790.1830\inc\wxp\winnt.h(7595) : error C2059: syntax error : ')'
    68. d:\winddk\3790.1830\inc\wxp\winnt.h(7601) : error C2146: syntax error : missing ')' before identifier 'PSLIST_HEADER'
    69. d:\winddk\3790.1830\inc\wxp\winnt.h(7601) : warning C4229: anachronism used : modifiers on data are ignored
    70. d:\winddk\3790.1830\inc\wxp\winnt.h(7601) : error C2491: 'RtlQueryDepthSList' : definition of dllimport data not allowed
    71. d:\winddk\3790.1830\inc\wxp\winnt.h(7602) : error C2059: syntax error : ')'
    72. d:\winddk\3790.1830\inc\wxp\winnt.h(7725) : error C2146: syntax error : missing ')' before identifier 'PVOID'
    73. d:\winddk\3790.1830\inc\wxp\winnt.h(7725) : error C2433: 'RtlSecureZeroMemory' : '__forceinline' not permitted on data declarations
    74. d:\winddk\3790.1830\inc\wxp\winnt.h(7727) : error C2059: syntax error : ')'
    75. d:\winddk\3790.1830\inc\wxp\winnt.h(7728) : error C2143: syntax error : missing ';' before '{'
    76. d:\winddk\3790.1830\inc\wxp\winnt.h(7728) : error C2447: '{' : missing function header (old-style formal list?)
    77. d:\winddk\3790.1830\inc\wxp\winnt.h(7882) : error C2146: syntax error : missing ')' before identifier 'ULONGLONG'
    78. d:\winddk\3790.1830\inc\wxp\winnt.h(7882) : warning C4229: anachronism used : modifiers on data are ignored
    79. d:\winddk\3790.1830\inc\wxp\winnt.h(7885) : error C2059: syntax error : ')'
    80. d:\winddk\3790.1830\inc\wxp\winnt.h(8056) : error C2146: syntax error : missing ')' before identifier 'PVOID'
    81. d:\winddk\3790.1830\inc\wxp\winnt.h(8060) : error C2059: syntax error : ')'
    82. d:\winddk\3790.1830\inc\wxp\winnt.h(8064) : error C2146: syntax error : missing ')' before identifier 'PVOID'
    83. d:\winddk\3790.1830\inc\wxp\winnt.h(8069) : error C2059: syntax error : ')'
    84. d:\winddk\3790.1830\inc\wxp\winnt.h(8123) : error C2146: syntax error : missing ';' before identifier 'lpFileName'
    85. d:\winddk\3790.1830\inc\wxp\winnt.h(8123) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    86. d:\winddk\3790.1830\inc\wxp\winnt.h(8123) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    87. d:\winddk\3790.1830\inc\wxp\winnt.h(8124) : error C2146: syntax error : missing ';' before identifier 'lpFilePath'
    88. d:\winddk\3790.1830\inc\wxp\winnt.h(8124) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    89. d:\winddk\3790.1830\inc\wxp\winnt.h(8124) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    90. d:\winddk\3790.1830\inc\wxp\winnt.h(8154) : error C2146: syntax error : missing ';' before identifier 'lpAssemblyEncodedAssemblyIdentity
    91. ...
    92. d:\winddk\3790.1830\inc\wxp\ntdef.h(1183) : error C2227: left of '->Flink' must point to class/struct/union/generic type
    93. d:\winddk\3790.1830\inc\wxp\ntdef.h(1183) : error C2027: use of undefined type 'LIST_ENTRY64'
    94.         d:\winddk\3790.1830\inc\wxp\winnt.h(780) : see declaration of 'LIST_ENTRY64'
    95. d:\winddk\3790.1830\inc\wxp\ntdef.h(1183) : fatal error C1003: error count exceeds 100; stopping compilation
    - короче начались проблемы с переопределением и ещё с хз чем. Пробовал NODEFAULTLIB - бестолку. Насколько я понял - надо копать в сторону namespace - на васме нашёл темы в которые тыкают - не вьехал ((.
    Обьясните что к чему.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    лучше не использовать ntddk.h для написания недрайверов.
     
  3. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    т.е. все нужные структуры вручную определять?
     
  4. Joes

    Joes New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    98
    Попробуй Windows.h включить до winnt.h

    Правка: не прочитал сообщение внимательно :-\
     
  5. lotos_od

    lotos_od New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    29
    Адрес:
    Ukraine
    В ntddk.h и winnt.h много одинаковых типов даных, следовательно имеет смысл ntddk.h обернуть в свой namespace, дабы избежать ругани компилятора. В общем, в правильном направлении копаешь.
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    http://wasm.ru/forum/viewtopic.php?pid=213062