Função DocumentEvent
A função DocumentEvent é um manipulador de eventos para eventos associados à impressão de um documento.
Sintaxe
HRESULT DocumentEvent(
_In_ HANDLE hPrinter,
_In_ HDC hdc,
INT iEsc,
ULONG cbIn,
_In_ PVOID pvIn,
ULONG cbOut,
_Out_ PVOID pvOut
);
Parâmetros
hPrinter [in]
Um identificador para um objeto de impressora. Use a função OpenPrinter ou AddPrinter para recuperar um identificador de impressora.
hdc [in]
Um identificador de contexto de dispositivo que é gerado por uma chamada de CreateDC. Isso será zero se iEsc estiver definido como DOCUMENTEVENT_CREATEDCPRE. Para obter restrições à impressão a partir de um aplicativo de 32 bits em uma versão de 64 bits do Windows, consulte Observações.
iEsc
Um código de escape que identifica o evento a ser manipulado. Esse parâmetro pode usar uma das constantes de inteiro a seguir.
Constante | Evento |
---|---|
|
A GDI está prestes a processar uma chamada para a respectiva função AbortDoc. |
|
A GDI acaba de processar uma chamada para a respectiva função CreateDC ou CreateIC. Esse código de escape não deve ser usado, a menos que tenha havido uma chamada anterior para DocumentEvent com iEsc definido como DOCUMENTEVENT_CREATEDCPRE. |
|
A GDI está prestes a processar uma chamada para a respectiva função CreateDC ou CreateIC. |
|
A GDI está prestes a processar uma chamada para a respectiva função DeleteDC. |
|
A GDI acaba de processar uma chamada para a respectiva função EndDoc. |
|
A GDI está prestes a processar uma chamada para a respectiva função EndDoc. |
|
A GDI está prestes a processar uma chamada para a respectiva função EndPage. |
|
A GDI está prestes a processar uma chamada para a respectiva função ExtEscape. |
|
O evento DOCUMENTEVENT_QUERYFILTER representa uma oportunidade para o spooler consultar o driver para obter uma lista dos eventos DOCUMENTEVENT_ XXX aos quais o driver responderá. Esse evento é emitido imediatamente antes de uma chamada para DocumentEvent que passa o evento DOCUMENTEVENT_CREATEDCPRE. |
|
A GDI acaba de processar uma chamada para a respectiva função ResetDC. Esse código de escape não deve ser usado, a menos que tenha havido uma chamada anterior para DocumentEvent com iEsc definido como DOCUMENTEVENT_RESETDCPRE. |
|
A GDI está prestes a processar uma chamada para a respectiva função ResetDC. |
|
A GDI acaba de processar uma chamada para a respectiva função StartDoc. |
|
A GDI está prestes a processar uma chamada para a respectiva função StartDoc. |
|
A GDI está prestes a processar uma chamada para a respectiva função StartPage. |
cbIn
O tamanho, em bytes, do buffer apontado por pvIn.
pvIn [in]
Um ponteiro para um buffer. O que o buffer contém depende do valor de iEsc, conforme mostrado na tabela a seguir.
Constante | Conteúdo de pvin |
---|---|
|
Não usado. |
|
pvIn contém o endereço de um ponteiro para a estrutura DEVMODE 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. |
|
pvIn aponta para uma estrutura DOCEVENT_CREATEDCPRE que está documentada no Windows Driver Development Kit. |
|
Não usado. |
|
Não usado. |
|
Não usado. |
|
Não usado. |
|
pvIn aponta para uma estrutura DOCEVENT_ESCAPE que está documentada no Windows Driver Development Kit. |
|
O mesmo que para DOCUMENTEVENT_CREATEDCPRE. |
|
pvIn contém o endereço de um ponteiro para a estrutura DEVMODE 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. |
|
pvIn contém o endereço de um ponteiro para a estrutura DEVMODE fornecida pelo chamador de ResetDC. |
|
pvIn aponta para um LONG que especifica o identificador de trabalho de impressão retornado por StartDoc. |
|
pvIn contém o endereço de um ponteiro para a estrutura DOCINFO fornecida pelo chamador de StartDoc. |
|
Não usado. |
cbOut
Valor | Significado |
---|---|
IDOCUMENTEVENT_QUERYFILTER | O tamanho, em bytes, do buffer apontado por pvOut. |
DOCUMENTEVENT_ESCAPE | Um valor que é usado como o parâmetro cbOutput para ExtEscape. |
Para todos os outros valores | iEsc não é utilizado. |
pvOut [out]
Um ponteiro para um buffer. O conteúdo do buffer depende do valor fornecido para iEsc, conforme mostrado na tabela a seguir.
Constante | Conteúdo de pvOut |
---|---|
|
Um ponteiro para uma estrutura DEVMODE fornecida pelo driver, que a GDI usa em vez daquela fornecida pelo chamador CreateDC. (Se é NULL, a GDI usa a estrutura fornecida pelo chamador.) |
|
Um ponteiro para um buffer que é usado como o parâmetro lpszOutData para ExtEscape. |
|
Um ponteiro para buffer que contém uma estrutura DOCEVENT_FILTER que está documentada no Windows Driver Development Kit. |
|
Um ponteiro para uma estrutura DEVMODE fornecida pelo driver, que a GDI usa em vez daquela fornecida pelo chamador ResetDC. (Se é NULL, a GDI usa a estrutura fornecida pelo chamador.) |
Valor retornado
O valor de retorno da função depende do escape fornecido para iEsc. Para alguns códigos de escape, o valor de retorno não é usado (veja abaixo). Se a função fornecer um valor de retorno, ela deverá ser uma das listadas a seguir.
Valor de retorno | Significado |
---|---|
DOCUMENTEVENT_FAILURE | O driver dá suporte ao código de escape identificado por iEsc, mas ocorreu uma falha. |
DOCUMENTEVENT_SUCCESS | O driver manipulou com êxito o código de escape identificado por iEsc. |
DOCUMENTEVENT_UNSUPPORTED | O driver não dá suporte ao código de escape identificado por iEsc. |
A lista a seguir indica quais códigos de escape exigem um valor de retorno e quais não exigem e explica o significado dos códigos de retorno DOCUMENTEVENT_SUCCESS, DOCUMENTEVENT_FAILURE e DOCUMENTEVENT_UNSUPPORTED.
Valor de retorno | Significado |
---|---|
DOCUMENTEVENT_ABORTDOC | O valor de retorno não é usado e não deve ser lido. |
DOCUMENTEVENT_CREATEDCPOST | O valor de retorno não é usado e não deve ser lido. |
DOCUMENTEVENT_CREATEDCPRE | DOCUMENTEVENT_FAILURE – GDI não cria o contexto do dispositivo ou contexto de informações e fornece um valor de retorno de 0 para CreateDC ou CreateIC. |
DOCUMENTEVENT_DELETEDC | O valor de retorno não é usado e não deve ser lido. |
DOCUMENTEVENT_ENDDOCPOST | O valor de retorno não é usado e não deve ser lido. |
DOCUMENTEVENT_ENDDOCPRE ou DOCUMENTEVENT_ENDDOC | O valor de retorno não é usado e não deve ser lido. |
DOCUMENTEVENT_ENDPAGE | O valor de retorno não é usado e não deve ser lido. |
DOCUMENTEVENT_ESCAPE | O valor de retorno não é usado e não deve ser lido. |
DOCUMENTEVENT_QUERYFILTER | Consulte Observações. |
DOCUMENTEVENT_RESETDCPOST | O valor de retorno não é usado e não deve ser lido. |
DOCUMENTEVENT_RESETDCPRE | DOCUMENTEVENT_FAILURE – GDI não redefine o contexto do dispositivo e fornece um valor de retorno de 0 para ResetDC. |
DOCUMENTEVENT_STARTDOCPOST | DOCUMENTEVENT_FAILURE – GDI chama AbortDoc para parar o documento e, em seguida, fornece um valor de retorno de SP_ERROR para StartDoc. |
DOCUMENTEVENT_STARTDOCPRE ou DOCUMENTEVENT_STARTDOC | DOCUMENTEVENT_FAILURE – GDI não inicia o documento e fornece um valor de retorno de SP_ERROR para StartDoc. |
DOCUMENTEVENT_STARTPAGE | DOCUMENTEVENT_FAILURE – GDI não inicia a página e fornece um valor de retorno de SP_ERROR para StartPage. |
Comentários
Para um valor iEsc de DOCUMENTEVENT_QUERYFILTER, o spooler pode interpretar um valor DOCUMENTEVENT_SUCCESS retornado por DocumentEvent de duas maneiras, dependendo se o driver modificou ou não determinados membros da estrutura DOCEVENT_FILTER (que está documentada no Windows Driver Development Kit). (O parâmetro pvOut aponta para essa estrutura.) Quando o spooler aloca memória para uma estrutura desse tipo, ele inicializa dois membros dessa estrutura, cElementsReturned e cElementsNeeded, para valores conhecidos. Depois que DocumentEvent retorna, o spooler determina se os valores desses membros foram alterados e usa essas informações para interpretar o valor de retorno DocumentEvent. A tabela a seguir resume essa situação.
Valor de retorno | Status de cElementsReturned e cElementsNeeded | Significado |
---|---|---|
DOCUMENTEVENT_SUCCESS |
O driver não fez nenhuma alteração em nenhum dos membros. |
O spooler interpreta esse valor de retorno como equivalente a DOCUMENTEVENT_UNSUPPORTED. O spooler não consegue recuperar o filtro de eventos do driver, portanto, ele persiste em chamar DocumentEvent para todos os eventos. |
DOCUMENTEVENT_SUCCESS |
O sriver escreveu para um ou ambos os membros. |
O spooler aceita esse valor de retorno sem interpretação. Se o driver escreveu em apenas um de cElementsNeeded e cElementsReturned, o spooler considera o membro inalterado como tendo um valor zero. O spooler filtra todos os eventos listados no membro aDocEventCall do DOCEVENT_FILTER (que está documentado no Windows Driver Development Kit). |
DOCUMENTEVENT_UNSUPPORTED |
Não aplicável |
O driver não dá suporte a DOCUMENTEVENT_QUERYFILTER. O spooler não consegue recuperar o filtro de eventos do driver, portanto, ele persiste em chamar DocumentEvent para todos os eventos. |
DOCUMENTEVENT_FAILURE |
Não aplicável |
O driver dá suporte a DOCUMENTEVENT_QUERYFILTER, mas encontrou um erro interno. O spooler não consegue recuperar o filtro de eventos do driver, portanto, ele persiste em chamar DocumentEvent para todos os eventos. |
Se o código de escape fornecido no parâmetro iEsc é DOCUMENTEVENT_CREATEDCPRE, as seguintes regras serão aplicadas:
- Se o trabalho estiver sendo enviado diretamente para a impressora sem spooling, pvIn->pszDevice aponta para o nome da impressora. (Para obter mais informações, consulte a documentação da estrutura DOCEVENT_CREATEDCPRE no Kit de Desenvolvimento de Driver do Windows.)
- Se o trabalho estiver em spool, pvIn-pszDevice> aponta para o nome da porta da impressora.
Observação
As restrições a seguir se aplicam ao executar um aplicativo de 32 bits em uma versão de 64 bits do Windows. A única função GDI que DocumentEvent deve chamar é ExtEscape, e somente escapes privados devem ser usados. Chamadas DocumentEvent para outras funções GDI podem produzir comportamento indefinido.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows Server 2008 [somente aplicativos da área de trabalho] |
Cabeçalho |
|
Nomes Unicode e ANSI |
DocumentEventW (Unicode) e DocumentEventA (ANSI) |