Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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) |