- Repost: DIFxApp Legacy Mode on Windows 2000
- Posted by Yoke on August 9th, 2005
This is a repost but I am now invoking the tech support powers of the MSDN
Universal Subscription. Please forgive my redundancy.
I have an installation for an unsigned driver that I have configured for
legacy mode (flags set to 0x8 in the MsiDriverPackages custom table). It
works fine on XP but fails on 2000. The error code that I am seeing from
DIFxApp is 0x800B0100 which I believe indicates a signature problem. What
else do I need to do to get this to work?
Mike
- Posted by Jeff McCashland [MSFT] on August 10th, 2005
Mike,
What the legacy mode switch does for DIFxApp is invoke the signature
behavior of the underlying OS, in this case Windows 2000. If the driver
is unsigned, then TRUST_E_NOSIGNATURE is expected. Are you being prompted?
The class of driver and unsigned driver policy on the machine has an
affect on the install. Try comparing verbose setupapi logs between XP and
Win2k to see what's going on.
[MS] Jeff McCashland
jeffm@online.microsoft.com
This posting is provided "AS IS" with no warranties, and confers no rights.
- Posted by Yoke on August 10th, 2005
Jeff,
On Windows XP, I see this in the MSI log:
DIFXAPP: INFO: ENTER: DriverPackageInstallW
DIFXAPP: INFO: rausbcip.inf: Skipping DFX signature verification.
DIFXAPP: INFO: Copying 'rausbcip.inf' to driver store...
DIFXAPP: INFO: Copying 'VirtualBackplane.sys' to driver store...
DIFXAPP: INFO: Copying 'rapnp.sys' to driver store...
DIFXAPP: INFO: Copying 'rausbcip.sys' to driver store...
On Windows 2000, I see this:
DIFXAPP: INFO: ENTER: DriverPackageInstallW
DIFXAPP: ERROR: rausbcip.inf: Driver package 'D:\Program Files\Rockwell
Automation\Rockwell Automation USB CIP Driver Package\i386\rausbcip.inf' has
no CatalogFile entry.
DIFXAPP: INFO: Successfully removed {2F7F024E-3E97-5C21-98AD-B0AC00D05F69}
from reference list of driver store entry
DIFXAPP: INFO: RETURN: DriverPackageInstallW (0x800B0100)
I have setup my Windows 2000 machine to install drivers regardless of
signature. I am not being prompted, the install just fails.
Mike
"Jeff McCashland [MSFT]" wrote:
- Posted by Yoke on August 12th, 2005
Does this mean that unsigned drivers cannot be installed on Windows 2000 with
DIFxAPP?
Mike
"Yoke" wrote:
- Posted by Jeff McCashland [MSFT] on August 17th, 2005
Mike,
It's difficult to say with the information provided. Are you able to
install your driver package without DIFxApp? I believe you should expect
the same behavior using DIFxApp in Legacy Mode, that you get when you
install your package without DIFxApp (in regards to signing).
If you would like, you can send your INF, MSI log, and verbose setupapi.log
file to me (email below without 'online.') and I'll look at it.
Thanks,
[MS] Jeff McCashland
jeffm@online.microsoft.com
This posting is provided "AS IS" with no warranties, and confers no rights.
- Posted by Yoke on August 17th, 2005
Jeff,
Thanks for the offer. A hardware-first install through the Add New Hardware
wizard works fine. Installing the driver alone with dpinst works fine too. I
have since learned that there is a bug in the DIFxAPP 2.0 stuff regarding
unsigned drivers and Windows 2000. Given that, I will probably have to revert
to wrapping dpinst and another setup application for my "value-add software"
in a custom setup application.
Mike
"Jeff McCashland [MSFT]" wrote:
- Posted by Jeff McCashland [MSFT] on August 18th, 2005
Mike,
I searched our bug database and checked with the DIFx developers, and we're
not aware of a bug in DIFx 2.0 for installing unsigned drivers on Windows
2000 using Legacy mode. If you could send your information, we can track
it down. If we find a bug, we might be able to give you a workaround and
get a fix in the works.
Thanks,
JeffM
- Posted by Yoke on August 18th, 2005
Joe Marusak told me that it was a bug in DIFxAPP 2.0 and that it was on the
high priority list to be fixed. Is this bad information?
Mike
"Jeff McCashland [MSFT]" wrote:
- Posted by Jeff McCashland [MSFT] on August 18th, 2005
Mike,
I'm discussing this with Joe and the DIFx devs. I'll let you know what we
come up with.
[MS] Jeff McCashland
jeffm@online.microsoft.com
This posting is provided "AS IS" with no warranties, and confers no rights.
- Posted by Jeff McCashland [MSFT] on August 22nd, 2005
Mike,
It turns out that this is not the known issue that Joe thought it was.
That issue isn't applicable to Legacy Mode.
Please open a case with PSS Developer Support (800-936-5800) so we can
investigate this. Specify that you are encountering this issue while
developing a driver, so the case will be sent to me. Hopefully, we'll be
able to help you get this working. If it does turn out to be a problem
with DIFx 2.0, then you won't be charged for the incident.
[MS] Jeff McCashland
jeffm@online.microsoft.com
This posting is provided "AS IS" with no warranties, and confers no rights.
- Posted by Yoke on August 23rd, 2005
Jeff,
I'm a little confused. I thought that legacy mode was required in order to
install an unsigned driver with DIFx.
Mike
"Jeff McCashland [MSFT]" wrote:
- Posted by Ilya Konstantinov on August 23rd, 2005
Yoke wrote:
I think Jeff meant to say the issue they previously thought to be
relevant isn't at all relevant in the Legacy Mode case, so keep using
Legacy Mode.
Jeff, I've been having the same problem as Mike on Windows 2000. I'm
attaching some of the tests I've performed to narrow down the problem.
They don't give me any hints but I hope they might be helpful to the MS
guys. Some of my tests include signing the driver, but I never actually
intended to sign it nor to submit it to WHQL; it's an internal
development.
As to PSS Developer Support, I'll need to check with my manager whether
we have an active Microsoft support contract in place. If so, I'll
report this issue through PSS. Meanwhile, I was hoping you guys could
research this issue nevertheless using the info provide here. Also, if
a workaround is developed, could you please post it to the newsgroup?
It can be useful to many developers.
Here's my Driver.cdf:
[CatalogHeader]
Name=Driver.cat
[CatalogFiles]
<HASH>Driver.inf=.\Driver.inf
<HASH>Driver.infATTR1=0x10010001:File
river.inf
<HASH>Driver.Sys=.\objfre\i386\Driver.sys
<HASH>Driver.sysATTR1=0x10010001:File
river.sys
Here's (a selective) MSI log common to all my tests -- a sort of a
prolog to them:
DIFXAPP: InstallDriverPackages
DIFXAPP: 'Flags' is 24 <-- Legacy Mode, as you can see
DIFXAPP: 'CustomActionData' property 'DIFxApp Version' is 2.0.
....
DIFXAPP: 'CustomActionData' property 'componentPath' is C:\.
DIFXAPP: 'CustomActionData' property 'flags' is 0x18.
....
DIFXAPP: INFO: ENTER: DriverPackageInstallW
[ Test #1 ]
1. Driver.inf without CatalogFile property:
DIFXAPP: ERROR: Driver.inf: Driver package 'C:\Driver.inf' has no
CatalogFile entry.
DIFXAPP: InstallDriverPackages failed with error 0x800B0100
[ Test #2 ]
1. Driver.inf with CatalogFile
2. Catalog File without File attribute
DIFXAPP: INFO: Checking signature with catalog 'C:\Driver.cat' ...
DIFXAPP: ERROR: Driver package 'Driver.inf' is unsigned. (Error code
0x800B0100: No signature was present in the subject.)
DIFXAPP: InstallDriverPackages failed with error 0x800B0100
[ Test #3 ]
1. Driver.inf with CatalogFile.
2. Catalog File with File attribute but not signed.
DIFXAPP: INFO: Checking signature with catalog 'C:\Driver.cat' ...
DIFXAPP: ERROR: Driver package 'Driver.inf' is unsigned. (Error code
0x800B0100: No signature was present in the subject.)
DIFXAPP: InstallDriverPackages failed with error 0x800B0100
[ Test #4 ]
1. Driver.inf with CatalogFile.
2. Catalog File with File attribute and signed with certificate.
3. The certificate is self-signed (created with MakeCert) and contains
the following Enhanced Key Usages:
Code Signing(1.3.6.1.5.5.7.3.3)
Windows Hardware Driver Verification(1.3.6.1.4.1.311.10.3.5)
Windows System Component Verification(1.3.6.1.4.1.311.10.3.6);
4. The certificate is in Local Computer's Trusted Root Certificates.
5. chktrust Driver.cat reports "Succeeded".
DIFXAPP: INFO: Checking signature with catalog 'C:\Driver.cat' ...
DIFXAPP: ERROR: Signature verification failed while checking integrity
of driver package 'Driver.inf' ('C:\Driver.inf'). (Error code
0xE0000244.)
DIFXAPP: InstallDriverPackages failed with error 0x800B0100
- Posted by Jeff McCashland [MSFT] on August 23rd, 2005
Ilya,
You're correct, I meant to say that the bug Joe was thinking of does not
apply to Legacy Mode installations. That is an issue with correctly
checking signatures in certain cases. In your case(s), you don't expect
signatures to be checked at all.
I'd really like to see a repro on my machine if you have one that doesn't
depend on special hardware. Please send any information you have to my
email alias (below - without 'online.'). It's better if I have an open PSS
case, but I'll look at it when I can regardless.
Thanks!
[MS] Jeff McCashland
jeffm@online.microsoft.com
This posting is provided "AS IS" with no warranties, and confers no rights.
- Posted by Yoke on August 24th, 2005
Jeff,
I commented out the CatalogFile entry in toastpkg.inf in the DIFxApp sample,
removed PlugAndPlay.cat from the install project, rebuilt it, edited the
resulting msi to specify Legacy Mode and was able to reproduce the problem.
Mike
"Jeff McCashland [MSFT]" wrote:
- Posted by Jeff McCashland [MSFT] on August 25th, 2005
Mike,
I followed the steps you specified, and the sample driver installed fine on
Windows 2000 SP4. Could you send your sample.msi file and complete msi log
to me at the email address below (without the 'online.')? You'll need to
change the msi extension to pass the email filters.
Here is the relevant section of my Win2k log:
Entrypoint: InstallDriverPackages
DIFXAPP: InstallDriverPackages
DIFXAPP: 'CustomActionData' property 'DIFxApp Version' is 2.0.
DIFXAPP: 'CustomActionData' property 'UI Level' is 5.
DIFXAPP: 'CustomActionData' property 'componentId' is
{861FBA57-A963-F752-EEA8-5EB4090A9A4A}.
DIFXAPP: 'CustomActionData' property 'componentPath' is C:\Program
Files\Microsoft\DIFxAppSample\.
DIFXAPP: 'CustomActionData' property 'flags' is 0x18.
DIFXAPP: 'CustomActionData' property 'installState' is 2.
DIFXAPP: 'CustomActionData' property 'ProductName' is DIFxAppSample.
DIFXAPP: 'CustomActionData' property 'ManufacturerName' is Microsoft.
DIFXAPP: INFO: ENTER: DriverPackageInstallW
DIFXAPP: INFO: toastpkg.inf: Skipping DFX signature verification.
DIFXAPP: INFO: Copying 'toastpkg.inf' to driver store...
DIFXAPP: INFO: Copying 'tostrco2.dll' to driver store...
DIFXAPP: INFO: Copying 'tostrcls.dll' to driver store...
DIFXAPP: INFO: Copying 'toaster.sys' to driver store...
DIFXAPP: INFO: Installing INF file
Can you paste the CustomActionData property section from your msi.log, so I
can compare the properties? Does your Win2k installation have SP4 and the
latest critical updates?
Thanks!
[MS] Jeff McCashland
jeffm@online.microsoft.com
This posting is provided "AS IS" with no warranties, and confers no rights.
- Posted by Jeff McCashland [MSFT] on August 26th, 2005
Mike, Ilya,
Unfortunately, I was not able to repro this issue, even using the .msi file
that Mike sent me. If someone would like to open a PSS case and send me a
machine that repros to debug, I'll be able to track this down and get it
fixed. If you have any other suggestions on how I can get this to repro,
I'm willing to give it a try. Otherwise, there isn't much I can do. I've
reviewed the DIFx code very closely, and don't see how the flag can be
missed.
Try downloading a fresh copy of the DIFx tools from
http://www.microsoft.com/whdc/driver...difxtools.mspx, to make sure
you're using the same code that I'm looking at.
Thanks!
JeffM
- Posted by Ilya Konstantinov on August 28th, 2005
Jeff McCashland [MSFT] wrote:
I'm also unable to reproduce this issue on any Windows 2000 machine at
work but mine. I tried both Windows Installer 2.0 and 3.0, SP2 and SP3,
and so far I haven't found a way to make it fail on an arbitrary
machine. I'll try some more tomorrow.
Mike said he reproduced it on a fresh install of Windows 2000 on a
Virtual PC so sending an actual machine might not be required... But I
hope we won't resort to sending installation images around.
We sure all know this situation 
I hope to come up with some good news in the next few days. At least
now that I see the problem doesn't occur on most Windows 2000 machines
I've tried, this issue might not be a blocker for my release.
- Posted by Ilya Konstantinov on August 30th, 2005
Ilya Konstantinov wrote:
So far I get consistent reproducibility of the problem on all SP4
machines I've tried and consistent working on all other machines (SP2,
SP3 and maybe others too).
Jeff, which Service Pack you tried on? Can you try on Service Pack 4?
- Posted by Jeff McCashland [MSFT] on September 6th, 2005
Ilya,
I am working on Windows 2000 SP4 with all current critical updates.
[MS] Jeff McCashland
jeffm@online.microsoft.com
This posting is provided "AS IS" with no warranties, and confers no rights.
- Posted by Jeff McCashland [MSFT] on September 7th, 2005
Mike, Ilya;
I'm back from vacation. The dev group has agreed to sponsor a 'grace' case
to investigate this issue. I will email you both with the details, and a
link to securely upload the VM image and other files related to this issue.
Any other readers that are seeing DIFxApp check signatures in Legacy Mode
on Windows 2000 SP4 and have additional information, please feel free to
post here or email me at the address below (without the 'online.').
[MS] Jeff McCashland
jeffm@online.microsoft.com
This posting is provided "AS IS" with no warranties, and confers no rights.