Partilhar via


Método IPrintOemUI2::D ocumentEvent (prcomoem.h)

O método IPrintOemUI2::DocumentEvent permite que um plug-in de interface do usuário substitua a implementação padrão do módulo de interface do usuário do driver principal da DDI DrvDocumentEvent.

Sintaxe

HRESULT DocumentEvent(
  HANDLE hPrinter,
  HDC    hdc,
  INT    iEsc,
  ULONG  cbIn,
  PVOID  pvIn,
  ULONG  cbOut,
  PVOID  pvOut,
  PINT   piResult
);

Parâmetros

hPrinter

Identificador de impressora fornecido pelo chamador.

hdc

Identificador de contexto de dispositivo fornecido pelo chamador, gerado por uma chamada CreateDC. Isso será zero se iEsc estiver DOCUMENTEVENT_CREATEDCPRE.

iEsc

Código de escape fornecido pelo chamador que identifica o evento a ser tratado. Esse parâmetro pode ser uma das seguintes constantes inteiros:

Código de escape Significado
DOCUMENTEVENT_ABORTDOC A GDI está prestes a processar uma chamada para sua função AbortDoc.
DOCUMENTEVENT_CREATEDCPOST A GDI acabou de processar uma chamada para sua função CreateDC ou CreateIC.

Esse código de escape não deve ser usado, a menos que tenha havido uma chamada anterior para DrvDocumentEvent com iEsc definido como DOCUMENTEVENT_CREATEDCPRE.

DOCUMENTEVENT_CREATEDCPRE A GDI está prestes a processar uma chamada para sua função CreateDC ou CreateIC.
DOCUMENTEVENT_DELETEDC A GDI está prestes a processar uma chamada para sua função DeleteDC.
DOCUMENTEVENT_ENDDOCPOST A GDI acabou de processar uma chamada para sua função EndDoc.
DOCUMENTEVENT_ENDDOCPRE

ou

DOCUMENTEVENT_ENDDOC

A GDI está prestes a processar uma chamada para sua função EndDoc.
DOCUMENTEVENT_ENDPAGE A GDI está prestes a processar uma chamada para sua função EndPage.
DOCUMENTEVENT_ESCAPE A GDI está prestes a processar uma chamada para sua função extEscape.
DOCUMENTEVENT_QUERYFILTER O evento DOCUMENTEVENT_QUERYFILTER representa uma oportunidade para o spooler consultar o driver para obter uma lista dos eventos deXXX DOCUMENTEVENT_ aos quais o driver responderá. Esse evento é emitido pouco antes de uma chamada para drvDocumentEvent que passa o evento DOCUMENTEVENT_CREATEDCPRE.
DOCUMENTEVENT_RESETDCPOST A GDI acabou de processar uma chamada para sua função de ResetDC.

Esse código de escape não deve ser usado, a menos que tenha havido uma chamada anterior para DrvDocumentEvent com iEsc definido como DOCUMENTEVENT_RESETDCPRE.

DOCUMENTEVENT_RESETDCPRE A GDI está prestes a processar uma chamada para sua função de ResetDC.
DOCUMENTEVENT_STARTDOCPOST A GDI acabou de processar uma chamada para sua função de StartDoc.
DOCUMENTEVENT_STARTDOCPRE

ou

DOCUMENTEVENT_STARTDOC

A GDI está prestes a processar uma chamada para sua função StartDoc.
DOCUMENTEVENT_STARTPAGE A GDI está prestes a processar uma chamada para sua função StartPage.

cbIn

Tamanho fornecido pelo chamador, em bytes, do buffer apontado por pvIn.

pvIn

Ponteiro fornecido pelo chamador, do qual o uso depende do valor fornecido para iEsc, da seguinte maneira:

constante de iEsc conteúdo de pvIn
DOCUMENTEVENT_ABORTDOC Não usado.
DOCUMENTEVENT_CREATEDCPOST pvIn contém o endereço de um ponteiro para a estrutura de DEVMODEW especificada no parâmetro pvOut em uma chamada anterior para essa função, para a qual o parâmetro iEsc foi definido como DOCUMENTEVENT_CREATEDCPRE.
DOCUMENTEVENT_CREATEDCPRE pvIn aponta para uma estrutura de DOCEVENT_CREATEDCPRE.
DOCUMENTEVENT_DELETEDC Não usado.
DOCUMENTEVENT_ENDDOCPOST Não usado.
DOCUMENTEVENT_ENDDOCPRE

ou

DOCUMENTEVENT_ENDDOC

Não usado.
DOCUMENTEVENT_ENDPAGE Não usado.
DOCUMENTEVENT_ESCAPE pvIn aponta para uma estrutura de DOCEVENT_ESCAPE.
DOCUMENTEVENT_QUERYFILTER O mesmo que para DOCUMENTEVENT_CREATEDCPRE.
DOCUMENTEVENT_RESETDCPOST pvIn contém o endereço de um ponteiro para a estrutura de DEVMODEW especificada no parâmetro pvOut em uma chamada anterior para essa função, para a qual o parâmetro iEsc foi definido como DOCUMENTEVENT_RESETDCPRE.
DOCUMENTEVENT_RESETDCPRE pvIn contém o endereço de um ponteiro para uma estrutura de DEVMODEW fornecida pelo chamador de resetDC (descrito na documentação do SDK do Microsoft Windows).
DOCUMENTEVENT_STARTDOCPOST pvIn aponta para um LONG que especifica o identificador de trabalho de impressão retornado por StartDoc (descrito na documentação do SDK do Windows).
DOCUMENTEVENT_STARTDOCPRE

