Freigeben über


DrvDocumentEvent-Funktion (winddiui.h)

Die DrvDocumentEvent-Funktion einer Druckerschnittstellen-DLL kann bestimmte Ereignisse verarbeiten, die mit dem Drucken eines Dokuments verbunden sind.

Syntax

int DrvDocumentEvent(
        HANDLE hPrinter,
        HDC    hdc,
        int    iEsc,
        ULONG  cbIn,
  [in]  PVOID  pvIn,
        ULONG  cbOut,
  [out] PVOID  pvOut
);

Parameter

hPrinter

Vom Anrufer bereitgestellter Druckerhandle.

hdc

Von einem CreateDC Generiertes Gerätekontexthandle, ist dies null, wenn iEsc- auf DOCUMENTEVENT_CREATEDCPRE festgelegt ist. Einschränkungen beim Drucken aus einer 32-Bit-Anwendung in einer 64-Bit-Version von Windows finden Sie im Abschnitt Anmerkungen unten.

iEsc

Vom Aufrufer bereitgestellter Escapecode, der das zu behandelnde Ereignis identifiziert.

Einschränkungen beim Drucken aus einer 32-Bit-Anwendung in einer 64-Bit-Version von Windows finden Sie im Abschnitt Anmerkungen unten.

Dieser Parameter kann eine der folgenden ganzzahligen Konstanten sein:

iEsc Konstante Ereignis
DOCUMENTEVENT_ABORTDOC GDI ist dabei, einen Aufruf seiner AbortDoc--Funktion zu verarbeiten.
DOCUMENTEVENT_CREATEDCPOST GDI hat gerade einen Aufruf der CreateDC- oder CreateIC--Funktion verarbeitet. Dieser Escapecode sollte nur verwendet werden, wenn ein vorheriger Aufruf von DrvDocumentEvent mit iEsc- auf DOCUMENTEVENT_CREATEDCPRE festgelegt wurde.
DOCUMENTEVENT_CREATEDCPRE GDI ist dabei, einen Aufruf der CreateDC- oder CreateIC--Funktion zu verarbeiten.
DOCUMENTEVENT_DELETEDC GDI ist dabei, einen Aufruf der DeleteDC--Funktion zu verarbeiten.
DOCUMENTEVENT_ENDDOCPOST GDI hat gerade einen Aufruf seiner EndDoc--Funktion verarbeitet.
DOCUMENTEVENT_ENDDOCPRE oder DOCUMENTEVENT_ENDDOC GDI ist dabei, einen Aufruf der EndDoc--Funktion zu verarbeiten.
DOCUMENTEVENT_ENDPAGE GDI ist dabei, einen Aufruf der EndPage--Funktion zu verarbeiten.
DOCUMENTEVENT_ESCAPE GDI ist dabei, einen Aufruf der ExtEscape--Funktion zu verarbeiten.
DOCUMENTEVENT_QUERYFILTER Das DOCUMENTEVENT_QUERYFILTER-Ereignis stellt die Möglichkeit dar, dass der Spooler den Treiber nach einer Liste der DOCUMENTEVENT_XXX--Ereignisse abfragt, auf die der Treiber antwortet. Dieses Ereignis wird direkt vor einem Aufruf von DrvDocumentEvent ausgegeben, der das DOCUMENTEVENT_CREATEDCPRE-Ereignis übergibt.
DOCUMENTEVENT_RESETDCPOST GDI hat gerade einen Aufruf seiner ResetDC--Funktion verarbeitet. Dieser Escapecode sollte nur verwendet werden, wenn ein vorheriger Aufruf von DrvDocumentEvent mit iEsc- auf DOCUMENTEVENT_RESETDCPRE festgelegt wurde.
DOCUMENTEVENT_RESETDCPRE GDI ist dabei, einen Aufruf der ResetDC-Funktion zu verarbeiten.
DOCUMENTEVENT_STARTDOCPOST GDI hat gerade einen Aufruf der StartDoc--Funktion verarbeitet.
DOCUMENTEVENT_STARTDOCPRE oder DOCUMENTEVENT_STARTDOC GDI ist dabei, einen Aufruf der StartDoc--Funktion zu verarbeiten.
DOCUMENTEVENT_STARTPAGE GDI ist dabei, einen Aufruf der StartPage--Funktion zu verarbeiten.

cbIn

Vom Aufrufer bereitgestellte Größe des Puffers in Byte, auf den pvInverweist.

[in] pvIn

Vom Aufrufer bereitgestellter Zeiger, deren Verwendung von dem für iEscangegebenen Wert abhängig ist, wie folgt:

