Hallo,
ich habe folgendes Problem:
Wir haben ein Tool, welches die Drucker-Informationen von zwei Druckservern im Netzwerk ausliest.
Die Druckserver sind Windows 2000 Server.
Die Drucker-Informationen werden mit folgendem Befehl ausgelesen:
EnumPrinters(PRINTER_ENUM_NAME,printername,2,@info Array1,buffer,bufNeeded,numPrinters)
Das klappte bisher prima. Nach der Installation weiterer Drucker auf einem der Druckserver versagte allerdings der Aufruf, da mehr Printer Information Buffer benötigt wird, wie die Variable bufNeeded mir verraten hat.
Ich habe daraufhin den Wert für den Buffer auf einen höheren Wert gesetzt und auch die Größe des infoArray1 entsprechend angepasst.
Nun funktionierte das Auslesen der Druckerinformationen überhaupt nicht mehr. Es kommt die Fehlermeldung "Der Remoteprozeduraufruf ist fehlgeschlagen.
Ich habe nun festgestellt, dass die Maximale Buffergröße exakt 1048519 Byte beträgt. Dies sind 57 Byte weniger als ein MByte. Die benötigte Buffergröße beträgt allerdings ca. 1067000 Byte.
Kann mir irgendjemand sagen, ob es eine Einschränkung seitens der Windows API bzw der winspool.drv gibt, dass der Printer Information Buffer nicht größer als 1MB sein darf bzw. ob man dies ggf. durch Änderung eines Registry Keys änden kann.
Das Problem tritt übrigens nicht nur bei Verwendung von Delphi auf, sondern auch in einem Testprogramm, was ich unter Visual Basic getestet habe. Dies stärkt meine Vermutung, dass es sich hier wohl eher um ein Problem der API handelt.
Recherchen in der MSDN bzw. in Foren haben mir bisher leider keine Informationen hierzu gebracht.
Gruß
Stefan
ich habe folgendes Problem:
Wir haben ein Tool, welches die Drucker-Informationen von zwei Druckservern im Netzwerk ausliest.
Die Druckserver sind Windows 2000 Server.
Die Drucker-Informationen werden mit folgendem Befehl ausgelesen:
EnumPrinters(PRINTER_ENUM_NAME,printername,2,@info Array1,buffer,bufNeeded,numPrinters)
Das klappte bisher prima. Nach der Installation weiterer Drucker auf einem der Druckserver versagte allerdings der Aufruf, da mehr Printer Information Buffer benötigt wird, wie die Variable bufNeeded mir verraten hat.
Ich habe daraufhin den Wert für den Buffer auf einen höheren Wert gesetzt und auch die Größe des infoArray1 entsprechend angepasst.
Nun funktionierte das Auslesen der Druckerinformationen überhaupt nicht mehr. Es kommt die Fehlermeldung "Der Remoteprozeduraufruf ist fehlgeschlagen.
Ich habe nun festgestellt, dass die Maximale Buffergröße exakt 1048519 Byte beträgt. Dies sind 57 Byte weniger als ein MByte. Die benötigte Buffergröße beträgt allerdings ca. 1067000 Byte.
Kann mir irgendjemand sagen, ob es eine Einschränkung seitens der Windows API bzw der winspool.drv gibt, dass der Printer Information Buffer nicht größer als 1MB sein darf bzw. ob man dies ggf. durch Änderung eines Registry Keys änden kann.
Das Problem tritt übrigens nicht nur bei Verwendung von Delphi auf, sondern auch in einem Testprogramm, was ich unter Visual Basic getestet habe. Dies stärkt meine Vermutung, dass es sich hier wohl eher um ein Problem der API handelt.
Recherchen in der MSDN bzw. in Foren haben mir bisher leider keine Informationen hierzu gebracht.
Gruß
Stefan
Comment