Druckertreiber: AddPrinterDriver



  • Hallo Community,

    seit gestern habe ich ein Problem was ich trotz stundenlanger Suche mit Google und durchstöbern der Dokumentationen nicht lösen kann.

    Ich möchte einen Druckertreiber auf Basis des OpenSource PDFCreator(http://sourceforge.net/projects/pdfcreator/) entwerfen. Doch leider scheitere ich beim installieren des Treibers.

    Seht euch bitte den folgenden Quelltext-Ausschnitt an:

    ::DRIVER_INFO_3 driverInfo;
    memset(&driverInfo, 0, sizeof(::DRIVER_INFO_3));
    
    driverInfo.pName = const_cast<GiChar*> (name.c_str());
    driverInfo.pDefaultDataType = _T("RAW");
    driverInfo.pMonitorName = const_cast<GiChar*> (monitorName.c_str());
    
    if(this->version.IsWindowsXpPlus())
    {
    	driverInfo.cVersion = 3;
    	driverInfo.pDependentFiles = _T("C:\\WINDOWS\\system32\\spool\\drivers\\w32x86\\3\\PSCRIPT.NTF\0");
    
    	driverInfo.pConfigFile = _T("C:\\WINDOWS\\system32\\spool\\drivers\\w32x86\\3\\PS5UI.DLL");
    	driverInfo.pDriverPath = _T("C:\\WINDOWS\\system32\\spool\\drivers\\w32x86\\3\\PSCRIPT5.DLL");
    	driverInfo.pEnvironment = const_cast<GiChar*> (this->environment.c_str());
    	driverInfo.pHelpFile = _T("C:\\WINDOWS\\system32\\spool\\drivers\\w32x86\\3\\PSCRIPT.HLP");
    	driverInfo.pDataFile = _T("C:\\WINDOWS\\system32\\spool\\drivers\\w32x86\\3\\PDFCREAT.PPD");
    }
    
    if(!::AddPrinterDriver(nullptr, driverInfo.cVersion, reinterpret_cast<LPBYTE> (&driverInfo)))
    {
    	DWORD errorCode = ::GetLastError();
    	LPVOID messageBuffer;
    
    	FormatMessage(
    		FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    		FORMAT_MESSAGE_FROM_SYSTEM |
    		FORMAT_MESSAGE_IGNORE_INSERTS,
    		NULL,
    		errorCode,
    		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
    		reinterpret_cast<LPSTR> (&messageBuffer),
    		0, NULL );
    
    	std::cout << "InstallPrinterDriver Error:" << static_cast<GiChar*> (messageBuffer) << std::endl;
    }
    

    Mein Betriebsystem ist Windows XP, daher nur dieser Ausschnitt. Zunächst fülle ich die Struktur mit den benötigten Daten. Mittlerweile habe ich schon absolute Pfade angegeben um auf Nummer sicher zu gehen(Obwohl ich auch Umgebungsvariablen richtig gesetzt habe). Alle Dateien sind defintiv genau so und nicht anders in dem entsprechenden Verzeichnis zu finden, welches mir GetPrinterDriverDirectory liefert.

    Ich verstehe nicht warum die Funktion AddPrinterDriver trotzdem Fehlschlägt mit der Fehlermeldung "Das System kann die angegebene Datei nicht finden". Ich habe schon vieles probiert aber nichts funktioniert.

    Wisst ihr eine Lösung für mich? Oder eine Idee woran es liegen könnte?

    Mit freundlichen Grüßen

    Kento


Anmelden zum Antworten