DocumentEvent-Funktion
Die DocumentEvent-Funktion ist ein Ereignishandler für Ereignisse im Zusammenhang mit dem Drucken eines Dokuments.
Syntax
HRESULT DocumentEvent(
_In_ HANDLE hPrinter,
_In_ HDC hdc,
INT iEsc,
ULONG cbIn,
_In_ PVOID pvIn,
ULONG cbOut,
_Out_ PVOID pvOut
);
Parameter
hPrinter [in]
Ein Handle für ein Druckerobjekt. Verwenden Sie die Funktionen OpenPrinter oder AddPrinter, um ein Druckerhandle abzurufen.
hdc [in]
Ein Gerätekontexthandle, das durch einen Aufruf von CreateDC generiert wird. Es ist null, wenn iEsc auf DOCUMENTEVENT_CREATEDCPRE festgelegt ist. Einschränkungen beim Drucken mit einer 32-Bit-Anwendung in einer 64-Bit-Version von Windows finden Sie in den Hinweisen.
iEsc
Ein Escapecode, der das Ereignis identifiziert, das bearbeitet werden soll. Dieser Parameter kann eine der folgenden Integerkonstanten sein.
Konstante | Ereignis |
---|---|
|
Das GDI soll einen Aufruf seiner AbortDoc-Funktion verarbeiten. |
|
Das GDI hat einen Aufruf der Funktionen CreateDC oder CreateIC verarbeitet. Dieser Escapecode sollte lediglich dann verwendet werden, wenn ein vorheriger Aufruf von DocumentEvent mit iEsc auf DOCUMENTEVENT_CREATEDCPRE festgelegt wurde. |
|
Das GDI soll einen Aufruf seiner Funktionen CreateDC oder CreateIC verarbeiten. |
|
Das GDI soll einen Aufruf seiner DeleteDC-Funktion verarbeiten. |
|
Das GDI hat einen Aufruf seiner EndDoc-Funktion verarbeitet. |
|
Das GDI soll einen Aufruf seiner EndDoc-Funktion verarbeiten. |
|
Das GDI soll einen Aufruf seiner EndPage-Funktion verarbeiten. |
|
Das GDI soll einen Aufruf seiner ExtEscape-Funktion verarbeiten. |
|
Das DOCUMENTEVENT_QUERYFILTER-Ereignis stellt eine Möglichkeit dar, mit der der Spooler den Treiber nach einer Liste der DOCUMENTEVENT_ XXX-Ereignisse abfragen kann, auf die der Treiber antwortet. Dieses Ereignis wird vor einem Aufruf der DocumentEvent-Funktion ausgegeben, die das Ereignis DOCUMENTEVENT_CREATEDCPRE übergibt. |
|
Das GDI hat einen Aufruf seiner ResetDC-Funktion verarbeitet. Dieser Escapecode sollte lediglich dann verwendet werden, wenn ein vorheriger Aufruf der DocumentEvent-Funktion mit iEsc auf DOCUMENTEVENT_RESETDCPRE festgelegt wurde. |
|
Das GDI soll einen Aufruf seiner ResetDC-Funktion verarbeiten. |
|
Das GDI hat einen Aufruf seiner StartDoc-Funktion verarbeitet. |
|
Das GDI soll einen Aufruf seiner StartDoc-Funktion verarbeiten. |
|
Das GDI soll einen Aufruf seiner StartPage-Funktion verarbeiten. |
cbIn
Die Größe des Puffers in Bytes, auf den pvIn verweist
pvIn [in]
Ein Verweis auf einen Puffer. Der Inhalt des Puffers hängt vom Wert von iEsc ab, wie in der folgenden Tabelle dargestellt.
Konstante | Pvin-Inhalt |
---|---|
|
Wird nicht verwendet. |
|
pvIn enthält die Adresse eines Verweises auf die DEVMODE-Struktur, die in einem vorherigen Aufruf dieser Funktion im pvOut-Parameter angegeben wurde. Hierfür wurde der iEsc-Parameter auf DOCUMENTEVENT_CREATEDCPRE festgelegt. |
|
pvIn verweist auf eine DOCEVENT_CREATEDCPRE-Struktur, die im Windows-Treiberentwicklungskit dokumentiert ist. |
|
Wird nicht verwendet. |
|
Wird nicht verwendet. |
|
Wird nicht verwendet. |
|
Wird nicht verwendet. |
|
pvIn verweist auf eine DOCEVENT_ESCAPE-Struktur, die im Windows-Treiberentwicklungskit dokumentiert ist. |
|
Wie bei DOCUMENTEVENT_CREATEDCPRE |
|
pvIn enthält die Adresse eines Verweises auf die DEVMODE-Struktur, die im pvOut-Parameter in einem vorherigen Aufruf dieser Funktion angegeben wurde. Hierfür wurde der iEsc-Parameter auf DOCUMENTEVENT_RESETDCPRE festgelegt. |
|
pvIn enthält die Adresse eines Verweises auf die DEVMODE-Struktur, die vom Aufrufer von ResetDC bereitgestellt wird. |
|
pvIn verweist auf einen LONG-Wert, der den von StartDoc zurückgegebenen Druckauftragsbezeichner angibt. |
|
pvIn enthält die Adresse eines Verweises auf die DOCINFO-Struktur, die vom Aufrufer von StartDoc bereitgestellt wird. |
|
Wird nicht verwendet. |
cbOut
Wert | Bedeutung |
---|---|
IDOCUMENTEVENT_QUERYFILTER | Die Größe des Puffers in Bytes, auf den pvOut verweist. |
DOCUMENTEVENT_ESCAPE | Ein Wert, der als cbOutput-Parameter für ExtEscape verwendet wird. |
Alle anderen Werte | iEsc wird nicht verwendet. |
pvOut [out]
Ein Verweis auf einen Puffer. Der Inhalt des Puffers hängt von dem für iEsc bereitgestellten Wert ab, wie in der folgenden Tabelle dargestellt.
Konstante | pvOut-Inhalt |
---|---|
|
Ein Verweis auf eine vom Treiber bereitgestellte DEVMODE-Struktur, die das GDI anstelle des vom CreateDC-Aufrufer bereitgestellten Verweises verwendet. (Bei NULL verwendet das GDI die vom Aufrufer bereitgestellte Struktur.) |
|
Ein Verweis auf einen Puffer, der als lpszOutData-Parameter für ExtEscape verwendet wird. |
|
Ein Verweis, der eine DOCEVENT_FILTER-Struktur enthält, die im Windows-Treiberentwicklungskit dokumentiert ist. |
|
Ein Verweis auf eine vom Treiber bereitgestellte DEVMODE-Struktur, die das GDI anstelle des vom ResetDC-Aufrufer bereitgestellten Verweises verwendet. (Bei NULL verwendet das GDI die vom Aufrufer bereitgestellte Struktur.) |
Rückgabewert
Der Rückgabewert der Funktion ist von dem für iEsc angegebenen Escapewert abhängig. Für einige Escapecodes wird der Rückgabewert nicht verwendet (siehe unten). Der durch eine Funktion bereitgestellte Rückgabewert muss einem der folgenden entsprechen.
Rückgabewert | Bedeutung |
---|---|
DOCUMENTEVENT_FAILURE | Der Treiber unterstützt den von iEsc identifizierten Escapecode, allerdings ist ein Fehler aufgetreten. |
DOCUMENTEVENT_SUCCESS | Der Treiber hat den von iEsc identifizierten Escapecode erfolgreich verarbeitet. |
DOCUMENTEVENT_UNSUPPORTED | Der Treiber unterstützt den von iEsc identifizierten Escapecode nicht. |
In der folgenden Liste wird angegeben, welche Escapecodes einen Rückgabewert erfordern. Außerdem wird erläutert, was die Rückgabecodes DOCUMENTEVENT_SUCCESS, DOCUMENTEVENT_FAILURE und DOCUMENTEVENT_UNSUPPORTED bedeuten.
Rückgabewert | Bedeutung |
---|---|
DOCUMENTEVENT_ABORTDOC | Der Rückgabewert wird nicht verwendet und sollte nicht gelesen werden. |
DOCUMENTEVENT_CREATEDCPOST | Der Rückgabewert wird nicht verwendet und sollte nicht gelesen werden. |
DOCUMENTEVENT_CREATEDCPRE | DOCUMENTEVENT_FAILURE – das GDI erstellt keinen Geräte- oder Informationskontext und stellt einen Rückgabewert von 0 für CreateDC oder CreateIC bereit. |
DOCUMENTEVENT_DELETEDC | Der Rückgabewert wird nicht verwendet und sollte nicht gelesen werden. |
DOCUMENTEVENT_ENDDOCPOST | Der Rückgabewert wird nicht verwendet und sollte nicht gelesen werden. |
DOCUMENTEVENT_ENDDOCPRE oder DOCUMENTEVENT_ENDDOC | Der Rückgabewert wird nicht verwendet und sollte nicht gelesen werden. |
DOCUMENTEVENT_ENDPAGE | Der Rückgabewert wird nicht verwendet und sollte nicht gelesen werden. |
DOCUMENTEVENT_ESCAPE | Der Rückgabewert wird nicht verwendet und sollte nicht gelesen werden. |
DOCUMENTEVENT_QUERYFILTER | Siehe Hinweise. |
DOCUMENTEVENT_RESETDCPOST | Der Rückgabewert wird nicht verwendet und sollte nicht gelesen werden. |
DOCUMENTEVENT_RESETDCPRE | DOCUMENTEVENT_FAILURE – das GDI setzt den Gerätekontext nicht zurück und stellt einen Rückgabewert von 0 für ResetDC bereit. |
DOCUMENTEVENT_STARTDOCPOST | DOCUMENTEVENT_FAILURE – das GDI ruft AbortDoc auf, um das Dokument zu beenden, und stellt anschließend einen Rückgabewert von SP_ERROR für StartDoc bereit. |
DOCUMENTEVENT_STARTDOCPRE oder DOCUMENTEVENT_STARTDOC | DOCUMENTEVENT_FAILURE – das GDI startet das Dokument nicht und stellt einen Rückgabewert von SP_ERROR für StartDoc bereit. |
DOCUMENTEVENT_STARTPAGE | DOCUMENTEVENT_FAILURE – das GDI startet die Seite nicht und stellt einen Rückgabewert von SP_ERROR für StartPage bereit. |
Hinweise
Bei einem iEsc-Wert von DOCUMENTEVENT_QUERYFILTER kann der Spooler einen von DocumentEvent zurückgegebenen DOCUMENTEVENT_SUCCESS-Wert auf zwei Arten interpretieren. Die Art der Interpretation hängt davon ab, ob der Treiber bestimmte Member der DOCEVENT_FILTER-Struktur geändert hat, was im Windows-Treiberentwicklungskit dokumentiert ist. (Der pvOut-Parameter verweist auf diese Struktur.) Wenn der Spooler für eine Struktur dieses Typs Arbeitsspeicher zuweist, initialisiert er für bekannte Werte die beiden Member cElementsReturned und cElementsNeededed dieser Struktur. Nachdem DocumentEvent zurückgegeben wurde, bestimmt der Spooler, ob sich die Werte dieser Member geändert haben. Diese Informationen werden vom Spooler verwendet, um den DocumentEvent-Rückgabewert zu interpretieren. Die folgende Tabelle enthält eine Zusammenfassung dieser Situation.
Rückgabewert | Status von cElementsReturned und cElementsNeeded | Bedeutung |
---|---|---|
DOCUMENTEVENT_SUCCESS |
Der Treiber hat an beiden Membern keine Änderung vorgenommen. |
Der Spooler interpretiert diesen Rückgabewert als gleichwertig zu DOCUMENTEVENT_UNSUPPORTED. Der Spooler kann den Ereignisfilter nicht über den Treiber abrufen, sodass er weiterhin DocumentEvent für alle Ereignisse aufruft. |
DOCUMENTEVENT_SUCCESS |
Der Treiber hat in einen oder beide Member geschrieben. |
Der Spooler akzeptiert diesen Rückgabewert ohne Interpretation. Wenn der Treiber lediglich in einen Member von cElementsNeededed und cElementsReturned geschrieben hat, betrachtet der Spooler das unveränderte Element als einen Wert von null. Der Spooler filtert alle Ereignisse aus, die im aDocEventCall-Member von DOCEVENT_FILTER aufgeführt sind. Das ist im Windows-Treiberentwicklungskit dokumentiert. |
DOCUMENTEVENT_UNSUPPORTED |
Nicht zutreffend |
Der Treiber unterstützt DOCUMENTEVENT_QUERYFILTER nicht. Der Spooler kann den Ereignisfilter nicht über den Treiber abrufen, sodass er weiterhin DocumentEvent für alle Ereignisse aufruft. |
DOCUMENTEVENT_FAILURE |
Nicht zutreffend |
Der Treiber unterstützt DOCUMENTEVENT_QUERYFILTER, allerdings ist ein interner Fehler aufgetreten. Der Spooler kann den Ereignisfilter nicht über den Treiber abrufen, sodass er weiterhin DocumentEvent für alle Ereignisse aufruft. |
Wenn es sich beim im iEsc-Parameter bereitgestellten Escapecode um DOCUMENTEVENT_CREATEDCPRE handelt, 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 Dokumentation zur DOCEVENT_CREATEDCPRE-Struktur im Windows-Treiberentwicklungskit.)
- Wenn der Auftrag gespoolt wird, verweist pvIn>pszDevice auf den Namen des Druckerports.
Hinweis
Die folgenden Einschränkungen gelten beim Ausführen einer 32-Bit-Anwendung in einer 64-Bit-Version von Windows. ExtEscape ist die einzige GDI-Funktion, die DocumentEvent aufrufen soll, und es sollten ausschließlich private Escapes verwendet werden. DocumentEvent-Aufrufe für andere GDI-Funktionen können zu nicht definiertem Verhalten führen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows Vista [nur Desktop-Apps] |
Minimal unterstützter Server |
Windows Server 2008 [nur Desktop-Apps] |
Header |
|
Unicode- und ANSI-Namen |
DocumentEventW (Unicode) und DocumentEventA (ANSI) |