我試圖遵循的MSDN文檔位於here。基本上我想弄清楚在C#中如何將該指針讀入DHCP_OPTION_DATA結構列表中。如何從指針中檢索列表?
我有下面的代碼,但我不認爲這是做到這一點的正確方法。
DHCP_OPTION_ARRAY optionArray = (DHCP_OPTION_ARRAY)Marshal.PtrToStructure(options, typeof(DHCP_OPTION_ARRAY));
List<DHCP_OPTION> allOptions = new List<DHCP_OPTION>();
for (int i = 0; i < optionArray.NumElements; i++) {
DHCP_OPTION option = (DHCP_OPTION)Marshal.PtrToStructure(optionArray.Options, typeof(DHCP_OPTION));
allOptions.Add(option);
optionArray.Options = (IntPtr)((int)optionArray.Options + (int)Marshal.SizeOf(option));
}
因爲我不能將指針組裝成通用列表集合,所以我嘗試了這種方法。我的問題是,我得到的結果是基於我將IntPtr增加到多少的結果。最初我是這麼做的。
optionArray.Options = (IntPtr)((int)optionArray.Options + (int)Marshal.SizeOf(typeof(DHCP_OPTION_DATA)));
但是,我後來意識到,下一個元素將位於實際選項的大小之後。
所以問題仍然存在,我如何將Ptr編組爲一個結構列表?
編輯1
我貼錯了文章,現在是固定的。
EDIT 2
雖然兩者的答案是偉大的,我選擇了回答我的問題,因爲它解決了我缺乏的是如何將數據正在封送處理信息的後端處理的理解。
好的,我今晚一定會在我回家的時候檢查一下。 – meanbunny
@meanbunny:你有工作嗎? –
是的,我確實做到了,你的回答幫助我到達那裏,並給了我我的理解,即我正在尋找。我不知道它是如此簡單化,我認爲它會比這更復雜 – meanbunny