Set BASEDIR environment variable to point to your favorite DDK (I prefer NT4, because I'm writing highly compatible drivers).
But latest time DDK 2003 is oftenly used. So we shall tune template project for DDK 2003.
See migrating VC6 driver project to VC8 with DDK 2003 for DDK 2003 specific details.Attention! If you want to build driver under VC8, make sure that x64 platform support is installed there.
Also note, that DKK 2003 is mandatory.

BASEDIR = %BASEDIR2K3%

Create project

File -> New... -> Project

Chose Visual C++ -> Win32 in Project Types tree.

Chose Win32 Project in Templates list.

Enter project name, directory path and solution name. As usually. You can also uncheck Create directory for solution
box. Then both project file (.VCPROJ) and .SLN will be created in same directory. By default Visual Studio 8 creates separate
subdirectory for project.

Note 1:
here the separator character is comma. Do not take items in quotation marks.
Note 2:
You can place these defines to your .H used for building .PCH or
some common .H file. Look for example with *.cpp files in pch_cpp_x64 folder and
with *.c files in pch_c inside driver_template_v7.rar/tgz (9.4 Kb/10.1 Kb) archive.
Note 3:
And if you want to keep both Win32 and x64, put common defined to header and platform-specific - to project settings.

-> Code Generation

"Enable String Pooling" = "Yes (/GF)"

"Enable C++ Exceptions" = "Yes (/EHsc)"

"Basic Runtime Checks" = "Default"

"Struct member alignment" = "8 Bytes (/Zp8)"

"Buffer Security Check" = "No (/GS-)"

-> Language

"Enable Run-Time Type Info" = "No (/GR-)"

-> Precompiled Headers

"Create/Use Precompiled Header" = "Create Precompiled Header (/Yc)"

"Create/Use PCH Through File" = "StdAfx.h"

-> Advanced

"Calling convention" = "__stdcall (/Gz)"

-> Command Line
Remove "/GZ" from
"Win32 Debug" configuration. In most cases this will save us from such trouble as
"Debug build works, but Release doesn't". Builds will not differ in bug reproducing
(uninitialized variables and memory blocks, overflows, etc.). In addition,
this pretty switch instructs compiler to include stack consistency check code into output.
This check leads to unresolved external _chkesp on link stage.

Set list of import libraries for DDK libraires in "Additional Dependencies":

ntoskrnl.lib
Hal.lib

Note 1:
here the separator character is space character. Do not take paths in quotation marks.
Note 2:int64.lib doesn't exist for x64 platform.

Press button [...] right to "Additional Dependencies" and uncheck
"Inherit from parent or project defaults" box.

"Ignore all default libraries" = "Yes (/NODEFAULTLIB)"

"Debugging"

"Generate Debug Info" = "Yes (/DEBUG)"

"System"

"SubSystem" = "Native (/SUBSYSTEM:NATIVE)"

"Driver" = "Driver (/DRIVER)"

"Advanced"

"Entry point symbol" = "DriverEntry"

-> Command Line

Separately for each configuration add "/safeseh:no" switch.

OK

File -> Save All

And now copy this empty project somewhere for future use as template for your driver projects :)
For example:
driver_template_v7.rar/tgz (9.4 Kb/10.1 Kb)

Comments to the sample

Along with main thing - pch_cpp_x64 archive includes previous driver project for Win32 with some updates.
Inside pch_cpp_x64 you can find VC8 project with both Win32 and x64 configurations. This project requires
you to install x64 support in VC8. There is also Makefile which can be used with nmake from either VC6 or VC8.
There is no VC6 project for x64 since I don't know how to set alternative compiler for x64 configurations.
Makefile expects DDK 2003 presence for x64 configuration and DDK NT4 for Win32.