iEsc Konstante pvIn Inhalt
DOCUMENTEVENT_ABORTDOC Wird nicht verwendet.
DOCUMENTEVENT_CREATEDCPOST pvIn- enthält die Adresse eines Zeigers auf die DEVMODEW- Struktur, die im pvOut Parameter in einem vorherigen Aufruf dieser Funktion angegeben wurde, für den der iEsc Parameter auf DOCUMENTEVENT_CREATEDCPRE festgelegt wurde.
DOCUMENTEVENT_CREATEDCPRE pvIn verweist auf eine DOCEVENT_CREATEDCPRE Struktur.
DOCUMENTEVENT_DELETEDC Wird nicht verwendet.
DOCUMENTEVENT_ENDDOCPOST Wird nicht verwendet.
DOCUMENTEVENT_ENDDOCPRE oder DOCUMENTEVENT_ENDDOC Wird nicht verwendet.
DOCUMENTEVENT_ENDPAGE Wird nicht verwendet.
DOCUMENTEVENT_ESCAPE pvIn verweist auf eine DOCEVENT_ESCAPE Struktur.
DOCUMENTEVENT_QUERYFILTER Identisch mit DOCUMENTEVENT_CREATEDCPRE.
DOCUMENTEVENT_RESETDCPOST pvIn- enthält die Adresse eines Zeigers auf die DEVMODEW- Struktur, die im pvOut Parameter in einem vorherigen Aufruf dieser Funktion angegeben wurde, für den der iEsc Parameter auf DOCUMENTEVENT_RESETDCPRE festgelegt wurde.
DOCUMENTEVENT_RESETDCPRE pvIn- enthält die Adresse eines Zeigers auf die DEVMODEW- Struktur, die vom Aufrufer der funktion ResetDC bereitgestellt wird.
DOCUMENTEVENT_STARTDOCPOST pvIn verweist auf einen LONG-Wert, der den von der StartDoc--Funktion zurückgegebenen Druckauftragsbezeichner angibt.
DOCUMENTEVENT_STARTDOCPRE oder DOCUMENTEVENT_STARTDOC pvIn- enthält die Adresse eines Zeigers auf eine DOCINFO- Struktur, die vom Aufrufer der StartDoc--Funktion bereitgestellt wird.
DOCUMENTEVENT_STARTPAGE Wird nicht verwendet.

cbOut

Wenn iEsc DOCUMENTEVENT_ESCAPE

Der von der Funktion bereitgestellte Wert, der als cbOutput Parameter für die ExtEscape--Funktion verwendet wird.

Wenn iEsc DOCUMENTEVENT_QUERYFILTER

Vom Aufrufer bereitgestellte Größe des Pufferzeigers in Bytes bis pvOut-.

Für alle anderen iEsc-Werte

Wird nicht verwendet.

[out] pvOut

Der von der Funktion bereitgestellte Zeiger auf einen Ausgabepuffer hängt von dem für iEscangegebenen Wert ab:

iEsc Konstante pvOut Inhalt
DOCUMENTEVENT_CREATEDCPRE Zeiger auf eine vom Treiber bereitgestellte DEVMODEW-Struktur, die GDI anstelle der vom CreateDC Aufrufer bereitgestellten verwendet. (Wenn NULL-verwendet GDI die vom Aufrufer bereitgestellte Struktur.)
DOCUMENTEVENT_ESCAPE Pufferzeiger, der als lpszOutData Parameter für die ExtEscape--Funktion verwendet wird.
DOCUMENTEVENT_QUERYFILTER Vom Aufrufer bereitgestellter Zeiger auf Puffer, der eine DOCEVENT_FILTER Struktur enthält.
DOCUMENTEVENT_RESETDCPRE Zeiger auf eine vom Treiber bereitgestellte DEVMODEW-Struktur, die GDI anstelle der vom ResetDC Funktionsaufrufer bereitgestellten verwendet. (Wenn NULL-verwendet GDI die vom Aufrufer bereitgestellte Struktur.)
Alle anderen iEsc- Werte Wird nicht verwendet.

Rückgabewert

Der Rückgabewert der Funktion hängt von dem für iEsc-angegebenen Escapezeichen ab. Für einige Escapecodes wird der Rückgabewert nicht verwendet (siehe die zweite Liste der Werte). Wenn die Funktion einen Rückgabewert bereitstellt, muss sie eine der folgenden Werte sein:

Rückgabecode Beschreibung
DOCUMENTEVENT_FAILURE Der Treiber unterstützt den von iEscidentifizierten Escapecode, aber ein Fehler ist aufgetreten.
DOCUMENTEVENT_SUCCESS Der Treiber hat den von iEscidentifizierten Escapecode erfolgreich verarbeitet.
DOCUMENTEVENT_UNSUPPORTED Der Treiber unterstützt den von iEsc-identifizierten Escapecode nicht.

Bemerkungen

Eine Druckerschnittstellen-DLL- kann optional eine DrvDocumentEvent--Funktion bereitstellen, um vorverarbeitete oder postprocessing von GDI-Aufrufen auszuführen, die mit dem Rendern eines Dokuments verbunden sind. Aufrufe der DrvDocumentEvent-Funktion werden vom Benutzermodus-GDI-Client ausgeführt, wenn eine Anwendung Aufrufe an den GDI-Client sendet.