ou

DOCUMENTEVENT_STARTDOC

pvIn contém o endereço de um ponteiro para uma estrutura DOCINFO fornecida pelo chamador do StartDoc (ambos descritos na documentação do SDK do Windows).
DOCUMENTEVENT_STARTPAGE Não usado.

cbOut

Se o iEsc for DOCUMENTEVENT_ESCAPE:

Valor fornecido pela função que é usado como o parâmetro cbOutput para ExtEscape .

Se o iEsc for DOCUMENTEVENT_QUERYFILTER:

Tamanho fornecido pelo chamador, em bytes, do ponteiro do buffer para pvOut.

Para todos os outros valores iEsc:

Não usado.

pvOut

Ponteiro fornecido por função para um buffer de saída, do qual o uso depende do valor fornecido para iEsc, da seguinte maneira. CreateDC, ExtEscape e ResetDC são descritos na documentação do SDK do Windows.

constante de iEsc conteúdo de pvOut
DOCUMENTEVENT_CREATEDCPRE Ponteiro para uma estrutura DEVMODEW fornecida pelo driver, que a GDI usa em vez daquela fornecida pelo chamador de CreateDC. (Se NULL, a GDI usará a estrutura fornecida pelo chamador.)
DOCUMENTEVENT_ESCAPE Ponteiro de buffer usado como o parâmetro lpszOutData para ExtEscape .
DOCUMENTEVENT_QUERYFILTER Ponteiro fornecido pelo chamador para buffer que contém uma estrutura de DOCEVENT_FILTER.
DOCUMENTEVENT_RESETDCPRE Ponteiro para uma estrutura DEVMODEW fornecida pelo driver, que a GDI usa em vez daquela fornecida pelo chamador ResetDC. (Se NULL, a GDI usará a estrutura fornecida pelo chamador.)
Todos os outros valores de iEsc Não usado.

piResult

Ponteiro para um local de memória que recebe um dos seguintes valores:

Valor retornado Definição
DOCUMENTEVENT_FAILURE O driver dá suporte ao código de escape identificado por iEsc, mas ocorreu uma falha.
DOCUMENTEVENT_SUCCESS O driver lidou com êxito com o código de escape identificado por iEsc. Consulte também a seção Comentários para obter mais informações.
DOCUMENTEVENT_UNSUPPORTED O driver não dá suporte ao código de escape identificado pelo iEsc.

Valor de retorno

Esse método deve retornar um dos valores a seguir. Consulte a seção Comentários para obter mais informações.

Código de retorno Descrição
S_OK
O plug-in da interface do usuário implementa esse método.
E_NOTIMPL
O plug-in da interface do usuário não implementa esse método.

Observações

O método IPrintOemUI2::DocumentEvent de um plug-in de interface do usuário executa os mesmos tipos de operações que o DDI DrvDocumentEvent exportado por DLLs de interface da impressora no modo de usuário. Para obter informações sobre eventos de documento e como eles devem ser processados, consulte a descrição do DrvDocumentEvent DDI.

Se você fornecer um plug-in de interface do usuário, o DDI DrvDocumentEvent do driver de impressora chamará o método IPrintOemUI2::DocumentEvent. A DDI DrvDocumentEvent executa seu próprio processamento para o evento especificado e, em seguida, chama o método IPrintOemUI2::DocumentEvent para lidar com o processamento adicional do evento.

Quando esse método é chamado com um valor do parâmetro iEsc de DOCUMENTEVENT_QUERYFILTER e retorna com *piResult == DOCUMENTEVENT_SUCCESS, o spooler pode interpretar esse valor de duas maneiras, dependendo se determinados membros da estrutura DOCEVENT_FILTER alteraram valores. Para obter mais informações, consulte a seção Comentários para DrvDocumentEvent.

Quando o evento DOCUMENTEVENT_QUERYFILTER é acionado, o driver principal chama plug-ins na ordem em que foram instalados, até que um deles retorne S_OK ou até que todos os plug-ins tenham sido chamados e nenhum deles tenha retornado S_OK. Dessa forma, no máximo um plug-in tem permissão para lidar com o evento DOCUMENTEVENT_QUERYFILTER e o filtro especificado é aplicado a todos os plug-ins na cadeia de plug-in.

Para um gravador de plug-in que está implementando a interface de IPrintOemUI2, mas não precisa dar suporte ao método IPrintOemUI2::DocumentEvent, esse método deve retornar E_NOTIMPL para todos os valores de iEsc. Se você precisar implementar esse método, ele deverá retornar S_OK para todos os valores de iEsc. Isso sinaliza ao driver principal que esse método lidou com o evento relevante. O driver principal usa o valor que esse método coloca em piResult como o valor retornado para o DrvDocumentEvent DDI.

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho prcomoem.h (inclua Prcomoem.h)

Consulte também

DOCEVENT_CREATEDCPRE

DOCEVENT_ESCAPE

DOCEVENT_FILTER

DrvDocumentEvent

IPrintOemUI2