2013-04-05 404 views
0

我需要得到打印機的IP,但我沒有很大的成功。 已經嘗試過各種方式。目前,我的代碼是這樣的:獲取ip地址與XcvData

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

謝謝!

回答

1

你在OpenPrinter呼叫丟失的服務器名稱。打印機名稱應該是這個樣子:

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

要確認這就是問題所在,請致電GetLastErrorOpenPrinter失敗。