Сбой CreateDC с кодом ошибки 0 - PullRequest
2 голосов
/ 19 ноября 2009

Я печатаю, используя CreateDC, передавая допустимую структуру DEVMODE и получая значение NULL, которое указывает на ошибку, но GetLastError возвращает 0.

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

Это работает для всех моих клиентов, кроме одного, есть идеи?

Ответы [ 2 ]

2 голосов
/ 23 ноября 2009

Это оказалось проблемой с API-интерфейсом спулера.

Это 32-битная служба Windows, работающая в 64-битной системе.

Кажется, что только один пользователь / сеанс может печатать одновременно из 32-разрядного процесса, следующий пользователь должен ждать, пока splwow64.exe прекратит (или уничтожит) тайм-аут, прежде чем он сможет печатать.

Это покрыто technote от MS.

0 голосов
/ 19 ноября 2009

Вы уверены, что pDevMode действителен? Вы можете попробовать использовать нулевой указатель здесь, если проблема в DEVMODE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...