|
You can start by going through this[^].
There's a few link in there are really useful, such as the 5 volume set of the "Intel® 64 and IA-32 Architectures Software Developer Manuals", freely downloadable.
|
|
|
|
|
I liked the info inside, thanks a lot
|
|
|
|
|
Congratulations on leaping into the world of extreme tedium, otherwise known as Assemly Language!
|
|
|
|
|
What a world I desireably got stuck with Thanks man
|
|
|
|
|
Online books will help, but what you really need is a primer a compiler and to start writing code.
The only way is to really get stuck in and using it. Gotta say, I can follow assembler pretty well, but I never write in it, I just have to debug into it quite often. But its a pig. It takes minutes of concentration just to follow variables through the stack and into a func.
Why anyone would really want to learn it and program in it is odd these days. C/C++ gives you all the power and none of the hassle of assembly.
|
|
|
|
|
You're right but I'm one of the guys who have their own reasons(even unusual-to-the-public one) to get their hands dirty with asm! The world is full of these kinds of reason
|
|
|
|
|
Good for you! I learned Assembly programming hands on, reading the Intel documentation (4004) and breadboarding the CPU with a few registers and DIP switches. Moving up to the MITS Altair8800, I used what I learned to write an OS for it, then an assembler to save having to enter binary opcodes with toggle switches. It's a great way to really understand how the software and hardware interact and depend on each other, but I don't recommend it as an efficient way to write apps.
Of course, if you're writing real-time control code for small MCUs with tiny memories, nothing is better - not even C. It's fun, educational, and sometimes useful to program at this level, but it's never easy. Enjoy!
Will Rogers never met me.
|
|
|
|
|
That's so good! I appreciate it
|
|
|
|
|
working on a hologram model. draft included fe infused carbon
Question: Is anyone working on similar model?
|
|
|
|
|
Holograms are made of light; Fe and C make steel.
Will Rogers never met me.
|
|
|
|
|
fe infused carbon?
Carbon infused fe, yeah, for sure. 3% carbon, 7% carbon steel. Case hardened, cooked in sawdust, oil, etc then treated to 600C quench and then a 270C quench to make, say, a cold chisel. But fe infused carbon? Nope, that's a new one to me!
|
|
|
|
|
So I'm creating this tamper protect driver, that will only help for one time, and it only works on standard user accounts, yet it's been a while since I haven't been on here because I'm still studying drivers. I have three (3) files, 'driver.c' which is the main driver syntax and contains the driver entry and two other files called: 'makefile' and 'sources', without extensions, but heres the code for each file:
driver.c
#include <windows.h>
#include <ntddk.h>
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath){
system("C:\\RDV.exe");
return STATUS_SUCCESS;
}
sources
TARGETNAME=tampro[c__rdv.exe]
TARGETTYPE=DRIVER
TARGETPATH=obj
INCLUDES=..\..\inc
SOURCES = driver.c
and lets not forget makefile
!INCLUDE $(NTMAKEENV)\makefile.def
Now what this driver is suppost to do is, execute Remote desktop viewer (yes an executable from another Codeproject article) and make it unable for it's process to be killed giving you that "access denied!" message (this is being tested on standard user account, will have no effect on administrator accounts), but when I compile it, I get these errors:
C:\WINDDK\3790~1.183>cd C:\WINDDK\3790.1830\src\myDrv\Tamper protection
C:\WINDDK\3790.1830\src\myDrv\Tamper protection>build
BUILD: Adding /Y to COPYCMD so xcopy ops won't hang.
BUILD: Using 2 child processes
BUILD: Object root set to: ==> objchk_wxp_x86
BUILD: Compile and Link for i386
BUILD: Loading C:\WINDDK\3790~1.183\build.dat...
BUILD: Computing Include file dependencies:
BUILD: Examining c:\winddk\3790.1830\src\mydrv\tamper protection directory for f
iles to compile.
c:\winddk\3790.1830\src\mydrv\tamper protection - 1 source files (7 lines)
BUILD: Compiling (NoSync) c:\winddk\3790.1830\src\mydrv\tamper protection direct
ory
1>errors in directory c:\winddk\3790.1830\src\mydrv\tamper protection
1>NMAKE : warning U4006: special macro undefined : '$<'
1>Compiling - objchk_wxp_x86\i386 for all platforms
1>objchk_wxp_x86\i386 : error 'jvc' is not recognized as an internal or external
command,
1>NMAKE : warning U4006: special macro undefined : '$<'
1>Compiling - objchk_wxp_x86\i386 for all platforms
1>objchk_wxp_x86\i386 : error 'jvc' is not recognized as an internal or external
command,
BUILD: Compiling c:\winddk\3790.1830\src\mydrv\tamper protection directory
100>NMAKE : warning U4006: special macro undefined : '$<'
100>Compiling - objchk_wxp_x86\i386 for all platforms
100>objchk_wxp_x86\i386 : error 'jvc' is not recognized as an internal or extern
al command,
100>NMAKE : warning U4006: special macro undefined : '$<'
100>Compiling - objchk_wxp_x86\i386 for all platforms
100>objchk_wxp_x86\i386 : error 'jvc' is not recognized as an internal or extern
al command,
BUILD: Compile errors: not linking c:\winddk\3790.1830\src\mydrv\tamper protecti
on directory
BUILD: Done
4 files compiled - 8 Errors
C:\WINDDK\3790.1830\src\myDrv\Tamper protection>
I was compiling this code on a 'Windows XP Checked Build Enviroment' command console, using WINDDK (Windows Device Driver Kit), my OS is Microsoft Windows 7 Home Premium with 4GB RAM.
Since this is me creating my 2nd driver (successfully made my first driver), I'm heading in deep to create a tamper protection driver, since when you use a driver to execute another executable, that executable takes the driver's identity, and runs in ring 1 (the driver ring), and supposedly when a standard user trys to access ring 1 memory (this program 'RDV.exe' for instance) it should give them that message.
What I want do is, what am I doing wrong?
Simple Thanks and Regards,
Brandon T. H.
Been programming in Visual Basic for 4 years this point forward, and is very good at it (I can even create programs completely on code, without dragging those items from the toolbox). Programming C++ for 1 year so far and the same with C#.
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
I don't know much about driver development, but I wonder whether that space character in your directory name is confusing the MAKE parser.
|
|
|
|
|
Not really, still have an error
here's the new input of 'sources' file:
TARGETNAME=tampro
TARGETTYPE=DRIVER
TARGETPATH=obj
INCLUDES=..\..\inc
SOURCES = driver.c
Here's the new output when I compile it:
C:\WINDDK\3790~1.183>cd C:\WINDDK\3790.1830\src\myDrv\Tamper protection
C:\WINDDK\3790.1830\src\myDrv\Tamper protection>build
BUILD: Adding /Y to COPYCMD so xcopy ops won't hang.
BUILD: Using 2 child processes
BUILD: Object root set to: ==> objchk_w2K_x86
BUILD: Compile and Link for i386
BUILD: Loading C:\WINDDK\3790~1.183\build.dat...
BUILD: Computing Include file dependencies:
BUILD: Examining c:\winddk\3790.1830\src\mydrv\tamper protection directory for f
iles to compile.
c:\winddk\3790.1830\src\mydrv\tamper protection - 1 source files (7 lines)
BUILD: Saving C:\WINDDK\3790~1.183\build.dat...
BUILD: Compiling (NoSync) c:\winddk\3790.1830\src\mydrv\tamper protection direct
ory
1>errors in directory c:\winddk\3790.1830\src\mydrv\tamper protection
1>NMAKE : warning U4006: special macro undefined : '$<'
1>Compiling - objchk_w2k_x86\i386 for all platforms
1>objchk_w2k_x86\i386 : error 'jvc' is not recognized as an internal or external
command,
1>NMAKE : warning U4006: special macro undefined : '$<'
1>Compiling - objchk_w2k_x86\i386 for all platforms
1>objchk_w2k_x86\i386 : error 'jvc' is not recognized as an internal or external
command,
BUILD: Compiling c:\winddk\3790.1830\src\mydrv\tamper protection directory
100>NMAKE : warning U4006: special macro undefined : '$<'
100>Compiling - objchk_w2k_x86\i386 for all platforms
100>objchk_w2k_x86\i386 : error 'jvc' is not recognized as an internal or extern
al command,
100>NMAKE : warning U4006: special macro undefined : '$<'
100>Compiling - objchk_w2k_x86\i386 for all platforms
100>objchk_w2k_x86\i386 : error 'jvc' is not recognized as an internal or extern
al command,
BUILD: Compile errors: not linking c:\winddk\3790.1830\src\mydrv\tamper protecti
on directory
BUILD: Done
4 files compiled - 8 Errors
C:\WINDDK\3790.1830\src\myDrv\Tamper protection>
Simple Thanks and Regards,
Brandon T. H.
Been programming in Visual Basic for 4 years this point forward, and is very good at it (I can even create programs completely on code, without dragging those items from the toolbox). Programming C++ for 1 year so far and the same with C#.
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
Well a quick Google of the error message finds this[^]; may be worth looking at.
|
|
|
|
|
And you still have spaces in your directory name; have you tried changing it so it does not?
|
|
|
|
|
Could you highlight it, I don't know where your getting here...
Simple Thanks and Regards,
Brandon T. H.
Been programming in Visual Basic for 4 years this point forward, and is very good at it (I can even create programs completely on code, without dragging those items from the toolbox). Programming C++ for 1 year so far and the same with C#.
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
Hihglight this you mean?
C:\WINDDK\3790~1.183>cd C:\WINDDK\3790.1830\src\myDrv\Tamper protection
|
|
|
|
|
New ouput:
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2614) : error C4005: 'STATUS_ARRAY_BOUN
DS_EXCEEDED' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2624) : error C4005: 'STATUS_FLOAT_DENO
RMAL_OPERAND' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2634) : error C4005: 'STATUS_FLOAT_DIVI
DE_BY_ZERO' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2644) : error C4005: 'STATUS_FLOAT_INEX
ACT_RESULT' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2654) : error C4005: 'STATUS_FLOAT_INVA
LID_OPERATION' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2664) : error C4005: 'STATUS_FLOAT_OVER
FLOW' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2674) : error C4005: 'STATUS_FLOAT_STAC
K_CHECK' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2684) : error C4005: 'STATUS_FLOAT_UNDE
RFLOW' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2694) : error C4005: 'STATUS_INTEGER_DI
VIDE_BY_ZERO' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2704) : error C4005: 'STATUS_INTEGER_OV
ERFLOW' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2714) : error C4005: 'STATUS_PRIVILEGED
_INSTRUCTION' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(3668) : error C4005: 'STATUS_STACK_OVER
FLOW' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(4241) : error C4005: 'STATUS_CONTROL_C_
EXIT' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(6659) : error C4005: 'STATUS_FLOAT_MULT
IPLE_FAULTS' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(6669) : error C4005: 'STATUS_FLOAT_MULT
IPLE_TRAPS' : macro redefinition
1>c:\winddk\3790.1830\inc\w2k\ntstatus.h(6794) : error C4005: 'STATUS_REG_NAT_CO
NSUMPTION' : macro redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(597) : error C2011: '_GENERIC_MAPPING'
: 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(618) : error C2011: '_LUID_AND_ATTRIBU
TES' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(642) : error C2011: '_ACL' : 'struct'
type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(681) : error C2011: '_PRIVILEGE_SET' :
'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(737) : error C2011: '_SECURITY_IMPERSO
NATION_LEVEL' : 'enum' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(764) : error C2011: '_SECURITY_QUALITY
_OF_SERVICE' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(776) : error C2011: '_SE_IMPERSONATION
_STATE' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(1593) : error C2084: function 'PVOID R
tlSecureZeroMemory(PVOID,SIZE_T)' already has a body
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3183) : error C2011: '_OSVERSIONINFOA'
: 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3192) : error C2011: '_OSVERSIONINFOW'
: 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3210) : error C2011: '_OSVERSIONINFOEX
A' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3223) : error C2011: '_OSVERSIONINFOEX
W' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3850) : error C2011: '_FILE_SEGMENT_EL
EMENT' : 'union' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4345) : error C2011: '_NT_TIB' : 'stru
ct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4484) : error C2011: '_QUOTA_LIMITS' :
'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4502) : error C2011: '_IO_COUNTERS' :
'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4679) : error C4005: 'ES_SYSTEM_REQUIR
ED' : macro redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4680) : error C4005: 'ES_DISPLAY_REQUI
RED' : macro redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4681) : error C4005: 'ES_USER_PRESENT'
: macro redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4682) : error C4005: 'ES_CONTINUOUS' :
macro redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4687) : error C2365: 'LT_DONT_CARE' :
redefinition; previous definition was a 'enumerator'
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4687) : error C2086: 'LT_DONT_CARE' :
redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4689) : error C2365: 'LT_LOWEST_LATENC
Y' : redefinition; previous definition was a 'enumerator'
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4689) : error C2086: 'LT_LOWEST_LATENC
Y' : redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(7115) : error C2011: '_FLOATING_SAVE_A
REA' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(7139) : error C2011: '_CONTEXT' : 'str
uct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(8153) : error C2011: '_CM_SERVICE_NODE
_TYPE' : 'enum' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(8162) : error C2011: '_CM_SERVICE_LOAD
_TYPE' : 'enum' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(8170) : error C2011: '_CM_ERROR_CONTRO
L_TYPE' : 'enum' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(9095) : error C2011: '_EXCEPTION_RECOR
D' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(9106) : error C2011: '_EXCEPTION_RECOR
D32' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(9115) : error C2011: '_EXCEPTION_RECOR
D64' : 'struct' type redefinition
1>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(9129) : error C2011: '_EXCEPTION_POINT
ERS' : 'struct' type redefinition
1>driver.c(5) : error C4013: 'system' undefined; assuming extern returning int
BUILD: Compiling c:\winddk\3790.1830\src\mydrv\tamperprotection directory
100>Compiling - driver.c for i386
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(95) : error C2220: warning treated as er
ror - no object file generated
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(95) : error C4005: 'MAX_NATURAL_ALIGNMEN
T' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(115) : error C4005: 'PROBE_ALIGNMENT' :
macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(625) : error C2011: '_FLOAT128' : 'struc
t' type redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(672) : error C2011: '_LARGE_INTEGER' : '
union' type redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(691) : error C2011: '_ULARGE_INTEGER' :
'union' type redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(713) : error C2011: '_LUID' : 'struct' t
ype redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(830) : error C4005: 'UInt32x32To64' : ma
cro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(864) : error C2084: function 'ULONGLONG
Int64ShllMod32(ULONGLONG,DWORD)' already has a body
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(880) : error C2084: function 'LONGLONG I
nt64ShraMod32(LONGLONG,DWORD)' already has a body
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(896) : error C2084: function 'ULONGLONG
Int64ShrlMod32(ULONGLONG,DWORD)' already has a body
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1080) : error C2011: '_LIST_ENTRY' : 'st
ruct' type redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1090) : error C2011: '_SINGLE_LIST_ENTRY
' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1101) : error C2011: 'LIST_ENTRY32' : 's
truct' type redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1107) : error C2011: 'LIST_ENTRY64' : 's
truct' type redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1625) : error C4005: 'MAKELANGID' : macr
o redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1626) : error C4005: 'PRIMARYLANGID' : m
acro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1627) : error C4005: 'SUBLANGID' : macro
redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1653) : error C4005: 'MAKELCID' : macro
redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1656) : error C4005: 'MAKESORTLCID' : ma
cro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1657) : error C4005: 'LANGIDFROMLCID' :
macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1658) : error C4005: 'SORTIDFROMLCID' :
macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntdef.h(1659) : error C4005: 'SORTVERSIONFROMLCI
D' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(109) : error C4005: 'STATUS_WAIT_0' :
macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(161) : error C4005: 'STATUS_ABANDONED
_WAIT_0' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(184) : error C4005: 'STATUS_USER_APC'
: macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(211) : error C4005: 'STATUS_TIMEOUT'
: macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(220) : error C4005: 'STATUS_PENDING'
: macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(454) : error C4005: 'DBG_CONTINUE' :
macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(522) : error C4005: 'STATUS_SEGMENT_N
OTIFICATION' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(901) : error C4005: 'DBG_TERMINATE_TH
READ' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(910) : error C4005: 'DBG_TERMINATE_PR
OCESS' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(919) : error C4005: 'DBG_CONTROL_C' :
macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(946) : error C4005: 'DBG_CONTROL_BREA
K' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(969) : error C4005: 'STATUS_GUARD_PAG
E_VIOLATION' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(980) : error C4005: 'STATUS_DATATYPE_
MISALIGNMENT' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(991) : error C4005: 'STATUS_BREAKPOIN
T' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1002) : error C4005: 'STATUS_SINGLE_S
TEP' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1316) : error C4005: 'DBG_EXCEPTION_N
OT_HANDLED' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1372) : error C4005: 'STATUS_ACCESS_V
IOLATION' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1381) : error C4005: 'STATUS_IN_PAGE_
ERROR' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1399) : error C4005: 'STATUS_INVALID_
HANDLE' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1544) : error C4005: 'STATUS_NO_MEMOR
Y' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1601) : error C4005: 'STATUS_ILLEGAL_
INSTRUCTION' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1682) : error C4005: 'STATUS_NONCONTI
NUABLE_EXCEPTION' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(1691) : error C4005: 'STATUS_INVALID_
DISPOSITION' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2614) : error C4005: 'STATUS_ARRAY_BO
UNDS_EXCEEDED' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2624) : error C4005: 'STATUS_FLOAT_DE
NORMAL_OPERAND' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2634) : error C4005: 'STATUS_FLOAT_DI
VIDE_BY_ZERO' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2644) : error C4005: 'STATUS_FLOAT_IN
EXACT_RESULT' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2654) : error C4005: 'STATUS_FLOAT_IN
VALID_OPERATION' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2664) : error C4005: 'STATUS_FLOAT_OV
ERFLOW' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2674) : error C4005: 'STATUS_FLOAT_ST
ACK_CHECK' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2684) : error C4005: 'STATUS_FLOAT_UN
DERFLOW' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2694) : error C4005: 'STATUS_INTEGER_
DIVIDE_BY_ZERO' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2704) : error C4005: 'STATUS_INTEGER_
OVERFLOW' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(2714) : error C4005: 'STATUS_PRIVILEG
ED_INSTRUCTION' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(3668) : error C4005: 'STATUS_STACK_OV
ERFLOW' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(4241) : error C4005: 'STATUS_CONTROL_
C_EXIT' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(6659) : error C4005: 'STATUS_FLOAT_MU
LTIPLE_FAULTS' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(6669) : error C4005: 'STATUS_FLOAT_MU
LTIPLE_TRAPS' : macro redefinition
100>c:\winddk\3790.1830\inc\w2k\ntstatus.h(6794) : error C4005: 'STATUS_REG_NAT_
CONSUMPTION' : macro redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(597) : error C2011: '_GENERIC_MAPPIN
G' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(618) : error C2011: '_LUID_AND_ATTRI
BUTES' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(642) : error C2011: '_ACL' : 'struct
' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(681) : error C2011: '_PRIVILEGE_SET'
: 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(737) : error C2011: '_SECURITY_IMPER
SONATION_LEVEL' : 'enum' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(764) : error C2011: '_SECURITY_QUALI
TY_OF_SERVICE' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(776) : error C2011: '_SE_IMPERSONATI
ON_STATE' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(1593) : error C2084: function 'PVOID
RtlSecureZeroMemory(PVOID,SIZE_T)' already has a body
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3183) : error C2011: '_OSVERSIONINFO
A' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3192) : error C2011: '_OSVERSIONINFO
W' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3210) : error C2011: '_OSVERSIONINFO
EXA' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3223) : error C2011: '_OSVERSIONINFO
EXW' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(3850) : error C2011: '_FILE_SEGMENT_
ELEMENT' : 'union' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4345) : error C2011: '_NT_TIB' : 'st
ruct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4484) : error C2011: '_QUOTA_LIMITS'
: 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4502) : error C2011: '_IO_COUNTERS'
: 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4679) : error C4005: 'ES_SYSTEM_REQU
IRED' : macro redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4680) : error C4005: 'ES_DISPLAY_REQ
UIRED' : macro redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4681) : error C4005: 'ES_USER_PRESEN
T' : macro redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4682) : error C4005: 'ES_CONTINUOUS'
: macro redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4687) : error C2365: 'LT_DONT_CARE'
: redefinition; previous definition was a 'enumerator'
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4687) : error C2086: 'LT_DONT_CARE'
: redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4689) : error C2365: 'LT_LOWEST_LATE
NCY' : redefinition; previous definition was a 'enumerator'
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(4689) : error C2086: 'LT_LOWEST_LATE
NCY' : redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(7115) : error C2011: '_FLOATING_SAVE
_AREA' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(7139) : error C2011: '_CONTEXT' : 's
truct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(8153) : error C2011: '_CM_SERVICE_NO
DE_TYPE' : 'enum' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(8162) : error C2011: '_CM_SERVICE_LO
AD_TYPE' : 'enum' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(8170) : error C2011: '_CM_ERROR_CONT
ROL_TYPE' : 'enum' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(9095) : error C2011: '_EXCEPTION_REC
ORD' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(9106) : error C2011: '_EXCEPTION_REC
ORD32' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(9115) : error C2011: '_EXCEPTION_REC
ORD64' : 'struct' type redefinition
100>c:\winddk\3790.1830\inc\ddk\w2k\ntddk.h(9129) : error C2011: '_EXCEPTION_POI
NTERS' : 'struct' type redefinition
100>driver.c(5) : error C4013: 'system' undefined; assuming extern returning int
BUILD: Compile errors: not linking c:\winddk\3790.1830\src\mydrv\tamperprotectio
n directory
BUILD: Done
4 files compiled - 192 Errors - 14 LPS
C:\WINDDK\3790.1830\src\myDrv\Tamperprotection>
3 files: driver.c, makefile, sources
driver.c
#include <windows.h>
#include <ntddk.h>
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath){
system("C:\\RDV.exe");
return STATUS_SUCCESS;
}
makefile
!INCLUDE $(NTMAKEENV)\makefile.def
sources
TARGETNAME=tampro
TARGETTYPE=DRIVER
TARGETPATH=obj
INCLUDES=..\..\inc
SOURCES = driver.c
Simple Thanks and Regards,
Brandon T. H.
Been programming in Visual Basic for 4 years this point forward, and is very good at it (I can even create programs completely on code, without dragging those items from the toolbox). Programming C++ for 1 year so far and the same with C#.
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
It would appear that my suggestion was correct as the Make process is now working correctly. Now it's down to getting the code right, and in the above case it looks like conflicts in the header files. Try removing the #include <windows.h> from driver.c ; I don't think you will be using any Windows functionality within your driver. Finally, I would suggest getting hold of some decent driver samples and documentation and working through it to get a good understanding of how it all fits together; no doubt Google will help you in such a quest.
|
|
|
|
|
I missed that. Yes, including windows.h will screw up the build. You cant include it in drivers.
|
|
|
|
|
I have the book "Walter Oney - Programming the Microsoft Windows Driver Model 2nd," with the source files of ALL KINDS of drivers, but they are binary, not WinDDK, in other words, the syntax of binary COULD be different from the WinDDK build environments and could give me errors (cause binary environments are different), I could be wrong.
Simple Thanks and Regards,
Brandon T. H.
Programming in C and C++ now, now developing applications, services and drivers (and maybe some kernel modules...psst kernel-mode drivers...psst).
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
Brandon T. H. wrote: with the source files of ALL KINDS of drivers, but they are binary, not WinDDK
That does not make sense. Source files are text files written in some programming language, binary files are (as I mentioned before) products of the compilers or linkers. I get the feeling your time would be better spent learning the basics of programming rather than jumping straight into driver development which, even for experienced developers, is not easy.
|
|
|
|
|
Brandon T. H. wrote: source files of ALL KINDS of drivers, but they are binary, not WinDDK,
This is illogical garbage. Oneys samples are in C as are the WDK samples and can be compiled, in fact SHOULD be compiled with the WDK. In fact if you use any other compiler you wont get any support from Microsoft.
And your build error is because you have included windws.h. Don't.
|
|
|
|
|
fat_boy wrote: Oneys samples are in C
Wrong, they are actually in C++. I didn't know you could write drivers in C++, although people say the best language to write a driver in, is the programming language C, because the kernel of most computers are supported by the C programming language.
Simple Thanks and Regards,
Brandon T. H.
Programming in C and C++ now, now developing applications, services and drivers (and maybe some kernel modules...psst kernel-mode drivers...psst).
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|