📄 prcomoem.h
字号:
FONTOBJ *pfo,
CLIPOBJ *pco,
RECTL *prclExtra,
RECTL *prclOpaque,
BRUSHOBJ *pboFore,
BRUSHOBJ *pboOpaque,
POINTL *pptlOrg,
MIX mix) PURE;
};
//
//****************************************************************************
// IPrintOemUni2 interface
//****************************************************************************
//
#undef INTERFACE
#define INTERFACE IPrintOemUni2
DECLARE_INTERFACE_(IPrintOemUni2, IPrintOemUni)
{
//
// IUnknown methods
//
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
STDMETHOD_(ULONG, Release) (THIS) PURE;
//
// IPrintOemCommon methods
//
//
// Method for getting OEM related information
//
STDMETHOD(GetInfo) (THIS_ DWORD dwMode,
PVOID pBuffer,
DWORD cbSize,
PDWORD pcbNeeded) PURE;
//
// Method for OEM private devmode handling
//
STDMETHOD(DevMode) (THIS_ DWORD dwMode,
POEMDMPARAM pOemDMParam) PURE;
//
// IPrintOemEngine methods
//
//
// Method for OEM to specify DDI hook out
//
STDMETHOD(EnableDriver) (THIS_ DWORD DriverVersion,
DWORD cbSize,
PDRVENABLEDATA pded) PURE;
//
// Method to notify OEM plugin that it is no longer required
//
STDMETHOD(DisableDriver) (THIS) PURE;
//
// Method for OEM to construct its own PDEV
//
STDMETHOD(EnablePDEV) (THIS_ PDEVOBJ pdevobj,
PWSTR pPrinterName,
ULONG cPatterns,
HSURF *phsurfPatterns,
ULONG cjGdiInfo,
GDIINFO *pGdiInfo,
ULONG cjDevInfo,
DEVINFO *pDevInfo,
DRVENABLEDATA *pded,
OUT PDEVOEM *pDevOem) PURE;
//
// Method for OEM to free any resource associated with its PDEV
//
STDMETHOD(DisablePDEV) (THIS_ PDEVOBJ pdevobj) PURE;
//
// Method for OEM to transfer from old PDEV to new PDEV
//
STDMETHOD(ResetPDEV) (THIS_ PDEVOBJ pdevobjOld,
PDEVOBJ pdevobjNew) PURE;
//
// IPrintOemUni methods
//
//
// Method for publishing Driver interface.
//
STDMETHOD(PublishDriverInterface)(THIS_ IUnknown *pIUnknown) PURE;
//
// Method for getting OEM implemented methods.
// Returns S_OK if the given method is implemented.
// Returns S_FALSE if the given method is not implemented.
//
//
STDMETHOD(GetImplementedMethod) (THIS_ PSTR pMethodName) PURE;
//
// DriverDMS
//
STDMETHOD(DriverDMS)(THIS_ PVOID pDevObj,
PVOID pBuffer,
DWORD cbSize,
PDWORD pcbNeeded) PURE;
//
// CommandCallback
//
STDMETHOD(CommandCallback)(THIS_ PDEVOBJ pdevobj,
DWORD dwCallbackID,
DWORD dwCount,
PDWORD pdwParams,
OUT INT *piResult) PURE;
//
// ImageProcessing
//
STDMETHOD(ImageProcessing)(THIS_ PDEVOBJ pdevobj,
PBYTE pSrcBitmap,
PBITMAPINFOHEADER pBitmapInfoHeader,
PBYTE pColorTable,
DWORD dwCallbackID,
PIPPARAMS pIPParams,
OUT PBYTE *ppbResult) PURE;
//
// FilterGraphics
//
STDMETHOD(FilterGraphics) (THIS_ PDEVOBJ pdevobj,
PBYTE pBuf,
DWORD dwLen) PURE;
//
// Compression
//
STDMETHOD(Compression)(THIS_ PDEVOBJ pdevobj,
PBYTE pInBuf,
PBYTE pOutBuf,
DWORD dwInLen,
DWORD dwOutLen,
OUT INT *piResult) PURE;
//
// HalftonePattern
//
STDMETHOD(HalftonePattern) (THIS_ PDEVOBJ pdevobj,
PBYTE pHTPattern,
DWORD dwHTPatternX,
DWORD dwHTPatternY,
DWORD dwHTNumPatterns,
DWORD dwCallbackID,
PBYTE pResource,
DWORD dwResourceSize) PURE;
//
// MemoryUsage
//
STDMETHOD(MemoryUsage) (THIS_ PDEVOBJ pdevobj,
POEMMEMORYUSAGE pMemoryUsage) PURE;
//
// TTYGetInfo
//
STDMETHOD(TTYGetInfo)(THIS_ PDEVOBJ pdevobj,
DWORD dwInfoIndex,
PVOID pOutputBuf,
DWORD dwSize,
DWORD *pcbcNeeded
) PURE;
//
// DownloadFontheader
//
STDMETHOD(DownloadFontHeader)(THIS_ PDEVOBJ pdevobj,
PUNIFONTOBJ pUFObj,
OUT DWORD *pdwResult) PURE;
//
// DownloadCharGlyph
//
STDMETHOD(DownloadCharGlyph)(THIS_ PDEVOBJ pdevobj,
PUNIFONTOBJ pUFObj,
HGLYPH hGlyph,
PDWORD pdwWidth,
OUT DWORD *pdwResult) PURE;
//
// TTDownloadMethod
//
STDMETHOD(TTDownloadMethod)(THIS_ PDEVOBJ pdevobj,
PUNIFONTOBJ pUFObj,
OUT DWORD *pdwResult) PURE;
//
// OutputCharStr
//
STDMETHOD(OutputCharStr)(THIS_ PDEVOBJ pdevobj,
PUNIFONTOBJ pUFObj,
DWORD dwType,
DWORD dwCount,
PVOID pGlyph) PURE;
//
// SendFontCmd
//
STDMETHOD(SendFontCmd)(THIS_ PDEVOBJ pdevobj,
PUNIFONTOBJ pUFObj,
PFINVOCATION pFInv) PURE;
//
// TextOutAsBitmap
//
STDMETHOD(TextOutAsBitmap)(THIS_ SURFOBJ *pso,
STROBJ *pstro,
FONTOBJ *pfo,
CLIPOBJ *pco,
RECTL *prclExtra,
RECTL *prclOpaque,
BRUSHOBJ *pboFore,
BRUSHOBJ *pboOpaque,
POINTL *pptlOrg,
MIX mix) PURE;
//
// IPrintOemUni2 methods
//
//
// Method for plugin to hook out spooler's WritePrinter API so it
// can get access to output data Universal driver is generating
//
// At DrvEnablePDEV time, Universal driver will call this function with
// pdevobj = NULL, pBuf = NULL, cbBuffer = 0 to detect if the plugin
// implements this function. Plugin should return S_OK to indicate it is
// implementing this function, or return E_NOTIMPL otherwise.
//
// In pcbWritten, plugins should return the number of bytes written to the
// spooler's WritePrinter function. Zero doesn't carry a special meaning,
// errors must be reported through the returned HRESULT.
//
STDMETHOD(WritePrinter) (THIS_ PDEVOBJ pdevobj,
PVOID pBuf,
DWORD cbBuffer,
PDWORD pcbWritten) PURE;
};
//
//****************************************************************************
// IPrintOemDriverUni interface
//****************************************************************************
//
#undef INTERFACE
#define INTERFACE IPrintOemDriverUni
DECLARE_INTERFACE_(IPrintOemDriverUni, IUnknown)
{
//
// IUnknown methods
//
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
STDMETHOD_(ULONG, Release) (THIS) PURE;
//
// IPrintOemDriverUni methods
//
//
// Function to get driver settings
//
STDMETHOD(DrvGetDriverSetting) (THIS_ PVOID pdriverobj,
PCSTR Feature,
PVOID pOutput,
DWORD cbSize,
PDWORD pcbNeeded,
PDWORD pdwOptionsReturned) PURE;
//
// Common to both Unidrv & Pscript
//
STDMETHOD(DrvWriteSpoolBuf)(THIS_ PDEVOBJ pdevobj,
PVOID pBuffer,
DWORD cbSize,
OUT DWORD *pdwResult) PURE;
//
// Unidrv specific XMoveTo and YMoveTo. Returns E_NOT_IMPL in Pscript
//
STDMETHOD(DrvXMoveTo)(THIS_ PDEVOBJ pdevobj,
INT x,
DWORD dwFlags,
OUT INT *piResult) PURE;
STDMETHOD(DrvYMoveTo)(THIS_ PDEVOBJ pdevobj,
INT y,
DWORD dwFlags,
OUT INT *piResult) PURE;
//
// Unidrv specific. To get the standard variable value.
//
STDMETHOD(DrvGetStandardVariable)(THIS_ PDEVOBJ pdevobj,
DWORD dwIndex,
PVOID pBuffer,
DWORD cbSize,
PDWORD pcbNeeded) PURE;
//
// Unidrv specific. To Provide OEM plugins access to GPD data.
//
STDMETHOD (DrvGetGPDData)(THIS_ PDEVOBJ pdevobj,
DWORD dwType, // Type of the data
PVOID pInputData, // reserved. Should be set to 0
PVOID pBuffer, // Caller allocated Buffer to be copied
DWORD cbSize, // Size of the buffer
PDWORD pcbNeeded // New Size of the buffer if needed.
) PURE;
//
// Unidrv specific. To do the TextOut.
//
STDMETHOD(DrvUniTextOut)(THIS_ SURFOBJ *pso,
STROBJ *pstro,
FONTOBJ *pfo,
CLIPOBJ *pco,
RECTL *prclExtra,
RECTL *prclOpaque,
BRUSHOBJ *pboFore,
BRUSHOBJ *pboOpaque,
POINTL *pptlBrushOrg,
MIX mix) PURE;
//
// Warning!!! new method!! must place at end of
// interface - else major incompatibility with previous oem plugins
//
STDMETHOD(DrvWriteAbortBuf)(THIS_ PDEVOBJ pdevobj,
PVOID pBuffer,
DWORD cbSize,
DWORD dwWait // pause data transmission for this many millisecs.
) PURE;
};
#endif // !KERNEL_MODE
#ifdef __cplusplus
}
#endif
#endif // !_PRCOMOEM_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -