P
Hallo,
weis jemand wie man mittels der SetupApi Gerätetreiber deinstallieren kann?
In der Dokumentation des DDK ist nicht viel zu finden.
Es geht um Netzwerkkarten- und Modemeinträge.
Ich dachte das dies über den Inf-File möglich wäre.
Hier ein Codebeispiel für meinen Ansatz. aber irgendwie will er nicht.
int main(int argc, char* argv[])
{
PSP_DEVICE_INTERFACE_DETAIL_DATA pspdidd;
PSP_DEVINFO_DATA pdevData;
PSP_DEVINFO_DATA drvData;
HDEVINFO hDevInfo;
GUID ClassGUID;
TCHAR ClassName[MAX_CLASS_NAME_LEN];
LPTSTR INFFile = argv[1];
CString strInfClassID;
BOOL isInstall = FALSE;
ZeroMemory((PVOID)&spdid, sizeof(spdid));
spdid.cbSize = sizeof(spdid);
// Use the INF File to extract the Class GUID.
if(!SetupDiGetINFClass(INFFile,&ClassGUID,ClassName,sizeof(ClassName),0))
{
return DisplayError(TEXT("GetINFClass"));
}
// GUID aus Inffile einlesen
LPOLESTR InfBuffer;
StringFromCLSID( ClassGUID, &InfBuffer );
strInfClassID = InfBuffer;
CoTaskMemFree(InfBuffer);
hDevInfo = SetupDiGetClassDevs(&ClassGUID, NULL, NULL, NULL);
if(hDevInfo == INVALID_HANDLE_VALUE)
{
printf("SetupDiGetClassDevs nicht gefunden.\n ");
}
if (!SetupDiGetSelectedDriver(hDevInfo, pdevData, &drvData))
{
printf("SetupDiGetSelectedDriver Failed.\n");
}
else
{
if(SetupDiCallClassInstaller(DIF_REMOVE, hDevInfo,&drvData))
{
printf("Driver remove.\n");
}
else
{
printf("Driver not remove.\n");
}
}
return 0;
}
Danke P.Prescher