| Код | #pragma comment (linker, "/SYBSYSTEM:NATIVE") #pragma comment(linker,"/BASE:0x00010000 /ENTRY:native_main") #pragma comment(lib, "C:\\masm32\\lib\\w2k\\ntdll.lib") // I:\WINDDK\2600\inc\ddk\wxp
#define _X86_ #include <ntddk.h>
typedef struct { ULONG Unknown[21]; UNICODE_STRING CommandLine; UNICODE_STRING ImageFile; } ENVIRONMENT_INFORMATION, *PENVIRONMENT_INFORMATION;
typedef struct { ULONG Unknown[3]; PENVIRONMENT_INFORMATION Environment; } STARTUP_ARGUMENT, *PSTARTUP_ARGUMENT;
#define US(x, d) UNICODE_STRING x={sizeof(d)/sizeof(wchar_t), sizeof(d), d)
void native_main(PSTARTUP_ARGUMENT arg) { static US(msg, L"Hello world!"); NtDisplayString(&msg); NtTerminateProcess(NtCurrentProcess(), 0); } |
| Код | @echo off set include=I:\WINDDK\2600\inc\ddk\wxp;I:\WINDDK\2600\inc\wxp;%include% I:\WINDDK\2600\bin\x86\cl.exe native.cpp rem "C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.exe" native.cpp echo. pause |
при компиляции вываливается гора ошибок: | Код | native.cpp I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(350) : error C2146: syntax error : missing ';' before identifier 'Lock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(350) : error C2501: '_KDPC::PULONG_PTR' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(350) : error C2501: '_KDPC::Lock' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(1784) : error C2146: syntax error : missing ';' before identifier 'KSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(1784) : error C2501: 'KSPIN_LOCK' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(1785) : error C2143: syntax error : missing ';' before '*' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(1785) : error C2378: 'KSPIN_LOCK' : redefinition; symbol cannot be overloaded with a typedef I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(1784) : see declaration of 'KSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(1785) : error C2501: 'PKSPIN_LOCK' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(1833) : error C2143: syntax error : missing ';' before 'volatile' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(1833) : error C2501: '_KSPIN_LOCK_QUEUE::PKSPIN_LOCK' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(2152) : warning C4162: '_ReturnAddress' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6587) : error C2146: syntax error : missing ';' before identifier 'SetMember' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6587) : error C2501: '_KPCR::KAFFINITY' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6587) : error C2501: '_KPCR::SetMember' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6852) : warning C4162: '_InterlockedExchange' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6878) : warning C4162: '_InterlockedIncrement' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6891) : warning C4162: '_InterlockedDecrement' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6905) : warning C4162: '_InterlockedExchangeAdd' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6935) : warning C4162: '_InterlockedCompareExchange' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6987) : warning C4162: '_InterlockedOr' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(6997) : warning C4162: '_InterlockedAnd' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(7007) : warning C4162: '_InterlockedXor' : no function with C linkage found I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(9866) : error C2146: syntax error : missing ';' before identifier 'Affinity' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(9866) : error C2501: '_CM_PARTIAL_RESOURCE_DESCRIPTOR::__unnamed::__unnamed::KAFFINITY' : missing storage-class or type specif I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(9866) : error C2501: '_CM_PARTIAL_RESOURCE_DESCRIPTOR::__unnamed::__unnamed::Affinity' : missing storage-class or type specifi I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(10006) : error C2146: syntax error : missing ';' before identifier 'AffinityMask' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(10006) : error C2501: '_CM_COMPONENT_INFORMATION::KAFFINITY' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(10006) : error C2501: '_CM_COMPONENT_INFORMATION::AffinityMask' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(10747) : error C2146: syntax error : missing ';' before identifier 'Lock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(10747) : error C2501: '_KDEVICE_QUEUE::KSPIN_LOCK' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(10747) : error C2501: '_KDEVICE_QUEUE::Lock' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11355) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11355) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11355) : error C2182: 'KeInitializeSpinLock' : illegal use of type 'void' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11355) : error C2491: 'KeInitializeSpinLock' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11355) : error C2440: 'initializing' : cannot convert from 'int *' to 'int' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11355) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11364) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11364) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11364) : error C2182: 'KefAcquireSpinLockAtDpcLevel' : illegal use of type 'void' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11364) : error C2491: 'KefAcquireSpinLockAtDpcLevel' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11364) : error C2440: 'initializing' : cannot convert from 'int *' to 'int' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11364) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11371) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11371) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11371) : error C2182: 'KefReleaseSpinLockFromDpcLevel' : illegal use of type 'void' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11371) : error C2491: 'KefReleaseSpinLockFromDpcLevel' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11371) : error C2440: 'initializing' : cannot convert from 'int *' to 'int' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11371) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11381) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11381) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11381) : error C2491: 'KfAcquireSpinLock' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11381) : error C2440: 'initializing' : cannot convert from 'int *' to 'KIRQL' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11381) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11387) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11387) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11387) : error C2182: 'KfReleaseSpinLock' : illegal use of type 'void' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11387) : error C2491: 'KfReleaseSpinLock' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11387) : error C2440: 'initializing' : cannot convert from 'int *' to 'int' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11389) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11398) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11398) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11398) : error C2491: 'KeAcquireSpinLockRaiseToSynch' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11398) : error C2440: 'initializing' : cannot convert from 'int *' to 'KIRQL' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11398) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11449) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11449) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11449) : error C2491: 'KeTryToAcquireSpinLockAtDpcLevel' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11449) : error C2440: 'initializing' : cannot convert from 'int *' to 'BOOLEAN' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11449) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11561) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11561) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11561) : error C2182: 'KeAcquireInStackQueuedSpinLock' : illegal use of type 'void' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11561) : error C2491: 'KeAcquireInStackQueuedSpinLock' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11561) : error C2440: 'initializing' : cannot convert from 'int *' to 'int' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11563) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11582) : error C2146: syntax error : missing ')' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11582) : warning C4229: anachronism used : modifiers on data are ignored I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11582) : error C2182: 'KeAcquireInStackQueuedSpinLockAtDpcLevel' : illegal use of type 'void' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11582) : error C2491: 'KeAcquireInStackQueuedSpinLockAtDpcLevel' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11582) : error C2440: 'initializing' : cannot convert from 'int *' to 'int' This conversion requires a reinterpret_cast, a C-style cast or function-style cast I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11584) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11691) : error C2146: syntax error : missing ';' before identifier 'KeQueryActiveProcessors' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11691) : error C2501: 'KAFFINITY' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12025) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12035) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12062) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12071) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12079) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12087) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12096) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12420) : error C2146: syntax error : missing ';' before identifier 'Lock__ObsoleteButDoNotDelete' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12420) : error C2501: '_NPAGED_LOOKASIDE_LIST::KSPIN_LOCK' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12420) : error C2501: '_NPAGED_LOOKASIDE_LIST::Lock__ObsoleteButDoNotDelete' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(12811) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(13050) : error C2146: syntax error : missing ';' before identifier 'SpinLock' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(13050) : error C2501: '_ERESOURCE::KSPIN_LOCK' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(13050) : error C2501: '_ERESOURCE::SpinLock' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17113) : error C2061: syntax error : identifier 'PKSPIN_LOCK' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17433) : error C2065: 'PULONG_PTR' : undeclared identifier I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17433) : error C2146: syntax error : missing ')' before identifier 'LowLimit' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17433) : error C2182: 'IoGetStackLimits' : illegal use of type 'void' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17433) : error C2491: 'IoGetStackLimits' : definition of dllimport data not allowed I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17435) : error C2059: syntax error : ')' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17450) : error C2064: term does not evaluate to a function I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17979) : error C2146: syntax error : missing ';' before identifier 'Spin' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17979) : error C2501: '_IO_REMOVE_LOCK_DBG_BLOCK::KSPIN_LOCK' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(17979) : error C2501: '_IO_REMOVE_LOCK_DBG_BLOCK::Spin' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(19384) : error C2146: syntax error : missing ';' before identifier 'WorkSpace' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(19384) : error C2501: '_ARBITER_LIST_ENTRY::LONG_PTR' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(19384) : error C2501: '_ARBITER_LIST_ENTRY::WorkSpace' : missing storage-class or type specifiers I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(19702) : error C2061: syntax error : identifier 'PKAFFINITY' I:\WINDDK\2600\inc\ddk\wxp\ntddk.h(20112) : error C2061: syntax error : identifier 'PULONG_PTR' native.cpp(27) : error C2065: 'NtDisplayString' : undeclared identifier native.cpp(28) : error C2065: 'NtTerminateProcess' : undeclared identifier native.cpp(28) : error C2065: 'LONG_PTR' : undeclared identifier |
В чём пожет быть проблема? И как вообще DDK пользоваться? Я никогда драйвера и native-приложения на с++ не писал.
|