使用XcvData获取IPAddress

时间:2013-04-05 15:02:59

标签: c++ visual-c++ spool print-spooler-api tcpmon

我需要获得打印机的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 doc:http://msdn.microsoft.com/en-us/library/windows/hardware/ff562761(v=vs.85).aspx

感谢!

1 个答案:

答案 0 :(得分:1)

您在OpenPrinter电话中缺少服务器名称。打印机名称应如下所示:

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

要确认问题,请在GetLastError失败时致电OpenPrinter