2011-08-12 38 views
0

我需要從存儲器位置的值爲0至3個字節假定INT使用4個字節的數據,並且如果長期使用8個字節, 我想讀0〜7字節長的數據,並看看它給回的價值。 任何人都可以用C#代碼來幫助我。讀數值的指針位置

問候, Vix指數

+0

自己的過程或其他進程? – CodesInChaos

回答

1

這可能是非常危險的,怎麼越來越地址,你是如何評價它是有效的?並非每個地址都是有效的,而試圖從其中一些地址讀取會導致例外。

但是你可以使用Marshal.Read*方法做到這一點。

int intValue = Marshal.ReadInt32(addr); 
long longValue = Marshal.ReadInt64(addr); 

您還需要捕獲AccessViolationException。

而且你想從虛擬地址或從物理內存中讀取。從C#開始,您只會從您的流程的virtual address space中讀取數據。您必須使用內核模式驅動程序才能直接訪問計算機上的物理內存。

+0

如果你需要捕獲AccessViolations你可能做錯了什麼。 – CodesInChaos

+0

int i = 16; 長j = 56; int * p1; 長* p2; p2 =&j; p1 =&i; 我想讀從0存儲的值 - 作爲INT被分配有4個字節長與8個字節 與之相似0-7字節的長3個字節爲int。 – Vix

+0

爲什麼你首先需要指針? int已經包含這些字節。 – CodesInChaos