I’ve come across a catch-22; I wonder if anyone else has come across it.
Background: I do several AVStream drivers that include ksproxy plugins.
Those plugins are COM components. Because of that, on a 64-bit system,
I have to ship both 32-bit and 64-bit proxy plugin DLLs. I register
them using RegisterDlls directives in the INF file.
However, there’s a problem. Through empirical research, I’ve learned
that RegisterDlls does not work for 32-bit DLLs on a 64-bit system.
That’s not necessarily surprising. I can copy them into place (using
DirID 16425), but if I have this in my INF:
RegisterDlls = proxy.register
[proxy.register]
11,MyProxyPlugin,ax,1
16425,MyProxyPlugin.ax,1
the 64-bit version gets registered, but the 32-bit version does not.
Because of that, I have to add a registry entry to the RunOnce key to
call “rundll32.exe %16425%\MyProxyPlugin.ax,DllRegisterServer”.
That’s fine, it all works, everyone is happy, and it’s gone through WHQL
many times with the older HCK several times.
However, in the latest HCK, this fails CHKINF testing. It says “RunOnce
usage for device driver installation is restricted to installation of
software-only devices enumerated by SWENUM.” That’s a problem. For a
while yet, our lab can use the older HCK, but I understand that retires
on November 30. After that, I don’t know how I’m supposed to get my
32-bit proxy registered. I shouldn’t have to embed a huge AddReg
section in the INF by hand – that’s just busy work, duplicating
error-prone GUID manipulation code that I’m already doing inside my proxy.
Is this familiar?
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.