Für diese Funktion ist GetLastError eigentlich falsch. (einer der darin aufgrufenden APIs könnte eventuell einen Fehlercode setzen, aber selbst wenn eine
API das macht, heißt es noch lange nicht, daß die eigentliche Funktion nicht funktionierte)
-1 ist ein Fehlercode und besagt hier, daß keine Schächste unterstützt werden.
Es gibt also nur einen Schacht und keine Funktion zu dessen Auswahl.
Alternativ könnte das aber auch heißen, daß der Drucker nicht gefunden wurde, oder Treiber/Drucker defekt sind,
was aber auch nur wieder bedeudet, daß die Stelle, welche man grade frage, die Funktion "Gibt mir deine Schächte!" nicht unterstützt.
Vermutlich kannst'e das ganz einfach so machen:
Count := Max(DeviceCapabilities(PChar(SomeDevice), PChar(SomePort), DC_BINNAMES, nil, nil), 1);