BOOLHook_WritePrinter(__inHANDLEhPrinter,__inLPVOIDpBuf,__inDWORDcbBuf,__outLPDWORDpcWritten)
{
BOOLfalg;
CAPIHook::ReplaceIATEntryInAllMods(g_WritePrinter.m_pszCalleeModName,g_WritePrinter.m_pfnHook,g_WritePrinter.m_pfnOrig);
falg=WritePrinter(hPrinter,pBuf,cbBuf,pcWritten);
CAPIHook::ReplaceIATEntryInAllMods(g_WritePrinter.m_pszCalleeModName,g_WritePrinter.m_pfnOrig,g_WritePrinter.m_pfnHook);
returnfalg;
}
引用1楼zhao4zhong1的回复:参考WinAPIOverride32源代码相关片断。
你好,能帮我分析下上面的代码是否有问题吗?是在windows核心编程里面的代码的基础上改的,你肯定非常熟悉了对windows核心编程的这段代码。
处理writePrinter函数时,先替换成真实的系统api函数地址,然后调用writePrinter函数,用完后在替换成自己的api函数地址。
但在实际测试的过程中,没有正常打印,打印被阻止了。
|