Это меня озадачило.У меня есть очень простая маленькая программа на c:
// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "windows.h"
int main()
{
char cPrinter[200];
DWORD count = 200;
HDC hDC = NULL;
GetDefaultPrinterA((LPSTR) &cPrinter, &count);
printf("Hello world, my printer is %s\n", cPrinter);
printf("Now I'm going to create a DC...\n");
hDC = CreateDCA(NULL, cPrinter, NULL, NULL);
printf("CreateDC returned the value %08x for my DC\n", hDC);
return 0;
}
Когда я запускаю ее в окне консоли на компьютере с Windows 7, я получаю дескриптор контекста устройства, как и ожидалось, нокогда я вызываю его в windbg, я получаю исключение 06ba, и функция CreateDC возвращает NULL.На компьютере с Windows 7 у меня есть несколько принтеров, определенных как указано на снимке экрана ниже:

Два физических принтера в спискеоба подключены к сети, но находятся в сети и доступны.
Изменение параметра драйвера для вызова CreateDC на "WINSPOOL" не помогает.
Есть предложения?