CreateDC 失败,错误代码为 0

问题描述 投票:0回答:2

我使用 CreateDC 进行打印,传入有效的 DEVMODE 结构并返回 NULL,这表明有错误,但 GetLastError 返回 0。

m_hDC = ::CreateDC(L"WINSPOOL", PrinterName, NULL, pDevMode);
if (m_hDC == NULL)
{
 throw Exception(GetLastError(), __LINE__, _T(__FILE__));
}

这对我的所有客户都有效,除了一个,有什么想法吗?

windows winapi
2个回答
3
投票

事实证明这是 thunking spooler api 的问题。

该软件是运行在64位系统上的32位Windows服务。

似乎一次只有一个用户/会话可以从 32 位进程进行打印,下一个用户必须等待 splwow64.exe 超时(或杀死它)才能打印。

它包含在 Microsoft 的 KB972616 存档中。


-1
投票

您确定

pDevMode
有效吗?您可以尝试在此处使用
NULL
指针,以防
DEVMODE
出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.