IPrintOemUni::DriverDMS method allows a rendering plug-in for Unidrv to indicate that it uses a device-managed drawing surface.
Caller-supplied pointer to a DEVOBJ structure.
Caller-supplied pointer to a buffer to receive method-specified flags. (See the following Remarks section.)
Caller-supplied size, in bytes, of the buffer pointed to by pBuffer.
Caller-supplied pointer to a location to receive the required minimum pBuffer size.
The method must return one of the following values.
The operation succeeded.
The operation failed
A rendering plug-in for Unidrv must implement the
IPrintOemUni::DriverDMS method. The method will be called only if Unidrv finds a valid interface pointer to the OEM's rendering plug-in.
IPrintOemUni::DriverDMS method allows a rendering plug-in to indicate that it will be using a device-managed drawing surface instead of the default GDI-managed surface.
The method must specify HOOK_-prefixed flags in the buffer pointed to by pBuffer, indicating which of the plug-in's graphics DDI hooking functions are to be called for the drawing surface. The HOOK_-prefixed flags are defined in winddi.h and described in the EngAssociateSurface function's description. Flags specified by
IPrintOemUni::DriverDMS are passed by Unidrv to EngAssociateSurface. (Note that to support a device-managed surface, the rendering plug-in must hook out all drawing functions.) For more information, see Handling Device-Managed Surfaces.
IPrintOemUni::DriverDMS sets flags in the buffer pointed to by pBuffer, Unidrv creates a device-managed surface by calling EngCreateDeviceSurface. If
IPrintOemUni::DriverDMS does not set any flags, Unidrv creates a GDI-managed surface by calling EngCreateBitmap. In either of these cases,
IPrintOemUni::DriverDMS should return S_OK.
If the output buffer size specified by cbSize is too small, the method should specify the required size in the location pointed to by pcbNeeded, call SetLastError(ERROR_INSUFFICIENT_BUFFER), and return E_FAIL.