Método IPrintOemUI::D eviceCapabilities (prcomoem.h)
El método IPrintOemUI::DeviceCapabilities
permite que un complemento de interfaz de usuario especifique funcionalidades de dispositivo personalizadas.
Sintaxis
HRESULT DeviceCapabilities(
POEMUIOBJ poemuiobj,
HANDLE hPrinter,
PWSTR pDeviceName,
WORD wCapability,
PVOID pOutput,
PDEVMODE pPublicDM,
PVOID pOEMDM,
DWORD dwOld,
DWORD *dwResult
);
Parámetros
poemuiobj
Puntero proporcionado por el autor de la llamada a una estructura de OEMUIOBJ de.
hPrinter
Identificador proporcionado por el autor de la llamada al dispositivo de impresora.
pDeviceName
Puntero proporcionado por el autor de la llamada a una cadena que representa el nombre del dispositivo.
wCapability
Marca proporcionada por el autor de la llamada que indica el tipo de información que debe devolver el método. Para obtener una lista de marcas, consulte la descripción de la función DrvDeviceCapabilities.
pOutput
Puntero proporcionado por el autor de la llamada a un búfer para recibir la información solicitada. El tipo de información devuelta depende de la marca especificada por wCapability.
pPublicDM
Puntero proporcionado por el autor de la llamada a una estructura de DEVMODEW validada.
pOEMDM
Puntero proporcionado por el autor de la llamada a los miembros privados de la estructura DEVMODEW del complemento de interfaz de usuario.
dwOld
Valor devuelto proporcionado por el autor de la llamada del controlador de impresora función DrvDeviceCapabilities o desde otro complemento de interfaz de usuario. Para obtener más información, vea la siguiente sección Comentarios.
dwResult
Valor devuelto que depende de la marca especificada por wCapability. Para obtener más información, consulte la descripción de la función DrvDeviceCapabilities y las siguientes observaciones.
Valor devuelto
El método debe devolver uno de los valores siguientes.
Código devuelto | Descripción |
---|---|
|
La operación se realizó correctamente. |
|
El complemento pretende usar el búfer al que apunta el parámetro pOutput para sus propios fines. Este valor devuelto se define en prcomoem.h. Para obtener más información sobre cuándo usar este valor devuelto, vea la siguiente sección Comentarios. |
|
Error en la operación. |
|
El método no se implementa. |
Observaciones
El método IPrintOemUI::DeviceCapabilities
de un complemento de interfaz de usuario realiza los mismos tipos de operaciones que los DrvDeviceCapabilities función exportada por dll de interfaz de impresora en modo de usuario. El método especifica las funcionalidades proporcionadas por la impresora.
Puede usar el método IPrintOemUI::DeviceCapabilities
para preempt Unidrv compatible con una funcionalidad o para agregar una funcionalidad que el controlador de impresora no proporcione. El controlador llama a IPrintOemUI::DeviceCapabilities
desde su función DrvDeviceCapabilities.
Si el método IPrintOemUI::DeviceCapabilities
indica compatibilidad personalizada con una funcionalidad (estableciendo los bits adecuados en respuesta a una marca de DC_FIELDS recibida), el código personalizado debe admitir completamente la funcionalidad. La compatibilidad completa suele incluir la devolución de información sobre la funcionalidad en respuesta a las llamadas al método IPrintOemUI::DeviceCapabilities
, además de proporcionar el código adecuado en modo de usuario o en modo kernel para implementar la funcionalidad.
Si varios complementos de interfaz de usuario exportan IPrintOemUI::DeviceCapabilities
métodos, se llama a los métodos en el orden en que se especifican los complementos para la instalación. Cada vez que se llama al método IPrintOemUI::DeviceCapabilities
de un complemento, su dwOld valor de entrada es el valor devuelto del método IPrintOemUI::DeviceCapabilities
del complemento anteriormente llamado . Para el primer complemento llamado, dwOld contiene el valor devuelto de la función DrvDeviceCapabilities del controlador de impresora. Del mismo modo, el búfer al que apunta pOutput contiene, en la entrada, cualquier contenido colocado allí por un método anteriormente llamado IPrintOemUI::DeviceCapabilities
o función drvDeviceCapabilities.
Para que varios complementos de interfaz de usuario funcionen entre sí, cada método IPrintOemUI::DeviceCapabilities
debe cumplir las reglas siguientes:
-
Si un complemento de interfaz de usuario no admite una funcionalidad especificada, su método
IPrintOemUI::DeviceCapabilities
solo debe devolver el contenido del parámetro dwOld en dwResult. -
Si un complemento de interfaz de usuario admite la funcionalidad, su método de
IPrintOemUI::DeviceCapabilities
debe omitir dwOld y el contenido del búfer al que apunta pOutput. Debe proporcionar un valor devuelto y un contenido de búfer adecuado para indicar que admite la funcionalidad especificada. Si el método detecta un error, debe devolver GDI_ERROR en dwResult. -
Si desea que un complemento de interfaz de usuario modifique la información de funcionalidades recibida en el búfer al que apunta pOutput, su método
IPrintOemUI::DeviceCapabilities
debe modificar el contenido del búfer y devolver un valor devuelto adecuado en dwResult. Por ejemplo, si wCapability es DC_FIELDS, el método debe OR los bits que necesita establecer con los bits que se establecen en dwOldy devuelven el resultado de la operación OR en dwResult. - Se deben seguir las reglas anteriores incluso si se GDI_ERROR el contenido recibido de dwOld.
IPrintOemUI::DeviceCapabilities
, especificando también DC_FIELDS y devuelve la unión de todos los bits establecidos al autor de la llamada.
El S_DEVCAP_OUTPUT_FULL_REPLACEMENT valor devuelto es nuevo en Windows Vista y se aplica a los complementos de interfaz de usuario Unidrv y Pscript5. Un complemento debe usar el S_DEVCAP_OUTPUT_FULL_REPLACEMENT valor devuelto solo si requiere control completo sobre lo que se coloca en el búfer al que apunta el parámetro pOutput. Ni Unidrv ni el controlador principal Pscript5 colocarán datos en el búfer de pOutput cuando el complemento devuelva S_DEVCAP_OUTPUT_FULL_REPLACEMENT. Es posible que un complemento tenga que devolver este valor cuando un valor en la estructura de DEVMODEW (que apunta el pPublicDM y parámetros pOEMDM) indica al complemento de interfaz de usuario que debe notificar los datos de funcionalidad del dispositivo que son diferentes de los especificados en el archivo GPD o PPD. Por ejemplo, una estructura DEVMODEW que especifica la impresión fotográfica podría requerir un conjunto diferente de tipos de papel que los especificados en el archivo GPD o PPD. En tal situación, e independientemente de los valores de la pOutput y dwOld parámetros, el complemento debe devolver S_DEVCAP_OUTPUT_FULL_REPLACEMENT y debe establecer el parámetro dwResult en el número de tipos de papel que pretende notificar. Si pOutput no es NULL, el complemento también debe rellenar el búfer al que apunta pOutput con el conjunto deseado de tipos de papel y debe establecer dwResult al número de tipos de papel a los que el complemento pretende notificar.
Cuando varios complementos de interfaz de usuario están activos al mismo tiempo y uno de ellos devuelve S_DEVCAP_OUTPUT_FULL_REPLACEMENT, el controlador principal Unidrv o Pscript5 interpreta este valor devuelto para significar que los complementos pretenden proporcionar datos de salida de reemplazo completos. Como resultado, el controlador principal no coloca ningún dato en el búfer de pOutput antes de llamar a los complementos. (El controlador principal llama a los complementos en el mismo orden especificado para su instalación).
En situaciones en las que no es necesario reemplazar los valores que coloca el controlador principal en el búfer de pOutput, el complemento debe devolver S_OK. Los controladores principales Unidrv y Pscript5 reconocen el valor devuelto de S_DEVCAP_OUTPUT_FULL_REPLACEMENT solo para las funcionalidades del dispositivo que usan el pOutput búfer, es decir, cuando el parámetro wCapability se establece en una de las marcas siguientes:
DC_PAPERNAMES
DC_PAPERS
DC_PAPERSIZE
DC_BINNAMES
DC_BINS
DC_NUP
DC_PERSONALITY
DC_MEDIAREADY
DC_MEDIATYPENAMES
DC_MEDIATYPES
DC_ENUMRESOLUTIONS
Para obtener más información sobre cómo crear e instalar complementos de interfaz de usuario, vea Personalización de los controladores de impresora de Microsoft.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Escritorio |
encabezado de | prcomoem.h (include Prcomoem.h) |