Método IPrintOemUI::D eviceCapabilities (prcomoem.h)
O IPrintOemUI::DeviceCapabilities
método permite que um plug-in de interface do usuário especifique recursos de dispositivo personalizados.
Sintaxe
HRESULT DeviceCapabilities(
POEMUIOBJ poemuiobj,
HANDLE hPrinter,
PWSTR pDeviceName,
WORD wCapability,
PVOID pOutput,
PDEVMODE pPublicDM,
PVOID pOEMDM,
DWORD dwOld,
DWORD *dwResult
);
Parâmetros
poemuiobj
Ponteiro fornecido pelo chamador para uma estrutura OEMUIOBJ .
hPrinter
Identificador fornecido pelo chamador para o dispositivo de impressora.
pDeviceName
Ponteiro fornecido pelo chamador para uma cadeia de caracteres que representa o nome do dispositivo.
wCapability
Sinalizador fornecido pelo chamador indicando o tipo de informação que o método deve retornar. Para obter uma lista de sinalizadores, consulte a descrição da função DrvDeviceCapabilities .
pOutput
Ponteiro fornecido pelo chamador para um buffer para receber as informações solicitadas. O tipo de informação retornada depende do sinalizador especificado por wCapability.
pPublicDM
Ponteiro fornecido pelo chamador para uma estrutura DEVMODEW validada.
pOEMDM
Ponteiro fornecido pelo chamador para os membros da estrutura DEVMODEW privada do plug-in de interface do usuário.
dwOld
Valor retornado fornecido pelo chamador da função DrvDeviceCapabilities do driver de impressora ou de outro plug-in de interface do usuário. Para obter mais informações, consulte a seção Comentários a seguir.
dwResult
Um valor retornado que depende do sinalizador especificado por wCapability. Para obter mais informações, consulte a descrição da função DrvDeviceCapabilities e a seção Comentários a seguir.
Retornar valor
O método deve retornar um dos valores a seguir.
Código de retorno | Descrição |
---|---|
|
A operação foi realizada com êxito. |
|
O plug-in pretende usar o buffer apontado pelo parâmetro pOutput para suas próprias finalidades. Esse valor retornado é definido em prcomoem.h. Para obter mais informações sobre quando usar esse valor retornado, consulte a seção Comentários a seguir. |
|
Falha na operação. |
|
O método não está implementado. |
Comentários
O método de um plug-in de interface do IPrintOemUI::DeviceCapabilities
usuário executa os mesmos tipos de operações que a função DrvDeviceCapabilities exportada por DLLs da interface da impressora do modo de usuário. O método especifica os recursos fornecidos pela impressora.
Você pode usar o IPrintOemUI::DeviceCapabilities
método para preempção de suporte Unidrv para uma funcionalidade ou para adicionar uma funcionalidade que o driver de impressora não fornece. O driver chama IPrintOemUI::DeviceCapabilities
de dentro de sua função DrvDeviceCapabilities .
Se o IPrintOemUI::DeviceCapabilities
método indicar suporte personalizado para uma funcionalidade (definindo os bits apropriados em resposta a um sinalizador de DC_FIELDS recebido), o código personalizado deverá dar suporte total à funcionalidade. O suporte completo normalmente inclui o retorno de informações sobre a funcionalidade em resposta a chamadas para o IPrintOemUI::DeviceCapabilities
método, além de fornecer o código apropriado do modo de usuário ou do modo kernel para implementar a funcionalidade.
Se IPrintOemUI::DeviceCapabilities
os métodos forem exportados por vários plug-ins de interface do usuário, os métodos serão chamados na ordem em que os plug-ins são especificados para instalação. Sempre que o método de IPrintOemUI::DeviceCapabilities
um plug-in é chamado, seu valor de entrada dwOld é o valor retornado do método do IPrintOemUI::DeviceCapabilities
plug-in chamado anteriormente. Para o primeiro plug-in chamado, dwOld contém o valor retornado da função DrvDeviceCapabilities do driver de impressora. Da mesma forma, o buffer apontado por pOutput contém, na entrada, qualquer conteúdo colocado lá por um método chamado IPrintOemUI::DeviceCapabilities
anteriormente ou função DrvDeviceCapabilities .
Para que vários plug-ins de interface do usuário funcionem entre si, cada IPrintOemUI::DeviceCapabilities
método deve obedecer às seguintes regras:
-
Se um plug-in de interface do usuário não der suporte a uma funcionalidade especificada, seu
IPrintOemUI::DeviceCapabilities
método deverá retornar apenas o conteúdo do parâmetro dwOld no dwResult. -
Se um plug-in de interface do usuário der suporte à funcionalidade, seu
IPrintOemUI::DeviceCapabilities
método deverá ignorar dwOld e o conteúdo do buffer apontado por pOutput. Ele deve fornecer um valor retornado e um conteúdo de buffer apropriado para indicar que ele dá suporte à funcionalidade especificada. Se o método detectar um erro, ele deverá retornar GDI_ERROR no dwResult. -
Se você quiser que um plug-in de interface do usuário modifique as informações de recursos recebidas no buffer apontado por pOutput, seu
IPrintOemUI::DeviceCapabilities
método deverá modificar o conteúdo do buffer e retornar um valor retornado apropriado no dwResult. Por exemplo, se wCapability for DC_FIELDS, o método deverá OU os bits necessários para definir com os bits definidos em dwOld e retornar o resultado da operação OR no dwResult. - As regras anteriores devem ser seguidas mesmo se o conteúdo recebido de dwOld for GDI_ERROR.
IPrintOemUI::DeviceCapabilities
métodos, especificando também DC_FIELDS e retorna a união de todos os bits definidos para o chamador.
O valor retornado S_DEVCAP_OUTPUT_FULL_REPLACEMENT é novo no Windows Vista e se aplica a plug-ins de interface do usuário Unidrv e Pscript5. Um plug-in deve usar o valor retornado S_DEVCAP_OUTPUT_FULL_REPLACEMENT somente se exigir controle completo sobre o que é colocado no buffer apontado pelo parâmetro pOutput . Nem o Unidrv nem o driver de núcleo Pscript5 colocarão dados no buffer pOutput quando o plug-in retornar S_DEVCAP_OUTPUT_FULL_REPLACEMENT. Um plug-in pode precisar retornar esse valor quando uma configuração na estrutura DEVMODEW (que é apontada pelos parâmetros pPublicDM e pOEMDM ) indica ao plug-in da interface do usuário que deve relatar dados de funcionalidade do dispositivo diferentes daquele especificado no arquivo GPD ou PPD. Por exemplo, uma estrutura DEVMODEW que especifica a impressão de fotos pode exigir um conjunto diferente de tipos de papel do que aqueles especificados no arquivo GPD ou PPD. Nessa situação e independentemente dos valores dos parâmetros pOutput e dwOld , o plug-in deve retornar S_DEVCAP_OUTPUT_FULL_REPLACEMENT e deve definir o parâmetro dwResult para o número de tipos de papel que pretende relatar. Se pOutput não for NULL, o plug-in também deverá preencher o buffer apontado por pOutput com o conjunto desejado de tipos de papel e deve definir dwResult como o número de tipos de papel que o plug-in pretende relatar.
Quando vários plug-ins de interface do usuário estão ativos ao mesmo tempo e um deles retorna S_DEVCAP_OUTPUT_FULL_REPLACEMENT, o driver principal Unidrv ou Pscript5 interpreta esse valor retornado para significar que os plug-ins pretendem fornecer dados de saída de substituição completa. Como resultado, o driver principal não coloca nenhum dado no buffer pOutput antes de chamar os plug-ins. (O driver principal chama os plug-ins na mesma ordem especificada para sua instalação.)
Em situações em que os valores que o driver principal coloca no buffer pOutput não precisam ser substituídos, o plug-in deve retornar S_OK. Os drivers principais Unidrv e Pscript5 reconhecem a S_DEVCAP_OUTPUT_FULL_REPLACEMENT valor retornado somente para recursos de dispositivo que usam o buffer pOutput , em outras palavras, quando o parâmetro wCapability é definido como um dos seguintes sinalizadores:
DC_PAPERNAMES
DC_PAPERS
DC_PAPERSIZE
DC_BINNAMES
DC_BINS
DC_NUP
DC_PERSONALITY
DC_MEDIAREADY
DC_MEDIATYPENAMES
DC_MEDIATYPES
DC_ENUMRESOLUTIONS
Para obter mais informações sobre como criar e instalar plug-ins de interface do usuário, consulte Personalizando drivers de impressora da Microsoft.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | prcomoem.h (inclua Prcomoem.h) |