DDK настройка среды и устранение ошибок Линковщика

Тема в разделе "WASM.NT.KERNEL", создана пользователем Squirrel, 10 ноя 2009.

  1. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    Всем привет. Суть проблемы: подключив <ntddk.h> у меня вывалилось очень много ошибок касающихся переопределения всевозможных структур

    Код (Text):
    1. c:\winddk\7600.16385.0\inc\api\ntdef.h(128) : warning C4005: 'MAX_NATURAL_ALIGNMENT' : macro redefinition
    2.         c:\winddk\7600.16385.0\inc\api\winnt.h(109) : see previous definition of 'MAX_NATURAL_ALIGNMENT'
    3. c:\winddk\7600.16385.0\inc\api\ntdef.h(161) : warning C4005: 'PROBE_ALIGNMENT' : macro redefinition
    4.         c:\winddk\7600.16385.0\inc\api\winnt.h(142) : see previous definition of 'PROBE_ALIGNMENT'
    5. c:\winddk\7600.16385.0\inc\api\ntdef.h(614) : error C2011: '_PROCESSOR_NUMBER' : 'struct' type redefinition
    6.         c:\winddk\7600.16385.0\inc\api\winnt.h(493) : see declaration of '_PROCESSOR_NUMBER'
    7. c:\winddk\7600.16385.0\inc\api\ntdef.h(625) : error C2011: '_GROUP_AFFINITY' : 'struct' type redefinition
    8.         c:\winddk\7600.16385.0\inc\api\winnt.h(504) : see declaration of '_GROUP_AFFINITY'
    ...

    Как это исправить? Использую Visual C++ 2005
     
  2. h3rmit

    h3rmit New Member

    Публикаций:
    0
    Регистрация:
    9 июн 2009
    Сообщения:
    28
    а что у тебя ещё подключено из заголовочных файлов? ^____^
     
  3. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    Project создаю как Win 32 Console + добавляю header MFC
     
  4. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    или ATL все равно одно и тоже :/
     
  5. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    А зачем ты вообще подключаешь заголовочные данные из DDK(user mode application)???
    Так делать не надо....
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Я конечно не спец по "извращениям", но зачем такому проекту DDK ? Я знаю два способа его использования :
    1) Создание драйверов .
    2) Хитрый способ создания нативных приложений.
     
  7. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    Делаю я это для того, чтоб достать список процессов, так, как Касперский блокирует вызовы с помощью tlhelp32.h Process32First и Process32Next, а мне нужно для убиения по таймауту одного процесса который зависает :/.
    Ox8BFF55 а как надо? я уже и в консоле пробовал подключить, но там другая проблема. Выдает ошибку
    Код (Text):
    1. No target architecture defined
     
  8. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    гуглю уже 3 день! :/
     
  9. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    Насчет этого нужно учить язык и что такое макроопределения

    /D _X86_ к примеру
     
  10. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    o14189 - Если б тебя все слушались, тогда любой форум по программированию состоял бы из оного ответа "Учите программирование"! :/ А что-то более полезное можешь подсказать?
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Visual Studio теперь(и уже давно) может компилить не только под Интел (x86), но и под
    ARM, MIPS и т.д. Как ты умудрился написать исходник без платформы - я удивляюсь.
    Обычно по дефолту все равно 86-й ставится.
    Как можно подсказать человеку, который задает вопросы для телепатов: "Я получил вот это, угадайте что сделал неправильно".
     
  12. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    valterg не люблю ответов не продвигающих хотя бы на шаг в перед! Если ты внимательно читал то заметил бы
    я лично после установки ничего кардинального не менял!
    Разве я прошу чего-то особенного? Разве так сложно подсказать что я делаю не так, лицам, компилирующим программы под разные платформы?
     
  13. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    ответил на вопрос без стеба не смотря на то что это WASM.OS.KERNEL, для ntifs нужно указывать архитектуру для которой собирается драйвер
    тему в хип или бегиннерс нужно переносить
     
  14. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    o14189Эх Парни... ну здесь же не в этом дело, какая разница в архитектуре, если переопределены макросы и структуры. Если подключали DDk тогда вы точно должны были столкнутся с этим! Или я какой-то особенный, и это случилось только у меня?
     
  15. n0name

    n0name New Member

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

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Наверно ты умеешь подсказывать не видя ни одной строчки кода. Вот мы не умеем.
    Да и вопроса нет : что тебе подсказать. Ну кроме вот этого.
    Так я понимаю, что это можно решить по другому. Хотя честно говоря и эта фраза очень туманна и на вопрос не тянет. Особенно в разделе WASM.OS.KERNEL
     
  17. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    ответ на это есть
    либо через неймспейсы но это уже не C будет, обычно связывать их незачем

    нужно указать зачем он подключается, обычно достаточно отдельную либу-обертку над
    базовым апи, собрать с нужным функционалом и связать с проектом
     
  18. Squirrel

    Squirrel New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2009
    Сообщения:
    13
    valterg
    Вот что я писал раньше:
    К новому проекту кода я еще никакого не написал, а ошибки уже появились!

    o14189
    Подскажешь как? Я подключаю DDK чтоб использовать ZwQuerySystemInformation
     
  19. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Читай про то, как использовать Native API.
    Откуда ошибка я тебе уже писал.
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.551
    Адрес:
    Russia
    Squirrel
    Ты бы еще кучу всего другого ядерного подключил ))
    Опиши эту функцию в своем хидере, и не надо подключать ядерные модули если проект не ядерный.

    Создай например ntsystem.h файл допустим. Туда внеси следующее:

    Код (Text):
    1. #pragma once
    2. #pragma pack(push,1)
    3. #pragma warning( disable : 4200 )
    4.  
    5. #define _WIN32_WINNT 0x0500
    6.  
    7. #define  STATUS_SUCCESS                 0x00000000
    8. #define  STATUS_ACCESS_DENIED           0xC0000022
    9. #define  STATUS_INFO_LENGTH_MISMATCH    0xC0000004
    10. #define  STATUS_NO_SUCH_FILE            0xC000000F
    11. #define  STATUS_NO_MORE_ENTRIES         0x8000001A
    12. #define  STATUS_BUFFER_TOO_SMALL        0xC0000023
    13.  
    14.  
    15. #define OB_TYPE_FILE_XP    28    
    16. #define OB_TYPE_FILE_2000  26
    17.  
    18. typedef DWORD NTSTATUS;
    19. typedef VOID NTSYSAPI (*PPEBLOCKROUTINE)(PVOID);
    20.  
    21.  
    22. #define THREAD_BASIC_INFO  0x0
    23.  
    24.  
    25. typedef enum _SYSTEM_INFORMATION_CLASS
    26. {
    27.     SystemBasicInformation,
    28.     SystemProcessorInformation,
    29.     SystemPerformanceInformation,
    30.     SystemTimeOfDayInformation,
    31.     SystemNotImplemented1,
    32.     SystemProcessesAndThreadsInformation,
    33.     SystemCallCounts,
    34.     SystemConfigurationInformation,
    35.     SystemProcessorTimes,
    36.     SystemGlobalFlag,
    37.     SystemNotImplemented2,
    38.     SystemModuleInformation,
    39.     SystemLockInformation,
    40.     SystemNotImplemented3,
    41.     SystemNotImplemented4,
    42.     SystemNotImplemented5,
    43.     SystemHandleInformation,
    44.     SystemObjectInformation,
    45.     SystemPagefileInformation,
    46.     SystemInstructionEmulationCounts,
    47.     SystemInvalidInfoClass1,
    48.     SystemCacheInformation,
    49.     SystemPoolTagInformation,
    50.     SystemProcessorStatistics,
    51.     SystemDpcInformation,
    52.     SystemNotImplemented6,
    53.     SystemLoadImage,
    54.     SystemUnloadImage,
    55.     SystemTimeAdjustment,
    56.     SystemNotImplemented7,
    57.     SystemNotImplemented8,
    58.     SystemNotImplemented9,
    59.     SystemCrashDumpInformation,
    60.     SystemExceptionInformation,
    61.     SystemCrashDumpStateInformation,
    62.     SystemKernelDebuggerInformation,
    63.     SystemContextSwitchInformation,
    64.     SystemRegistryQuotaInformation,
    65.     SystemLoadAndCallImage,
    66.     SystemPrioritySeparation,
    67.     SystemNotImplemented10,
    68.     SystemNotImplemented11,
    69.     SystemInvalidInfoClass2,
    70.     SystemInvalidInfoClass3,
    71.     SystemTimeZoneInformation,
    72.     SystemLookasideInformation,
    73.     SystemSetTimeSlipEvent,
    74.     SystemCreateSession,
    75.     SystemDeleteSession,
    76.     SystemInvalidInfoClass4,
    77.     SystemRangeStartInformation,
    78.     SystemVerifierInformation,
    79.     SystemAddVerifier,
    80.     SystemSessionProcessesInformation
    81. } SYSTEM_INFORMATION_CLASS;
    82.  
    83. typedef enum _FILE_INFORMATION_CLASS
    84. {
    85.     FileDirectoryInformation = 1,
    86.     FileFullDirectoryInformation,
    87.     FileBothDirectoryInformation,
    88.     FileBasicInformation,
    89.     FileStandardInformation,
    90.     FileInternalInformation,
    91.     FileEaInformation,
    92.     FileAccessInformation,
    93.     FileNameInformation,
    94.     FileRenameInformation,
    95.     FileLinkInformation,
    96.     FileNamesInformation,
    97.     FileDispositionInformation,
    98.     FilePositionInformation,
    99.     FileModeInformation = 16,
    100.     FileAlignmentInformation,
    101.     FileAllInformation,
    102.     FileAllocationInformation,
    103.     FileEndOfFileInformation,
    104.     FileAlternateNameInformation,
    105.     FileStreamInformation,
    106.     FilePipeInformation,
    107.     FilePipeLocalInformation,
    108.     FilePipeRemoteInformation,
    109.     FileMailslotQueryInformation,
    110.     FileMailslotSetInformation,
    111.     FileCompressionInformation,
    112.     FileObjectIdInformation,
    113.     FileCompletionInformation,
    114.     FileMoveClusterInformation,
    115.     FileQuotaInformation,
    116.     FileReparsePointInformation,
    117.     FileNetworkOpenInformation,
    118.     FileAttributeTagInformation,
    119.     FileTrackingInformation
    120. } FILE_INFORMATION_CLASS;
    121.  
    122. extern "C"
    123. NTSYSAPI
    124. NTSTATUS
    125. NTAPI
    126. ZwQuerySystemInformation(
    127.                          IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
    128.                          IN OUT PVOID SystemInformation,
    129.                          IN ULONG SystemInformationLength,
    130.                          OUT PULONG ReturnLength OPTIONAL);
    А вообще поищи, в нете есть подобные файлы.