Bei einem iEsc- Wert von DOCUMENTEVENT_QUERYFILTER kann der Spooler einen von DrvDocumentEvent zurückgegebenen DOCUMENTEVENT_SUCCESS Wert auf zwei Arten interpretieren, je nachdem, ob der Treiber bestimmte Member der DOCEVENT_FILTER Struktur geändert hat. (Der pvOut Parameter verweist auf diese Struktur.) Wenn der Spooler Speicher für eine Struktur dieses Typs zuweist, initialisiert er zwei Member dieser Struktur, cElementsReturned und cElementsNeededed, auf bekannte Werte. Nachdem DrvDocumentEvent zurückgegeben wurde, bestimmt der Spooler, ob sich die Werte dieser Member geändert haben, und verwendet diese Informationen, um den DrvDocumentEvent Rückgabewert zu interpretieren. Die folgende Tabelle fasst diese Situation zusammen.

Rückgabewert Status von cElementsReturned, cElementsNeeded Bedeutung
DOCUMENTEVENT_SUCCESS Der Treiber hat keine Änderung an beiden Membern vorgenommen. Der Spooler interpretiert diesen Rückgabewert als Äquivalent zu DOCUMENTEVENT_UNSUPPORTED. Der Spooler kann den Ereignisfilter nicht vom Treiber abrufen, sodass er weiterhin DrvDocumentEvent- für alle Ereignisse aufruft.
DOCUMENTEVENT_SUCCESS Driver schrieb an ein oder beide Mitglieder. Der Spooler akzeptiert diesen Rückgabewert ohne Interpretation. Wenn der Treiber nur einen von cElementsNeededed und cElementsReturnedgeschrieben hat, betrachtet der Spooler das unveränderte Element als einen Wert von Null. Der Spooler filtert alle Ereignisse aus, die im aDocEventCall Mitglied von DOCEVENT_FILTERaufgeführt sind.
DOCUMENTEVENT_UNSUPPORTED Nicht zutreffend Der Treiber unterstützt DOCUMENTEVENT_QUERYFILTER nicht. Der Spooler kann den Ereignisfilter nicht vom Treiber abrufen, sodass er weiterhin DrvDocumentEvent- für alle Ereignisse aufruft.
DOCUMENTEVENT_FAILURE Nicht zutreffend Der Treiber unterstützt DOCUMENTEVENT_QUERYFILTER, aber es ist ein interner Fehler aufgetreten. Der Spooler kann den Ereignisfilter nicht vom Treiber abrufen, sodass er weiterhin DrvDocumentEvent- für alle Ereignisse aufruft.

Wenn der Escapecodename kein Suffix aufweist oder mit PRE suffixiert ist, ruft der GDI-Client DrvDocumentEvent direkt vor dem Aufrufen des Kernelmodus-GDI-Renderingmoduls auf. Wenn der Escapecodename mit POST suffixiert ist, ruft der GDI-Client DrvDocumentEvent direkt nach dem Zurückgeben des Kernelmodus-GDI-Renderingmoduls auf.

Wenn der im iEsc Parameter angegebene Escapecode DOCUMENTEVENT_CREATEDCPRE ist, gelten die folgenden Regeln:

  • Wenn der Auftrag ohne Spooling direkt an den Drucker gesendet wird, verweist pvIn --> pszDevice auf den Druckernamen. (Weitere Informationen finden Sie in der DOCEVENT_CREATEDCPRE Struktur.)

  • Wenn der Auftrag gepoolt wird, zeigt pvIn --> pszDevice auf den Druckerportnamen.

Die DrvDocumentEvent-Funktion wird im Kontext des Benutzermodusaufrufers der GDI-Clientfunktion ausgeführt. Wenn EMF-Spooling deaktiviert ist, kann die Funktion eine Benutzeroberfläche anzeigen. Beispielsweise kann die DrvDocumentEvent--Funktion für einen FAXtreiber dem Benutzer ein Dialogfeld anzeigen, bevor die StartDoc--Funktion von GDI verarbeitet wird.

Die folgenden Einschränkungen gelten beim Ausführen einer 32-Bit-Anwendung auf einer 64-Bit-Version von Windows:

  • Die einzige GDI-Funktion, die DrvDocumentEvent- aufrufen soll, ist ExtEscape-, und es sollten nur private Escapes verwendet werden.

  • DrvDocumentEvent- Aufrufe anderer GDI-Funktionen können zu nicht definierten Verhaltensweisen führen.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- winddiui.h (include Winddiui.h)

Siehe auch

DOCEVENT_CREATEDCPRE

DOCEVENT_ESCAPE

DOCEVENT_FILTER