Получение IP-адреса с помощью XcvData

Мне нужно получить IP-адрес принтера, но я не добился большого успеха.
Уже пробовал разными способами. В настоящее время мой код выглядит так:

void Spl::GetIpAddress(LPSTR printerName)
{
HANDLE hPrinter;
PBYTE wAddress = NULL;
DWORD size;
DWORD status;
LPSTR portName = GetProt(printerName);
std::ostringstream strTemp;
strTemp << portName;

string temp = ",XcvPort " + strTemp.str();
//temp = ,XcvPort 192.168.2.247

LPSTR tempLPSTR((LPSTR)temp.c_str());

if(OpenPrinter(tempLPSTR,&hPrinter,NULL))
{
if (XcvData(hPrinter, L"IPAddress", NULL, 0,wAddress,31, &size,&status))
{}
}

}

Когда он пытается вызвать функцию XcvData, она не вводит ‘IF’. И мой объект «wAddress» остается пустым.
Потому что я не получаю?

OBS: этот код основан на документе MSDN: http://msdn.microsoft.com/en-us/library/windows/hardware/ff562761(v=vs.85).aspx

Поблагодарить!

0

Решение

Вы пропускаете имя сервера в OpenPrinter вызов. Имя принтера должно выглядеть примерно так:

"\\\\myServer\\,XvcPort myPort"

Чтобы подтвердить, что это проблема, позвоните GetLastError когда OpenPrinter выходит из строя.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]