X64下 NtConnectPort

來源:互聯網
上載者:User

這兩天被這個函數搞慘了,在XP32下能夠建立和接受串連,可是編譯成64位後拿到WIN7 上就怎麼已連不上了,報的錯誤時NTSTATUS 0XC0000D,STATUS_INVALID_PARAME

TER.

在XP32上的環境是:

1:使用了一個NTDLL.H檔案,和串連了一個NTDLL.LIB檔案,其中NTDLL.H在32和64位下模式下是一樣的,但NTDLL.LIB檔案在32和64位元模式下分別是不同的檔案。

所以:懷疑

1:NTDLL.H檔案在32和64下應該不一樣才正確?

2:還是NTDLL.LIB在64位下的那個版本不對?

3:還是NTDLL.H檔案版本不對?

一開始我懷疑是WIN7上NTDLL.DLL檔案升級改變了,所以才不能用,但仔細想想,很多軟體,很多功能都可以在WIN7上繼續運行,微軟不可能連這個LPC機制都該了,如果改了好多軟體肯定都用不了了,我還一天去找WIN7 32位的機子測試,浪費時間了,

下午:17:35:

到現在發現了點線索,因為我有兩個例子,一個是用下面這個封裝了一下的東西

typedef struct _TRANSFERRED_MESSAGE
{
    PORT_MESSAGE Header;

    ULONG   Command;
    WCHAR   MessageText[48];

} TRANSFERRED_MESSAGE, *PTRANSFERRED_MESSAGE;

另一個叫LARGE_MESSAGE_SIZE,可能這個設定的大了點還是怎麼回事,還不知道,下次再研究了。

用前面那個方法能夠在64位上串連和通訊了,不過收到的資料卻不是我想要的,我一個用的是32位,一個用的64位的,可能要對PORT_MESSAGE或者相關的訊息結構體做些改動,現在還不知道,明天研究,下班了嘛。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.