Delen via


De IStiUSD Escape-methode gebruiken

De IStiUSD::Escape methode wordt aangeroepen om informatie rechtstreeks aan de hardware door te geven. Deze methode wordt alleen ondersteund op Windows XP- en latere besturingssystemen.

Alle communicatie tussen een twain-compatibele toepassing en het WIA-stuurprogramma gaat eerst naar de gegevensbronmanager (twain_32.dll), die op zijn beurt de TWAIN-compatibiliteitslaag (wiadss.dll) aanroept). De TWAIN-compatibiliteitslaag roept vervolgens de IStiQUET::Escape-methode van het WIA-stuurprogramma aan en geeft een van de volgende twee escapecodes door aan de methode:

ESC_TWAIN_CAPABILITY Escapecode

ESC_TWAIN_PRIVATE_SUPPORTED_CAPS Escape-code

Wanneer de TWAIN-toepassing de lijst met persoonlijke mogelijkheden van de WIA-driver aanvraagt, roept de TWAIN-compatibiliteitslaag de IStiUSD::Escape-methode van de driver aan, waarbij ESC_TWAIN_PRIVATE_SUPPORTED_CAPS wordt doorgegeven in de aanroep. Als het stuurprogramma geen ondersteuning biedt voor passthrough-functionaliteit, wordt de statische (standaard) mogelijkheidslijst van de TWAIN-compatibiliteitslaag geretourneerd. Anders retourneert het stuurprogramma een lijst met ondersteunde privémogelijkheden naar de TWAIN-compatibiliteitslaag.

Wanneer de TWAIN-toepassing een capability-bewerking verzendt die nog niet in de standaardlijst van de TWAIN-compatibiliteitslaag staat, roept de TWAIN-compatibiliteitslaag de IStiUSD::Escape methode van het stuurprogramma aan. Deze keer wordt ESC_TWAIN_CAPABILITY in de aanroep doorgegeven.

De voorgaande uitleg is echter enigszins te versimpeld. Wanneer de TWAIN-toepassing vraagt om de lijst met privémogelijkheden van het stuurprogramma, maakt de TWAIN-compatibiliteitslaag daadwerkelijk twee aanroepen naar de IStiOPGEGEVEN::Escape-methode van het stuurprogramma. In het eerste gesprek vraagt de TWAIN-compatibiliteitslaag het WIA-stuurprogramma hoeveel geheugen er nodig is om de lijst met mogelijkheden op te slaan. De TWAIN-compatibiliteitslaag wijst vervolgens die hoeveelheid geheugen toe voor het WIA-stuurprogramma dat moet worden gebruikt. In de tweede aanroep vraagt de TWAIN-compatibiliteitslaag het WIA-stuurprogramma voor de lijst met mogelijkheden, die het WIA-stuurprogramma naar het eerder genoemde geheugen kopieert. De TWAIN-compatibiliteitslaag is verantwoordelijk voor het toewijzen en vrijmaken van alle geheugen die wordt gebruikt in TWAIN-WIA transacties. Deze regeling voorkomt dat het WIA-stuurprogramma geheugen vrijgeeft die de TWAIN-compatibiliteitslaag gebruikt.

De TWAIN-compatibiliteitslaag roept ook tweemaal de IStiUSD::Escape-methode van het stuurprogramma aan wanneer ESC_TWAIN_CAPABILITY wordt doorgegeven, met de bedoeling om een capaciteit op te halen. De eerste aanroep vraagt het WIA-stuurprogramma hoeveel geheugen het nodig heeft om de mogelijkheid op te slaan en de tweede aanroep retourneert de mogelijkheid. Houd er rekening mee dat SET-mogelijkheidsbewerkingen slechts één aanroep naar IStiOPGEGEVEN::Escape vereisen, omdat er geen geheugen hoeft te worden toegewezen.

Alle aanroepen naar de IStiUSD::Escape methode moeten in deze volgorde worden gevalideerd:

  1. Valideer de code van de functie EscapeFunction . Als deze niet geldig is, mislukt u onmiddellijk. Hiermee voorkomt u dat onjuiste codes in het stuurprogramma worden verwerkt.

  2. Valideer de binnenkomende buffer , lpInData. Als deze niet geldig is, mislukt u onmiddellijk. Ongeldige binnenkomende buffers kunnen ertoe leiden dat het WIA-stuurprogramma vastloopt.

  3. Valideer de uitgaande buffer, pOutData. Als deze niet geldig is, mislukt u onmiddellijk. Als het stuurprogramma de aanvraag niet kan voltooien door de benodigde gegevens te schrijven, hoeft deze gegevens niet te worden verwerkt.

  4. Valideer de grootte van de uitgaande buffer. Als het stuurprogramma niet de juiste hoeveelheid gegevens naar de uitgaande buffer kan schrijven, kan de aanroeper die gegevens niet goed verwerken.

De codevoorbeelden in de volgende secties illustreren het gebruik van pass-though-functionaliteit, waarbij TWAIN-toepassingen met privémogelijkheden worden ondersteund. De codevoorbeelden gebruiken twee escapecodes die zijn gedefinieerd in headerbestand wiatwcmp.h, ESC_TWAIN_PRIVATE_SUPPORTED_CAPS en ESC_TWAIN_CAPABILITY.

ESC_TWAIN_PRIVATE_SUPPORTED_CAPS escape code

ESC_TWAIN_CAPABILITY escapecode