2010-12-15 82 views
0

我已經連接了一臺USB打印機,並且我試圖使用CFile類的Open方法打開那個端口。 下面的代碼工作正常的Windows XP,但它不會在Windows 7中運行:爲什麼下面的代碼在Windows XP中工作,但不是7?

#include<stdio.h> 
#include<afx.h> 
void main() 
{ 
    CFile m_Port; 
    CString PortName = "\\\\?\\usb#vid_0b0b&pid_106e#sx0000000-tc0000#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}"; 
    int i; 
    i = m_Port.Open (PortName ,2,0);//PortName is DevicePath 
    if (i > 0) 
     printf("Done"); 
    else 
     printf("Its not working"); 

    i=GetLastError(); 
    printf("\n\nError=%d",i); 
} 

在Windows XP中正常工作,但在Windows 7的情況下,GetLastError返回3.如何能值我修復了這個代碼在Windows XP和Windows 7上的工作? 讓我知道他們是否在Windows 7中有任何不同的GUID。他們的任何其他選項在Windows 7中使用設備路徑打開端口?

+0

3 - >「系統找不到指定的路徑。」我猜你已經遇到了Windows 7上的安全問題。或者說,當你無法按照自己想要的方式做出自己想要的東西的時候,即使你有安全感,但任何感興趣的黑客都可以。另一種可能性是您使用的UUID。或者一般的ID:你確定它在Windows 7中是一樣的嗎? – 2010-12-15 06:31:45

+0

我的建議:使用ProcessExplorer檢查引擎蓋下究竟發生了什麼。 – Bahbar 2010-12-15 10:12:32

回答

0

這應該適用於Windows 7,但也許你必須運行應用程序提升。 我想,路徑是錯誤的(這就是錯誤3所說的)。 打開設備管理器,在上下文菜單中選擇設備和「屬性」。然後是「詳細信息」,然後是「硬件ID」。 你在這裏找到你的代碼示例的路徑嗎?如果不是,請相應地更改您的代碼。

另外:對於這種系統近編程,我會使用從WIN-API ::而不是CFile類的CreateFile。

相關問題