I just did this for NT4/VC 6.0: You can take an existing driver, rename the files to .cpp, find the
include “ntddk.h”, and surround it with an ‘extern “C” {’ and ‘}’, and "extern “C”
your DriverEntry and perhaps some dispatch routines. Improve you C code so
the C++ compiler likes it. Then it pretty much works. Windbag doesn’t seem to do any worse with C++.
Most C++ things work, except new, static initializers, and exceptions (and I hit a compiler
bug using pointers to members as arguments to template classes, if the member is not the
first field.)
A slightly less minimalist approach can be found at:
http://www.hollistech.com/Resources/Cpp/kernel_c_runtime_library.htm
The more elaborate packages try to give you a C++ interface to the DDK, rather than
a C interface (perhaps another level of software to debug through if you don’t have source, another
set of documentation to reference, or perhaps a major abstraction improvement).
Some packages provide user space simulations, which avoid blue screens, rebooting, and Windbag.
IMHO, implementing your own new/delete (or not using them at all), forces you to
understand the underlying expense of using typical C++ paradigms. Don’t expect
a typically C++ collection implementation that implements a linked list by doing a “new” on every Insert
and a delete on every Remove to perform as well has C-like implementations
with pointers embedded into the structures. Besides being higher overhead,
and increasing the odds of memory leaks, they also hit a on single SpinLock, which
will make you SMP performance die as you thrash those cache lines between CPUs.
Also, you still have to remember how big [I mean small] the kernel stack is. So C++ in
the kernel is still not for application programmers.
-DH
----- Original Message -----
From: “gnana Prakash”
To: “NT Developers Interest List”
Sent: Friday, May 25, 2001 8:58 AM
Subject: [ntdev] How i can develop device driver in vc++
> How i can develop device driver in vc++. What are the
> things i need to study. Any toolkit available for
> that, please give me the details about that.
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Auctions - buy the things you want at great prices
> http://auctions.yahoo.com/
>
> —
> You are currently subscribed to ntdev as: xxxxx@syssoftsol.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
—
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com