OSRLogoOSRLogoOSRLogo x Seminar Ad

Everything Windows Driver Development

GoToHomePage xLoginx

    Thu, 14 Mar 2019     118020 members


  Online Dump Analyzer
OSR Dev Blog
The NT Insider
The Basics
File Systems
ListServer / Forum
  Express Links
  · The NT Insider Digital Edition - May-June 2016 Now Available!
  · Windows 8.1 Update: VS Express Now Supported
  · HCK Client install on Windows N versions
  · There's a WDFSTRING?
  · When CAN You Call WdfIoQueueP...ously

Don't Define NT_UP

Using the Windows XP DDK (or, really, ANY time you build a driver) make sure you do not to define NT_UP.

NT_UP is defined when the uniprocessor build of the o/s is created, and turns on various short-cuts that can be used when it is known that only a single CPU is present.

Due to conditionals in ntddk.h and wdm.h, a driver that's built with NT_UP defined will not work correctly on an MP system. The symptoms that are exhibited can be rather subtle: For example, calls to KeGetCurrentProcessorNumber() can return the wrong processor number.

NOT defining the symbol produces a driver that works on BOTH uni- and multi- processor systems. So, there's really no reason a driver should ever define this symbol -- EVEN when that driver is targetted to work solely to a uniprocessor system.


Related Articles
Just Checking - Installing a Partially Checked Build
Taming the Beast - The Windows 2000 Build Environment
Build Tricks: Checked and Free Revisited
Save the Environment! - Integrating Build and Developer Studio
If You Build It - Visual Studio and Build Revisited
Building Within Visual Studio (IDE)
New Build Definitions?
Definition of DDKBUILDENV Changed in Windows XP®
Definition of “CPU” Environment Variable Changed

User Comments
Rate this article and give us feedback. Do you find anything missing? Share your opinion with the community!
Post Your Comment

Post Your Comments.
Print this article.
Email this article.
bottom nav links