c ++ - Hvordan bestemmer Windows Spooler, hvilken datatype den skal sende til printprocessoren?

Indlæg af Hanne Mølgaard Plasc

Problem



For eksempel, hvis du vil spole i EMF, plejer det, hvad der virker, at tjekke 'Avancerede udskrivningsfunktioner'. Jeg har dog bemærket, at det på nogle printerdrivere ikke virker (hvilket ikke er uventet, det er ikke obligatorisk for v3 drivere at understøtte det). Faktisk har jeg bemærket på en driver, at en enhedsafhængig indstilling (dvs. i den ekstra ende del af DEVMODE-strukturen) var, hvad der blev bestemt, om spoolfilen kom ud i EMF. Så hvordan bestemmer printspooleren hvilken datatype der skal passere ned?


Jeg har set gennem printerdriverens DDI-funktioner og strukturer og kan ikke finde noget i forbindelse med dette. I DrvDeviceCapabilities er der et DC\_EMF\_COMPLIANT flag, men det er kun for Windows 95. Hvordan gør spooleren det på senere systemer?

Bedste reference


Efter meget søgning har jeg fundet en tilstrækkelig (men måske ikke nødvendig) betingelse for, at føreren tvinge spooleren til at bruge RAW. Hvis DrvEscape bliver bedt om at spørge om støtte til METAFILE\_DRIVER, og føreren returnerer 0, spoler spooleren lige til rå uanset hvad. Dette er tilfældet for den driver, jeg havde fundet, der gør dette.