调用打印机打印问题
小弟在使用 WritePrinter函数向打印机发送数据时,打印机显示添加了一个新的任务,但是确没有打印出来,请各位高人给看下,代码如下:
bool CRPrinter::DPSendFiletoPrinter(LPCSTR pPrinterName, LPCSTR pFilePath)
{
DWORD tFileSize = 0;
DWORD tReadFileSize = 0;
DWORD size = 0;
char * tBuf = NULL;
HANDLE tPrinter = NULL;
DOC_INFO_1 tDocInfo1; // 打印文档信息
if(pPrinterName == NULL || pFilePath == NULL)
return false;
// 打开打印机
if(!OpenPrinter((LPSTR)pPrinterName,&tPrinter,NULL) || tPrinter == NULL){
return false;
}
memset(&tDocInfo1,0,sizeof(tDocInfo1));
tDocInfo1.pDocName = "my document"; // 文档名
tDocInfo1.pOutputFile = NULL;
tDocInfo1.pDatatype = "RAW"; // 数据以RAW格式发送(Win9x和WinNT都支持RAW和EMF格式,WinNT还支持TEXT格式
if(!StartDocPrinter(tPrinter, 1,(LPBYTE)&tDocInfo1)){
CloseHandle(tPrinter);
return false;
}
StartPagePrinter(tPrinter);
// 打开文件并获取文件大小
HANDLE tFile = CreateFile(pFilePath, GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
if(tFile == INVALID_HANDLE_VALUE){
return false;
}
tFileSize = GetFileSize(tFile,NULL);
if(tFileSize == 0xFFFFFFFF){
CloseHandle(tFile);
CloseHandle(tPrinter);
return false;
}
while(tFileSize>0){
size = tFileSize<MAXPRINTSIZE?tFileSize:MAXPRINTSIZE;
tBuf = (char *)malloc(size);
if(tBuf == NULL){
CloseHandle(tFile);
CloseHandle(tPrinter);
return false;
}
memset(tBuf, 0x0, size);
// 读数据
tReadFileSize = 0;
if(!ReadFile(tFile,(LPVOID)tBuf,size,&tReadFileSize,NULL) || size != tReadFileSize){
CloseHandle(tFile);
CloseHandle(tPrinter);
free(tBuf);
return false;
}
// 写入打印机
tReadFileSize = 0;
if(!WritePrinter(tPrinter, tBuf, size, &tReadFileSize) || size != tReadFileSize){
free(tBuf);
CloseHandle(tFile);
CloseHandle(tPrinter);
return false;
}
free(tBuf);
tFileSize = tFileSize - size;
}
//关闭文件
CloseHandle(tFile);
//结束打印,关闭打印机
EndPagePrinter(tPrinter);
if(!EndDocPrinter(tPrinter)){
CloseHandle(tPrinter);
return false;
}
CloseHandle(tPrinter);
return true;
}
执行后打印机状态为已暂停,名为my document的文档没有打印,跪求各位大虾指点