100分求:打印过滤驱动,有这方面的资料或者例子都可以,多谢大家!

100分求:打印过滤驱动,有这方面的资料或者例子都可以,谢谢大家!!!!!
并口过滤驱动,俺是新手,刚接触驱动,希望有例程或这文档,谢谢!!!

------解决方案--------------------
我这里有个图象采集的,有采集卡方面的应用,只贴出来了一小部分,你可以借鉴下.

while(!m_bShowThreadEnd)
{
CGSTATUS status = CG_OK;

// 定义BITMAPINFO 结构指针,显示图像时使用
BITMAPINFO *pBmpInfo = NULL;
BYTE *pInfoBuffer = NULL;
BYTE *pImageBuffer = NULL;////BIMTAPINFO 存储缓冲区,m_pBmpInfo即指向此缓冲区,图象缓冲区
BYTE *pImageBuffertemp = NULL;//yang325
DWORD dwImageSize = 0;//图像大小

BYTE *pStaticBuffer = NULL;//静态内存地址指针
HANDLE handle = NULL;//静态内存描述句柄

CDC *pDC = m_pDlg-> GetDC();

int nNumber = -1, nStatus = 0;
BOOL bComplete = FALSE;

pInfoBuffer = new BYTE[sizeof(BITMAPINFO)];
pImageBuffer = new BYTE[m_imgWidth * m_imgWidth * 3];
pImageBuffertemp = new BYTE[m_imgWidth * m_imgHeight * 3];


if (pInfoBuffer && pImageBuffer)
{
// m_pBmpInfo即指向m_chBmpBuf缓冲区,用户可以自己分配BTIMAPINFO缓冲区
pBmpInfo = (BITMAPINFO *)pInfoBuffer;

// 初始化BITMAPINFO 结构,此结构在保存bmp文件、显示采集图像时使用
pBmpInfo-> bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
// 图像宽度,一般为输出窗口宽度
pBmpInfo-> bmiHeader.biWidth = m_imgWidth;
/*
* 图像高度,根据扫描模式(FRAME/FIELD)的不同
* FRAME制下,一般为输出窗口高度
* FIELD制下,一般为输出窗口高度的一半
*/
pBmpInfo-> bmiHeader.biHeight = m_imgHeight;
/*
* 图像位深度,由视频格式确定,
* 采集图像视频格式有RGB565、RGB555、RGB888、ALL8BIT等,
* 如果使用CGDateTransfrom函数,则将15,16位数据转换为24位
*/
pBmpInfo-> bmiHeader.biBitCount = 24;
/*
* 以下设置一般相同,
* 对于低于8位的位图,还应设置相应的位图调色板
*/
pBmpInfo-> bmiHeader.biPlanes = 1;
pBmpInfo-> bmiHeader.biCompression = BI_RGB;
pBmpInfo-> bmiHeader.biSizeImage = 0;
pBmpInfo-> bmiHeader.biXPelsPerMeter = 0;
pBmpInfo-> bmiHeader.biYPelsPerMeter = 0;
pBmpInfo-> bmiHeader.biClrUsed = 0;
pBmpInfo-> bmiHeader.biClrImportant = 0;

// 计算图像大小,由视频输出窗口和视频格式确定
dwImageSize = m_imgWidth * m_imgHeight * 3;
DWORD dwRcImageSize = m_imgWidthRc * m_imgHeightRc * 3;

............................................................
}
}

后面是应用程序部分,就没贴出来了.
------解决方案--------------------
汗...偶们最近做的都是Hook型的...估计楼主也用不到了...

Hook那个StartPage()函数就OK...