Hello All,
Currently, I am writing a application to dynamically install/uninstall my
lower filter driver to USB device. The methods I am using to install and
load filter driver is as follows:
(1) Add the LowerFilters registry value to the devnode registry;
(2) Stop and restart device with the following statements:
SP_PROPCHANGE_PARAMS params;
SP_DEVINSTALL_PARAMS installParams;
memset(¶ms, 0, sizeof(SP_PROPCHANGE_PARAMS));
params.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
params.StateChange = DICS_PROPCHANGE;
params.Scope = DICS_FLAG_CONFIGSPECIFIC;
params.HwProfile = 0; // current profile
// prepare for the call to SetupDiCallClassInstaller
if (!SetupDiSetClassInstallParams( DeviceInfoSet,
DeviceInfoData,
(PSP_CLASSINSTALL_HEADER) ¶ms,
sizeof(SP_PROPCHANGE_PARAMS)
))
{
dwError = GetLastError();
return (FALSE); // Couldn’t set the install parameters!
}
// stop and restart the device
if (!SetupDiCallClassInstaller( DIF_PROPERTYCHANGE,
DeviceInfoSet,
DeviceInfoData
))
{
dwError = GetLastError();
return (FALSE); // Call to class installer (DICS_PROPCHANGE)
failed!
}
My current problem is that the above method works fine in Win2k, but in
Win98/Me, after successfully return from calling to
SetupDiCallClassInstaller(), it will need to wait a long time (over 20
seconds) before the device takes effective. BTW, if at this point I call a
MessageBox to pop up a message box, then the device will take effective
immediately. I cannot imagine what is the reason. Could anyone help me
explain what is the reason and what is wrong in my method.
I have also tried to call SetupDiCallClassInstaller two times first with
parameter DICS_STOP and second with DICS_RESTART. It works fine in Win2k,
but failed in Win98/Me.
I have tested the USBVerify (provided in NTDDK), it can work in both Win2k
and Win98/Me and the time to install filter driver in Win98/Me is much
shorter than that what I did in my application.
Could anyone give me in detail how USBVerify works to install filter driver
in Win98/Me? I don’t know if it is possible to provide me some source codes
to illustrate the detailed procedures.
I will appreciate your BIG help!
Best Regards,
snzhai
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com