
hi, i am new one to driver programming, now i m trying to do Bitmap driver, based on WDK6000 sample Bitmap driver source.
now, i am modified the WDK6000 Bitmap drive source code(ddihook.cpp) like that:
BOOL APIENTRY OEMStartPage(SURFOBJ *pso)
{
OEMDBG(DBG_VERBOSE, L"SEND PageNo OEMEndDoc entry.");
PDEVOBJ pDevObj = (PDEVOBJ)pso->dhpdev;
POEMPDEV pOemPDEV = (POEMPDEV)pDevObj->pdevOEM;
//DWORD dwWritten;
INT cScans;
if (pOemPDEV->pBufStart)
{
// file creations
char buf[50];
wchar_t lpfile[50];
sprintf(buf,"C:\\BitmapPrntPages");
mbstowcs(lpfile,buf,50);
if(GetFileAttributes(lpfile)==0xFFFFFFFF)
{
::CreateDirectory(lpfile,NULL);
}
PageNo++;
sprintf(buf,"C:\\BitmapPrntPages\\page_%d.bmp",PageNo);
mbstowcs(lpfile,buf,50);
if(GetFileAttributes(lpfile)!=0xFFFFFFFF)
{
::DeleteFile(lpfile);
}
HANDLE hCfile =::CreateFile(lpfile,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
LPDWORD ByteWritten = new DWORD;
//end creation of file
DWORD dwTotalBytes = pOemPDEV->cbHeaderOffBits + pOemPDEV->bmInfoHeader.biSizeImage; // File size
pOemPDEV->bmFileHeader.bfType = 0x4d42; // Signature = 'BM'
pOemPDEV->bmFileHeader.bfSize = dwTotalBytes; // Bytes in whole file.
pOemPDEV->bmFileHeader.bfReserved1 = 0;
pOemPDEV->bmFileHeader.bfReserved2 = 0;
pOemPDEV->bmFileHeader.bfOffBits = pOemPDEV->cbHeaderOffBits; // Offset to bits in file.
if (pOemPDEV->bColorTable)
pOemPDEV->bmFileHeader.bfOffBits += pOemPDEV->cPalColors * sizeof(ULONG);
// Num of scanlines
//
cScans = pOemPDEV->bmInfoHeader.biHeight;
// Flip the biHeight member so that it denotes top-down bitmap
//
pOemPDEV->bmInfoHeader.biHeight = cScans * -1;
::WriteFile(hCfile,(void*)&(pOemPDEV->bmFileHeader),sizeof(BITMAPFILEHEADER),ByteWritten,NULL);
::WriteFile(hCfile,(void*)&(pOemPDEV->bmInfoHeader),sizeof(BITMAPINFOHEADER),ByteWritten,NULL);
if (pOemPDEV->bColorTable)
{
::WriteFile(hCfile,pOemPDEV->prgbq,pOemPDEV->cPalColors * sizeof(ULONG),ByteWritten,NULL);
}
//// Dump the data now
::WriteFile(hCfile,pOemPDEV->pBufStart,pOemPDEV->bmInfoHeader.biSizeImage,ByteWritten,NULL);
DWORD o1 = GetLastError();
CloseHandle(hCfile);
if(o1 != 0)
{
::MessageBox(NULL,L"OEMStartPage",L"WriteFile error",MB_OK);
}
vFreeBuffer(pOemPDEV);
pOemPDEV->bmInfoHeader.biHeight -= pOemPDEV->bmInfoHeader.biHeight;
pOemPDEV->bmInfoHeader.biSizeImage -= pOemPDEV->bmInfoHeader.biSizeImage;
return (pOemPDEV->m_pfnDrvStartPage)(pso);
}
Is it ok?
These code gives out multiple bitmap files, but my doubts over to make unique file name. so please explain me , where? or how? to get the file name
otherwise, how to get the file name from user?
->

sorry for my Eng.