Создание контекста устройства принтера успешно, за исключением случаев, когда приложение запускается под windbg - PullRequest
0 голосов
/ 22 мая 2018

Это меня озадачило.У меня есть очень простая маленькая программа на 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 у меня есть несколько принтеров, определенных как указано на снимке экрана ниже:

the printers I've got defined

Два физических принтера в спискеоба подключены к сети, но находятся в сети и доступны.

Изменение параметра драйвера для вызова CreateDC на "WINSPOOL" не помогает.

Есть предложения?

1 Ответ

0 голосов
/ 22 мая 2018

решаемая.Оказалось, что это сетевой порт принтера, который ссылался на IP-адрес рабочей станции, который был изменен, поэтому IP-адрес теперь недействителен.Хотя этот порт не был выбран для принтера по умолчанию, кажется, что он все еще как-то запрашивается.Во всяком случае, удаление порта решило проблему.

...