设备管理器总结
進(jìn)度跟進(jìn)
Day 1
Enable和Disable的問題都解決了,剩下的問題都是關(guān)于怎么生成設(shè)備樹并呈現(xiàn)出來的問題,Windows操作系統(tǒng)應(yīng)該有現(xiàn)成的庫函數(shù)或者API調(diào)用,能把整個一棵樹一次性調(diào)出。但是C#開發(fā)環(huán)境下很少使用指針鏈表的概念,就算系統(tǒng)中有這么一棵樹,那么也應(yīng)該是用鏈表串起來的,在C#這邊我們要怎么接收呢?官方文檔應(yīng)該有說明,去官網(wǎng)文檔去找找。于是去看了MSDN的文檔,找了一大堆看似可用的接口,不知道怎么驗證調(diào)用函數(shù)會產(chǎn)生什么樣的結(jié)果,以及何時何處調(diào)用函數(shù),一無所知。于是把視線重新轉(zhuǎn)回到“怎么樣生成樹?Windows關(guān)于設(shè)備這一部分內(nèi)部設(shè)計結(jié)構(gòu)到底是什么樣子的?”上來。
Day 2
誤打誤撞,發(fā)現(xiàn)了一本名叫《Windows編程》的一本書,意識到我的問題應(yīng)該是與Windows編程相關(guān),于是打算靜下心來認(rèn)真拜讀這本巨作。主要有兩版:第五版和第六版,均在網(wǎng)上找到了相關(guān)資源。第五版出版時間在1998年,很早了,限于時代因素的影響,該書并沒有涉及到距離我們很近的Windows 7、Windows 8以及Windows 10,但依然具有很高的可讀性。算是第一次接觸Windows編程,書本里邊的很多概念都異常新穎,同時也進(jìn)一步了解了MFC的概念,想有時間重新把操作系統(tǒng)相關(guān)的書讀讀。第六版的Windows編程主要講C#怎么編寫Windows8環(huán)境下的程序,跳過。于是看了一天的Windows編程,收獲是不小,但是還是沒能把問題解決了,感覺越走越遠(yuǎn)。
Day3
不能這么下去了,一點動靜都沒有,得想辦法解決問題了,應(yīng)該是走偏了,重新回到正軌上來。重新審視問題:我是要拿到設(shè)備樹,而設(shè)備樹是由設(shè)備節(jié)點構(gòu)成的,所以我們得拿到每一個節(jié)點的值。找到C版的設(shè)備管理器,好好研讀源碼,要怎么做。找到生成樹的代碼位置,一行一行往過走,記錄了很多函數(shù),來回跳,太難調(diào)試了,并且文檔對這些函數(shù)的釋義也不清不楚。C語言版的設(shè)備管理器(含bug)就這樣走了一天,做得異常痛苦。然而并沒有什么進(jìn)展。
Day4
真的不能這么下去了,得理清源碼的邏輯,然后翻譯為C#版的,這就搞定了。仔細(xì)理清了邏輯,發(fā)現(xiàn)其實獲取父節(jié)點的這個操作并不是實際意義上存在這么一種父節(jié)點,而是邏輯上的父子關(guān)系。早先是先入為主了。所以大體思路是,找到子節(jié)點,自然能找到父節(jié)點,而沒必要從父節(jié)點開始進(jìn)行廣度優(yōu)先遍歷,加大讀取難度。著手開始做,首先整體把子節(jié)點遍歷,提取出父節(jié)點,此時可以使用字典,省去了去重部分的編寫,而后再將子節(jié)點找到對應(yīng)的父節(jié)點插進(jìn)去。所用到API函數(shù)的C#封裝也可以在網(wǎng)上找到對應(yīng)的實現(xiàn),姑且把這部分歸結(jié)于不熟練吧。至此,簡易版設(shè)備管理器做完了。
總結(jié)
- 上一篇: 南京工业大学计算机考研难吗,南京工业大学
- 下一篇: 对接支付宝接口流程(沙箱环境)