4

I am a beginner at DDK/WDM driver developing field. I have a task which involves porting a virtual device driver from x86 to x64 (intel). I got the source code, I modified it a bit and compiled it succesfuly with DDK (build environments). But when I tried to load it on a ia64 Windows7 machine it didn't want to load. Then I tried some simple examples of device drivers from

--http://www.codeproject.com/KB/system/driverdev.aspx (I put '--' to be able to post the hyperlink) and from other links but still the same problem.

I hear on a forum that some libraries that you use to link are not compatible with the new machines and suggested to link to another similar libraries...but still didn't worked.

When I build I use "-cefw" command line parameters as suggested.

I do not have an *.inf file asociated but I'm copying it in system32/drivers and I'm using WinObj to see if next restart it's loaded into the memory.

I also tried this program ( http://www.codeproject.com/KB/system/tdriver.aspx ) to load the driver into the memory but still didn't worked for me.

Please please help me...I'm stuck on this and my deadline already passed. I feel I'driving nuts in here trying to discover what am I doing wrong.

user295975
  • 41
  • 1
  • 2
  • 1
    Besides the digital signature issues (you *must* sign drivers on x64, there is no alternative, even in test mode you need to sign with a self signed certificate), you also *need* to install via .inf file. Putting the driver in system32\drivers won't do absolutely anything. If the driver is non-pnp (unlikely) then you don't need an .inf file, but you still need to manually create the associated services under service control manager with sc.exe. – Aram Hăvărneanu Mar 20 '10 at 00:11

3 Answers3

1

So, to summarize everything:

  1. You need to build for the corect architecture (x64 for Intel/AMD CPUs).
  2. You MUST sign your driver. You must do this even in test mode with a self signed certificate. There is no alternative.
  3. You MUST use an .inf file to install. If the driver is non-pnp then you don't need an .inf file, but it is very unlikely that the driver is non-pnp. In that case you need to manually create the associated service for the driver in the service control manager with sc.exe or programmatically with the SCM API. If the driver isw pnp (most likely) you must install it via an .inf file (with devcon.exe or other way). Also, installing it is not the same as loading it. For that, the appropriate hardware must be present or you must enumerate it in software (with devcon.exe for exemple).
  • 2
    On point #2, "There is no alternative" is not strictly true, because you can use F8 to bypass the signature check. It can get you by to try a driver out, but it certainly won't be a viable solution to deploy the driver. – myron-semack Apr 09 '10 at 21:19
0

I did not wrote a driver, but on the basis on what I hear from colleagues: Are your driver digitaly signed? If not, look for information on loading unsigned drivers on 64bit systems.

VitalyVal
  • 1,320
  • 12
  • 13
  • No...it is not digitaly signed but I don't think that's it because at one hand it doesn't pop up with the warning/error message of not being digitally signed, on the second I disable the verification on booting and third because I used a program found on web that managed to get me an unverified license and to try to test my driver with that but still nothing. Thanks for your suggestion! Everyone out there ... please help me! – user295975 Mar 18 '10 at 06:51
  • You can't load unsigned drivers under 64 bit windows. You simply can't. Even in test mode you need to sign it with a self signed test certificate. There is no pop up warning. It is impossible to do it without a certificate. – Aram Hăvărneanu Mar 20 '10 at 00:08
  • You can use F8 during boot to bypass the driver signature check. – myron-semack May 21 '10 at 20:04
0

Two things:

  1. You mention both x64 (also called x86-64, AMD64, or EMT64) and IA64 (Itanium). You understand they are two completely different architectures, right? Do you have an Itanium System? If not, you should not be compiling anything using the IA-64 build environment. It won't run on a standard PC (32 or 64).

  2. Under 64-bit, the driver must digitally signed for production use. You will need to get an Authenticode certificate from Verisign or similar. For testing purposes, you can bypass the signature check by pressing F8 at boot time. You can also sign with a test certificate.

    http://www.microsoft.com/whdc/winlogo/drvsign/drvsign.mspx

Community
  • 1
  • 1
myron-semack
  • 6,259
  • 1
  • 26
  • 38