IPrintOemUI2::DocumentEvent メソッドを使用すると、UI プラグインは、DrvDocumentEvent DDI のコア ドライバー UI モジュールの既定の実装を置き換えることができます。
構文
HRESULT DocumentEvent(
HANDLE hPrinter,
HDC hdc,
INT iEsc,
ULONG cbIn,
PVOID pvIn,
ULONG cbOut,
PVOID pvOut,
PINT piResult
);
パラメーター
hPrinter
呼び出し元が指定したプリンター ハンドル。
hdc
呼び出し元が指定したデバイス コンテキスト ハンドル。CreateDC 呼び出しによって生成されます。 iEsc がDOCUMENTEVENT_CREATEDCPRE 場合、これは 0 です。
iEsc
処理するイベントを識別する呼び出し元が指定したエスケープ コード。 このパラメーターには、次のいずれかの整数定数を指定できます。
| エスケープ コード | 意味 |
|---|---|
| DOCUMENTEVENT_ABORTDOC | GDI は、AbortDoc 関数の呼び出しを処理しようとしている。 |
| DOCUMENTEVENT_CREATEDCPOST |
GDI は、CreateDC または CreateIC 関数 呼び出しを処理しました。
このエスケープ コードは、iEsc が DOCUMENTEVENT_CREATEDCPRE に設定された DrvDocumentEvent 以前に呼び出された場合を除き、使用しないでください。 |
| DOCUMENTEVENT_CREATEDCPRE | GDI は、CreateDC または CreateIC 関数 呼び出しを処理します。 |
| DOCUMENTEVENT_DELETEDC | GDI は、DeleteDC 関数の呼び出しを処理しようとしている。 |
| DOCUMENTEVENT_ENDDOCPOST | GDI は、EndDoc 関数の呼び出しを処理したばかりです。 |
|
DOCUMENTEVENT_ENDDOCPRE 又は DOCUMENTEVENT_ENDDOC |
GDI は、EndDoc 関数の呼び出しを処理しようとしている。 |
| DOCUMENTEVENT_ENDPAGE | GDI は、EndPage 関数の呼び出しを処理します。 |
| DOCUMENTEVENT_ESCAPE | GDI は、その ExtEscape 関数の呼び出しを処理しようとしている。 |
| DOCUMENTEVENT_QUERYFILTER | DOCUMENTEVENT_QUERYFILTER イベントは、スプーラーが、ドライバーが応答するDOCUMENTEVENT_XXX イベントの一覧をドライバーに照会する機会を表します。 このイベントは、DOCUMENTEVENT_CREATEDCPRE イベントを渡す DrvDocumentEvent の呼び出しの直前に発行されます。 |
| DOCUMENTEVENT_RESETDCPOST |
GDI は、ResetDC 関数の呼び出しを処理しました。
このエスケープ コードは、iEsc が DOCUMENTEVENT_RESETDCPRE に設定された DrvDocumentEvent 以前に呼び出されたことがある場合を除き、使用しないでください。 |
| DOCUMENTEVENT_RESETDCPRE | GDI は、ResetDC 関数の呼び出しを処理しようとしている。 |
| DOCUMENTEVENT_STARTDOCPOST | GDI は、StartDoc 関数の呼び出しを処理したばかりです。 |
|
DOCUMENTEVENT_STARTDOCPRE 又は DOCUMENTEVENT_STARTDOC |
GDI は、StartDoc 関数の呼び出しを処理しようとしている。 |
| DOCUMENTEVENT_STARTPAGE | GDI は、StartPage 関数の呼び出しを処理しようとしている。 |
cbIn
pvIn が指すバッファーの呼び出し元指定のサイズ (バイト単位)。
pvIn
呼び出し元が指定したポインター。その使用は、次のように、iEscに指定された値に依存します。
| iEsc 定数の | pvIn コンテンツ |
|---|---|
| DOCUMENTEVENT_ABORTDOC | 使用されません。 |
| DOCUMENTEVENT_CREATEDCPOST | pvIn には、この関数の前の呼び出しで pvOut パラメーターで指定された DEVMODEW 構造体へのポインターのアドレスが含まれています。このパラメーターには、iEsc パラメーターがDOCUMENTEVENT_CREATEDCPREに設定されています。 |
| DOCUMENTEVENT_CREATEDCPRE | pvIn は、DOCEVENT_CREATEDCPRE 構造を指します。 |
| DOCUMENTEVENT_DELETEDC | 使用されません。 |
| DOCUMENTEVENT_ENDDOCPOST | 使用されません。 |
|
DOCUMENTEVENT_ENDDOCPRE 又は DOCUMENTEVENT_ENDDOC |
使用されません。 |
| DOCUMENTEVENT_ENDPAGE | 使用されません。 |
| DOCUMENTEVENT_ESCAPE | pvIn は、DOCEVENT_ESCAPE 構造を指します。 |
| DOCUMENTEVENT_QUERYFILTER | DOCUMENTEVENT_CREATEDCPREの場合と同じです。 |
| DOCUMENTEVENT_RESETDCPOST | pvIn には、この関数の前の呼び出しで pvOut パラメーターで指定された DEVMODEW 構造体へのポインターのアドレスが含まれています。このパラメーターには、iEsc パラメーターがDOCUMENTEVENT_RESETDCPREに設定されています。 |
| DOCUMENTEVENT_RESETDCPRE | pvIn には、ResetDC の呼び出し元によって提供される DEVMODEW 構造体へのポインターのアドレスが含まれています (Microsoft Windows SDK ドキュメントで説明)。 |
| DOCUMENTEVENT_STARTDOCPOST | pvIn は、startDoc によって返される印刷ジョブ識別子 指定する LONG を指します (Windows SDK ドキュメントで説明)。 |
|
DOCUMENTEVENT_STARTDOCPRE 又は DOCUMENTEVENT_STARTDOC |
pvIn には、StartDoc の呼び出し元によって提供される DOCINFO 構造体へのポインターのアドレスが含まれています (どちらも Windows SDK ドキュメントで説明されています)。 |
| DOCUMENTEVENT_STARTPAGE | 使用されません。 |
cbOut
iEsc がDOCUMENTEVENT_ESCAPE場合:
extEscape の cbOutputパラメーターとして使用される関数指定の値。
iEsc がDOCUMENTEVENT_QUERYFILTER場合:
pvOut をするバッファー ポインターの呼び出し元が指定したサイズ (バイト単位)。
その他すべての iEsc 値の場合:
使用されません。
pvOut
出力バッファーへの関数指定ポインター。その使用は、次のように、iEscに指定された値に依存します。 CreateDC、ExtEscape 、および ResetDC については、Windows SDK のドキュメントで説明されています。
| iEsc 定数の | pvOut コンテンツ |
|---|---|
| DOCUMENTEVENT_CREATEDCPRE | ドライバーが提供する DEVMODEW 構造体へのポインター。GDI は、CreateDC 呼び出し元によって提供される構造体の代わりに使用されます。 (NULL 場合、GDI は呼び出し元が指定した構造体を使用します)。 |
| DOCUMENTEVENT_ESCAPE | ExtEscape の lpszOutData パラメーターとして使用バッファー ポインター。 |
| DOCUMENTEVENT_QUERYFILTER | DOCEVENT_FILTER 構造体を含むバッファーへの呼び出し元から提供されるポインター。 |
| DOCUMENTEVENT_RESETDCPRE | ドライバーが提供する DEVMODEW 構造体へのポインター。GDI は、ResetDC 呼び出し元によって提供される構造体の代わりに使用されます。 (NULL 場合、GDI は呼び出し元が指定した構造体を使用します)。 |
| その他のすべての iEsc 値 | 使用されません。 |
piResult
次のいずれかの値を受け取るメモリ位置へのポインター。
| 戻り値 | 定義 |
|---|---|
| DOCUMENTEVENT_FAILURE | ドライバーは、iEscによって識別されるエスケープ コードをサポートしていますが、エラーが発生しました。 |
| DOCUMENTEVENT_SUCCESS | ドライバーは、iEscによって識別されるエスケープ コードを正常に処理しました。 詳細については、「解説」セクションも参照してください。 |
| DOCUMENTEVENT_UNSUPPORTED | ドライバーは、iEscによって識別されるエスケープ コードをサポートしていません。 |
戻り値
このメソッドは、次のいずれかの値を返す必要があります。 詳細については、「解説」セクションを参照してください。
| リターン コード | 形容 |
|---|---|
|
UI プラグインは、このメソッドを実装します。 |
|
UI プラグインでは、このメソッドは実装されません。 |
備考
ユーザー インターフェイス プラグインの IPrintOemUI2::DocumentEvent メソッドは、ユーザー モード プリンター インターフェイス DLL によってエクスポートされる DrvDocumentEvent DDI と同じ種類の操作を実行します。 ドキュメント イベントとその処理方法については、DrvDocumentEvent DDI の説明を参照してください。
ユーザー インターフェイス プラグインを指定した場合、プリンター ドライバーの DrvDocumentEvent DDI は、IPrintOemUI2::DocumentEvent メソッドを呼び出します。 DrvDocumentEvent DDI は、指定されたイベントに対して独自の処理を実行し、IPrintOemUI2::DocumentEvent メソッドを呼び出してイベントの追加処理を処理します。
このメソッドが DOCUMENTEVENT_QUERYFILTER の iEsc パラメーターの値を使用して呼び出され、*piResult == DOCUMENTEVENT_SUCCESS で返される場合、スプーラーは、DOCEVENT_FILTER 構造体の特定のメンバーが値を変更したかどうかに応じて、2 つの方法のいずれかでこの値を解釈できます。 詳細については、DrvDocumentEventの「解説」セクションを参照してください。
DOCUMENTEVENT_QUERYFILTER イベントが発生すると、コア ドライバーは、インストールされた順序でプラグインを呼び出します。そのうちの 1 つがS_OKを返すまで、またはすべてのプラグインが呼び出され、どのプラグインもS_OK返されないまで呼び出されます。 この方法では、最大で 1 つのプラグインがDOCUMENTEVENT_QUERYFILTER イベントを処理でき、指定したフィルターがプラグイン チェーン内のすべてのプラグインに適用されます。
IPrintOemUI2 インターフェイスを実装しているが、IPrintOemUI2::DocumentEvent メソッドをサポートする必要がないプラグイン ライターの場合、このメソッドは iEsc のすべての値のE_NOTIMPL返す必要があります。 このメソッドを実装する必要がある場合は、iEsc のすべての値S_OKを返す必要があります。 これにより、このメソッドが関連するイベントを処理したことをコア ドライバーに通知します。 コア ドライバーでは、DrvDocumentEvent DDI の戻り値として、このメソッドが piResult に配置する値を使用します。
必要条件
| 要件 | 価値 |
|---|---|
| ターゲット プラットフォーム の | デスクトップ |
| ヘッダー | prcomoem.h (Prcomoem.h を含む) |