次の方法で共有


IPrintOemUI2::D ocumentEvent メソッド (prcomoem.h)

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によって識別されるエスケープ コードをサポートしていません。

戻り値

このメソッドは、次のいずれかの値を返す必要があります。 詳細については、「解説」セクションを参照してください。

リターン コード 形容
S_OK
UI プラグインは、このメソッドを実装します。
E_NOTIMPL
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 を含む)

関連項目

DOCEVENT_CREATEDCPRE

DOCEVENT_ESCAPE

DOCEVENT_FILTER

DrvDocumentEvent

IPrintOemUI2