Remove Gerätetreiber



  • 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


Anmelden zum Antworten