Hi, all,
I have been suffering from a problem during my installation. The DIF_INSTALLDEVICE is not called in Windows 7 x64 and Windows 2008 Server R2 X64. Therefore, my changes about post_processing could not take effect. But it works fine on Windows XP x86. That’s weird. Based on my understanding, they should act the same way. Thanks a lot in advance for any help.
Any comments would be greatly appreciated!
Regards,
Joseph
KMCS signature failure?
–
Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com
wrote in message news:xxxxx@ntdev…
> Hi, all,
>
> I have been suffering from a problem during my installation. The DIF_INSTALLDEVICE is not called in Windows 7 x64 and Windows 2008 Server R2 X64. Therefore, my changes about post_processing could not take effect. But it works fine on Windows XP x86. That’s weird. Based on my understanding, they should act the same way. Thanks a lot in advance for any help.
>
> Any comments would be greatly appreciated!
>
> Regards,
>
> Joseph
>
I disabled signatue enforcement before I installed my driver on Windows 7 x64 and Windows Server 2008 R2 x64.
Then what the setupapi logs say?
–
Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com
wrote in message news:xxxxx@ntdev…
>I disabled signatue enforcement before I installed my driver on Windows 7 x64 and Windows Server 2008 R2 x64.
>
Below is a code excerpt of “setupapi.dev.log”.
{DIF_INSTALLINTERFACES - exit(0x00000000)} 14:43:26.255
ndv: Installing device…
dvi: {DIF_INSTALLDEVICE} 14:43:26.255
dvi: No class installer for ‘RocketPort-Universal PCI Quad/Octa or Quad/Octa Plus, PCI-BUS’
dvi: CoInstaller 1: Enter 14:43:26.255
dvi: CoInstaller 1: Exit
dvi: Default installer: Enter 14:43:26.255
dvi: {Install DEVICE}
inf: Opened PNF: ‘c:\windows\system32\driverstore\filerepository\netctmrk.inf_amd64_neutral_61d3a1ed85d05d31\netctmrk.inf’ ([strings])
dvi: Processing Registry/Property directives…
inf: {Install Inf Section [RCKTPTPCI8.NTAMD64]}
inf: AddReg=RocketPort.Reg.NTamd64 (netctmrk.inf line 144)
inf: {Install Inf Section [RCKTPTPCI8.NTAMD64] exit (0x00000000)}
inf: {Install Inf Section [RCKTPTPCI8.NTAMD64.Hw]}
inf: Empty section
inf: {Install Inf Section [RCKTPTPCI8.NTAMD64.Hw] exit (0x00000000)}
dvi: {Writing Device Properties}
dvi: Provider name=Comtrol Corporation
dvi: DriverDate 09/15/2010
dvi: DriverVersion=6.3.0.0
dvi: Class name=MultiPortSerial
dvi: Manufacturer=Comtrol Corporation
dvi: Matching DeviceID=pci\ven_11fe&dev_0805
dvi: Strong Name=oem2.inf:ComtrolAsync.NTamd64:RCKTPTPCI8:6.3.0.0:pci\ven_11fe&dev_0805
dvi: {Writing Device Properties - Complete}
inf: {Install Inf Section [RCKTPTPCI8.NTAMD64.Services]}
inf: AddService=RocketPortx64,2,RocketPort.NTamd64.Service,common.EventLog.NTamd64 (netctmrk.inf line 329)
inf: ServiceType=1 (netctmrk.inf line 720)
inf: StartType=3 (netctmrk.inf line 721)
inf: ErrorControl=1 (netctmrk.inf line 722)
inf: ServiceBinary=C:\Windows\system32\DRIVERS\rocketx64.sys (netctmrk.inf line 723)
inf: DisplayName=“Comtrol RocketPort” (netctmrk.inf line 719)
dvi: Add Service: Created service ‘RocketPortx64’.
inf: AddReg=common.AddEventLog.reg.NTamd64 (netctmrk.inf line 762)
inf: {Install Inf Section [RCKTPTPCI8.NTAMD64.Services] exit(0x00000000)}
dvi: Updated reflected section names for: oem2.inf
dvi: {Install DEVICE exit (0x00000000)}
dvi: Writing common driver property settings.
dvi: DriverDescription=RocketPort-Universal PCI Quad/Octa or Quad/Octa Plus, PCI-BUS
dvi: DeviceDisplayName=RocketPort-Universal PCI Quad/Octa or Quad/Octa Plus, PCI-BUS
dvi: {Restarting Devices} 14:43:26.957
dvi: Restart: PCI\VEN_11FE&DEV_0805&SUBSYS_080511FE&REV_01\4&4F1976B&0&00F0
dvi: Restart complete.
dvi: {Restarting Devices exit} 14:43:28.049
dvi: Default installer: Exit
dvi: CoInstaller 1: Enter (Post Processing) 14:43:28.049
dvi: CoInstaller 1: Exit (Post Processing)
dvi: {DIF_INSTALLDEVICE - exit(0x00000000)} 14:43:28.064
dvi: {DIF_NEWDEVICEWIZARD_FINISHINSTALL} 14:43:28.064
dvi: No class installer for ‘RocketPort-Universal PCI Quad/Octa or Quad/Octa Plus, PCI-BUS’
dvi: CoInstaller 1: Enter 14:43:28.064
dvi: CoInstaller 1: Exit
dvi: Default installer: Enter 14:43:28.064
dvi: Default installer: Exit
dvi: {DIF_NEWDEVICEWIZARD_FINISHINSTALL - exit(0xe000020e)} 14:43:28.064
ndv: Device install status=0x00000000
ndv: Performing device install final cleanup…
If any more log is needed, please let me know. Thank you very much.
Any body has encountered this?
The DIF_INSTALLDEVICE is not called in my amd 64 installation dlls, but why it still doesn’t work after the x86 installation dlls are installed in Windows Server 2008 R2 x64( they work on Windows 7 x86)?
Or Is is possible for me to correct the problem by resigning the signature after I changed the coinstaller dll file?
Is the build environment for coinstaller 32 bit different from the one for coinstaller x64?
Yes. Coinstallers must be x86 on x86 OS and x64 on x64 OS.
Good Luck,
Dave Cattley
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of luming419@163.com
Sent: Tuesday, October 26, 2010 9:36 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] DIF_INSTALLDEVICE not called in Windows 7 x64 and
Windows 2008 Server R2 X64
Is the build environment for coinstaller 32 bit different from the one for
coinstaller x64?
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer
Thank you Dave.
I found that the trouble is that my coinstaller dll for x64 OS has no exported functions present. But the dll built for x86 has all the exported functions and works fine in 32 bit OSes.
Would you please let me know what should I do to build the x64 coinstaller dll?
Look at the build logs, is your .def file on the cmd line? Or are you using declspec(dllexport) ?
d
dent from a phpne with no keynoard
-----Original Message-----
From: luming419@163.com
Sent: October 26, 2010 10:17 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] DIF_INSTALLDEVICE not called in Windows 7 x64 and Windows 2008 Server R2 X64
Thank you Dave.
I found that the trouble is that my coinstaller dll for x64 OS has no exported functions present. But the dll built for x86 has all the exported functions and works fine in 32 bit OSes.
Would you please let me know what should I do to build the x64 coinstaller dll?
—
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Thank you Doron for your clue.
I use .def file to define my export functions in my coinstaller project. And this file is shared by my x86 and x64 coinstaller dll files. But just the x86 dll works fine. The x64 dll is incorrect without any dll dependencies and exported functions.
Should I add some options to my build command line? For now, I just use “build -cZMg”.
Thanks for any lead.
Regards,
Joseph
Thank you all for your help. The cause of the trouble is that Windbg is not allowed to enter DIF_INSTALLDEVICE request processing no matter whether by debugging into code directly or by Dbgprinting out messages. Of course, our codes also have a problem, so the installation has no any response.
It would be greatly apprecited if any one can tell why MS decides to implement it this way?
Thanks again and best regards,
Joseph
Open a x64 build environment using the WDK short-cuts and build your
coinstaller.
How do you build the x86 binary?
As for lacking exports - does your SOURCES file specify a
DLLDEF= and do you define the exports in that .DEF file? The
export specification should be the same for both x86 and x64 builds. A
simple .DEF file
EXPORTS
MyCoInstaller
Is all you need (note: you do not need any sections other than EXPORTS)
Good Luck,
Dave Cattley
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of luming419@163.com
Sent: Wednesday, October 27, 2010 1:18 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] DIF_INSTALLDEVICE not called in Windows 7 x64 and
Windows 2008 Server R2 X64
Thank you Dave.
I found that the trouble is that my coinstaller dll for x64 OS has no
exported functions present. But the dll built for x86 has all the exported
functions and works fine in 32 bit OSes.
Would you please let me know what should I do to build the x64 coinstaller
dll?
—
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer
luming419@163.com wrote:
Thank you Doron for your clue.
I use .def file to define my export functions in my coinstaller project. And this file is shared by my x86 and x64 coinstaller dll files. But just the x86 dll works fine. The x64 dll is incorrect without any dll dependencies and exported functions.
Send me your source code by private email and I’ll tell you what you did
wrong.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Thank you Tim and David a lot.
This issue has been figured out. The codes for DIF_INSTALLREQUEST of coinstaller are executed actually, although we cann’t see any DbgPrint output or debug them by WinDbg.exe. That is really a headache. So far, I haven’t found why MS wants to treat coinstaller this way.
Joseph
What sort of Windbg session are you expecting to see the output from?
Are you (for example) using native x64 Windbg on the target system and
attaching to the instance of the PnP device installer helper process that is
installing your device (or devcon or whatever is loading your CoInst dll)?
If you are attached to the process then I would expect to see output from
OutputDebugString() in Windbg.
If you are attached to the target system via Windbg/KD (kernel debug
session) then you have to enable some nt!Kd_xxx_Mask bits somewhere to get
the debug output to show from usermode. I don’t remember if it is
nt!Kd_DEFAULT_Mask or nt!Kd_WIN2000_Mask or some other.
And if neither of these comments apply, I have no idea why you don’t get
output. I recall getting debug output from the coinstallers I have worked
with on both x86 and x64 platforms.
Good Luck,
Dave Cattley
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of luming419@163.com
Sent: Friday, October 29, 2010 2:18 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] DIF_INSTALLDEVICE not called in Windows 7 x64 and
Windows 2008 Server R2 X64
Thank you Tim and David a lot.
This issue has been figured out. The codes for DIF_INSTALLREQUEST of
coinstaller are executed actually, although we cann’t see any DbgPrint
output or debug them by WinDbg.exe. That is really a headache. So far, I
haven’t found why MS wants to treat coinstaller this way.
Joseph
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer
I used native Windbg on the target ssytem by attaching it to the mmc. I could see all the output of coinstaller except that inside DIF_INSTALLDEVICE.
Thank you much for your help.
Regards,
Joseph Deer