锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
姝ら樁孌典富瑕佹槸鑳界啛緇冨湴浣跨敤鏌愮璇█銆傝繖灝辯浉褰撲簬緇冩涓殑濂楄礬鍜屾灦寮忚繖浜涜〃闈㈢殑涓滆タ銆?br>絎簩闃舵
姝ら樁孌佃兘綺鵑氬熀浜庢煇縐嶅鉤鍙扮殑鎺ュ彛錛堜緥濡傛垜浠幇鍦ㄥ父鐢ㄧ殑Win 32鐨凙PI鍑芥暟錛変互鍙婃墍瀵瑰簲璇█鐨勮嚜韜殑搴撳嚱鏁般傚埌杈捐繖涓樁孌靛悗錛屼篃灝辯浉褰撲簬鍙互榪涜鐪熷疄鏁f墦瀵圭粌浜嗭紝鍙互鐪熸鍦板湪瀹炶返涓仛浜涘簲鐢ㄣ?br>絎笁闃舵
姝ら樁孌佃兘娣卞叆鍦頒簡瑙f煇涓鉤鍙扮郴緇熺殑搴曞眰錛屽凡緇忓叿鏈変簡鍒濈駭鐨勫唴鍔熺殑鑳藉姏錛屼篃灝辨槸“鎵嬩腑鏈夊墤錛屽績涓棤鍓?#8221;銆?br>絎洓闃剁駭
姝ら樁孌佃兘鐩存帴鍦ㄥ鉤鍙頒笂榪涜姣旇緝娣卞眰嬈$殑寮鍙戙傚熀鏈笂錛岃兘杈懼埌榪欎釜灞傛灝卞彲浠ヨ鏄繘鍏ヤ簡楂樺眰嬈°傝繖鏃惰繘鍏ヤ簡楂樼駭鍐呭姛鐨勪慨鐐箋傛瘮濡傝兘榪涜VxD鎴栨搷浣滅郴緇熺殑鍐呮牳鐨勪慨鏀廣?br>榪欐椂宸茬粡涓嶅啀鏈夎璦鐨勬潫緙氾紝璇█鍙槸涓縐嶅伐鍏鳳紝鍗充嬌瑕佺敤鑷繁涓嶄細鐨勮璦榪涜寮鍙戯紝涔熷彧鏄畝鍗曞湴鐔熸倝涓涓嬶紝灝辨墜鍒版搾鏉ワ紝瀹屽叏涓嶅儚鏄涓闃舵鐨勬椂鍊欏涔犺璦鐨勯偅縐嶆儏鍐點備竴鑸潵璇達紝浠庣涓夐樁孌佃繃娓″埌絎洓闃舵鏄瘮杈冨洶闅劇殑銆備負浠涔堜細闅懼憿錛熻繖灝辨槸鍥犱負寰堝浜虹殑鎬濇兂鍙樹笉榪囨潵銆?br>絎簲闃剁駭
姝ら樁孌靛氨宸茬粡涓嶅啀灞闄愪簬綆鍗曠殑鎶鏈笂鐨勯棶棰樹簡錛岃屾槸鑳戒粠鍏ㄥ眬涓婃妸鎻″拰璁捐涓涓瘮杈冨ぇ鐨勭郴緇熶綋緋葷粨鏋勶紝浠庡唴鏍稿埌澶栧眰鐣岄潰銆傚彲浠ヨ鏄?#8220;鎵嬩腑鏃犲墤錛屽績涓湁鍓?#8221;銆傚埌浜嗚繖涓樁孌典互鍚庯紝鑳藉甯傞潰涓婄殑浠諱綍杞歡榪涜鍓栨瀽錛屽茍鑳芥寜鑷繁鐨勮姹傝繘琛岃璁★紝灝辯畻鏄疢S Word榪欐牱鐨勫ぇ鍨嬭蔣浠訛紝鍙鏈夊厖瓚崇殑鏃墮棿錛屼篃涓瀹氫細璁捐鍑烘潵銆?br>絎叚闃剁駭
姝ら樁孌典篃鏄渶楂樼殑澧冪晫錛岃揪鍒?#8220;鏃犳嫑鑳滄湁鎷?#8221;銆傝繖鏃跺欙紝浠諱綍闂灝辯函綺瑰彉鎴愪簡涓涓濊礬鐨勯棶棰橈紝涓嶆槸鐢ㄤ粈涔堜唬鐮佸氨鑳借〃紺虹殑銆備篃灝辨槸“鎵嬩腑鏃犲墤錛屽績涓篃鏃犲墤”銆?br>姝ゆ椂錛屽浜庣粌鍔熺殑浜烘潵璇達紝浠栧凡涓嶇敤鍐嶅幓瀛︿粈涔堝皯鏋楁嫵錛屽彧鏄湪鏃佺湅涓涓嬪皯鏋楁嫵鐨勫鎴橈紝灝辮兘鎶婃鎷蟲嬁鏉ュ氨鐢ㄣ傝繖灝辨槸鐪熸鐨勫ぇ甯堢駭鐨勪漢鐗┿傝繖鏃訛紝Win 32鎴朙inux鍦ㄤ綘鐪奸噷鏄病鏈変粈涔堝樊鍒殑銆?br>姣忎竴涓樁孌靛啀鍚戜笂鍙戝睍鏃墮兘瑕佹寜涓瀹氱殑鏂規硶銆傜涓銆佺浜屼釜闃舵閫氳繃鑷灝卞彲浠ュ畬鎴愶紝鍙澶氱敤蹇冨幓鐮旂┒錛岃愬績鍦板幓瀛︿範銆?br>瑕佹兂浠庣浜屼釜闃舵榪囨浮鍒扮涓変釜闃舵錛屽氨瑕佹湁涓涓ソ鐨勫涔犵幆澧冦備緥濡傛湁涓涓珮鎵嬪甫棰嗘垨鍏徃閲屾湁涓涓ソ鐨勭粌鎵嬬幆澧冦傜粡榪囦簩銆佷笁騫寸殑縐瘡灝辮兘杈懼埌絎笁涓樁孌點備絾鏄紝鏈変簺浜哄埌杈劇涓変釜闃舵鍚庯紝甯稿父灝卞緢闅炬湁澧冪晫涓婄殑紿佺牬浜嗐備粬浠繖鏃朵細浜х敓涓縐嶈蹇碉紝璁や負杞歡鏃犻潪濡傛錛岃涓鴻嚜宸卞凡鏃犳墍涓嶈兘銆傚叾瀹烇紝榪欐椂濡傛灉閬囧埌澶х殑鎴栭毦浜涚殑杞歡錛屼粬浠線寰榪樻槸鏃犱粠涓嬫墜銆?br>鐜板湪鎴戜滑鍥藉澶ч儴鍒嗙▼搴忓憳閮芥槸鍦ㄧ浜屻佷笁綰т箣闂淬備粬浠ぇ澶氶兘鏄氳繃鑷鎴愭墠鐨勶紝涓嶈繃榪欐牱鐨勭▼搴忓憳涓鑸湪杞歡鍏徃涔熻兘鐙綋涓闈紝瀹屾垚涓浜涜蔣浠剁殑妯″潡銆?br>浣嗘槸錛屼篃榪樻湁涓
]]>
it浜鴻祫璁氦嫻佺綉
http://www.it315.org
榪欎釜緗戠珯鏄垜鏈榪戞墠鍙戠幇鐨勶紝铏界劧鍐呭涓嶅錛屼絾鏄彁渚涚殑鐩稿叧java宸ュ叿鎸洪綈鍏ㄣ傝繕鏈夊氨鏄噷闈㈡彁渚涗簡java鏁欏瑙嗛褰曡薄鐨勫厤璐逛笅杞斤紝濂藉儚涓涓ゅ懆鏇存崲涓孌點備釜浜鴻寰楁尯閫傚悎鍒濆鑰呯殑錛屽挨鍏舵槸閭d釜classpath鐨勮緗紝璁茬殑寰堥忓交錛屽ぇ瀹舵湁絀哄彲浠ョ湅涓鐪嬨?br>
java瀹樻柟绔欑偣(鑻辨枃)
http://java.sun.com
瑕佹兂浜嗚В鏈鏂扮殑java鍔ㄦ侊紝涓嬭澆鏈鏂扮殑java鐩稿叧錛屾瘮濡俲2se銆乯2ee銆乯2se鐨勬渶鏂癹dk鐗堟湰灝辨潵榪欓噷鍚с?br>
java涓枃绔?br>http://www.java-cn.com
榪欎釜鍙兘澶у閮界煡閬擄紝涓嶇敤璇翠簡錛屼粬鎻愪緵鐨刯ava璧勬簮鏄渶涓板瘜鐨勩傛敞鍐岃鍧涙槸鍏嶈垂鐨勶紝榪橀佺Н鍒嗭紝鐢ㄧН鍒嗗彲浠ヤ笅杞借蔣浠跺拰鐢靛瓙涔︾瓑錛屽鏋滅Н鍒嗙敤瀹屼簡錛屽氨闇瑕佽嚜宸卞彂琛ㄤ竴浜涙枃绔犳潵璧氭柊鐨勭Н鍒嗐?br>
涓枃java緗戠珯
http://www.cn-java.com
璺熶笂闈㈢珯鐐圭被浼肩殑涓涓珯錛屽畻鏃ㄥ氨鏄細涓簀ava鐖卞ソ鑰呮湇鍔°傚煎緱涓鐪嬶紒
閿嬬綉
http://www.ijsp.net/tech/book/index.jsp
緇煎悎鎬х殑java緗戠珯錛屽唴鍚?#8220;涓嬭澆涓績”銆?#8220;鏁欑▼鏁欏”絳夋爮鐩?br>
java鍔ㄥ姏
http://eww.cn
緗戠珯鐨勫唴瀹瑰彲浠ワ紝浣嗘槸鏈涓哄嚭鑹茬殑鏄畠鎵榪愮敤鐨刦lash鎶鏈紝鎴戝氨涓嶅湪榪欓噷澶氳浜嗭紝澶у鍘葷湅鐪嬪氨鐭ラ亾浜嗭紝涓涓瓧“閰?#8221;錛侊紒錛?br>
vc鏂歸潰鐨勶細
vc鐭ヨ瘑搴?br>http://www.vckbase.com
榪欎釜緗戠珯灝變笉鐢ㄥ璇翠簡錛屽涔爒c蹇呭幓涔嬪湴銆傜綉绔欎笓闂ㄦ彁渚涗簡鍏嶈垂鐨刦tp涓嬭澆錛屽ソ涓滀笢宸ㄥ錛?br>
vc涔嬭礬
http://www.vcroad.com
緇煎悎杞歡寮鍙戠綉绔欙紝浠c涓轟富銆?#8220;璧勬簮涓績”鏈夎澶氬煎緱涓嬭澆鐨勪笢涓溿?br>
visual c++/mfc寮鍙戞寚鍗?br>http://www.vchelp.net
浠ヨ榪皐indows寮鍙戜負涓葷殑绔欑偣錛屾彁渚涗簡鏈鏂扮殑婧愪唬鐮侊紝寮鍙戝伐鍏鳳紝寮鍙戣祫鏂欙紝寮鍙戞暀紼嬪拰瀵瑰ソ鐨勫紑鍙戠珯鐐癸紝寮鍙戝伐鍏鳳紝鍥句功鍋氫粙緇嶏紝鍚屾椂涓轟粠浜嬪紑鍙戠殑鏈嬪弸鎻愪緵鍙戝竷鑷繁寮鍙戠殑杞歡錛屼唬鐮佸拰宸ュ叿鍦烘墍銆?
c緇磋鐐?br>http://www.c-view.org/root/index.htm
鏈榪戝彂鐜扮殑vc濂界珯錛屼功綾嶃佽蔣浠躲佷唬鐮佷笅杞戒竴搴斿叿鍏紒錛侊紒
娓告垙寮鍙戯細
椋庝簯宸ヤ綔瀹?br>http://member.netease.com/~cloudwu/2000/index.html
鏍囩偣娓告垙鍒朵綔
http://makegame.myetang.com/
鏈潵寮鍙戣?br>http://www.fdev.net/
緇煎悎鐨勶細
涓浗杞歡緗?br>http://www.csdn.net
涓浗鏈澶х殑寮鍙戣呯綉緇滐紝浠栦箣鎵浠ヨ憲鍚嶅氨鏄洜涓轟粬鐨勮鍧涳紝澶у鏈夌┖鍙互鍘葷湅鐪嬶紝鑳戒笅鍒板緢澶氫笉閿欑殑涓滀笢錛屽彟澶栦篃鏄氦嫻佸涔犵殑濂藉湴鏂廣?br>
鐢靛瓙涔︾睄鐨勶細
http://www.itebook.net
鏈鍚庡叕甯冧竴涓法濂界殑錛岀媯澶氱殑鐢靛瓙涔︿笅杞?br>http://www.pdown.net
榪樻湁宸ㄥソ鐨?br>http://www.codestudy.net/default.asp
鎴戜細涓嶆柇瀹屽杽榪欎釜甯栧瓙錛岃鏄枒绔瑰厑璁革紝璇風疆欏?/span>
]]>
瀹為檯涓婏紝鎮ㄥ彲浠ユ妸绱㈠紩鐞嗚В涓轟竴縐嶇壒孌婄殑鐩綍銆傚井杞殑SQL SERVER鎻愪緵浜嗕袱縐嶇儲寮曪細鑱氶泦绱㈠紩錛坈lustered index錛屼篃縐拌仛綾葷儲寮曘佺皣闆嗙儲寮曪級鍜岄潪鑱氶泦绱㈠紩錛坣onclustered index錛屼篃縐伴潪鑱氱被绱㈠紩銆侀潪綈囬泦绱㈠紩錛夈備笅闈紝鎴戜滑涓句緥鏉ヨ鏄庝竴涓嬭仛闆嗙儲寮曞拰闈炶仛闆嗙儲寮曠殑鍖哄埆錛?br>
鍏跺疄錛屾垜浠殑姹夎瀛楀吀鐨勬鏂囨湰韜氨鏄竴涓仛闆嗙儲寮曘傛瘮濡傦紝鎴戜滑瑕佹煡“瀹?#8221;瀛楋紝灝變細寰堣嚜鐒跺湴緲誨紑瀛楀吀鐨勫墠鍑犻〉錛屽洜涓?#8220;瀹?#8221;鐨勬嫾闊蟲槸“an”錛岃屾寜鐓ф嫾闊蟲帓搴忔眽瀛楃殑瀛楀吀鏄互鑻辨枃瀛楁瘝“a”寮澶村茍浠?#8220;z”緇撳熬鐨勶紝閭d箞“瀹?#8221;瀛楀氨鑷劧鍦版帓鍦ㄥ瓧鍏哥殑鍓嶉儴銆傚鏋滄偍緲誨畬浜嗘墍鏈変互“a”寮澶寸殑閮ㄥ垎浠嶇劧鎵句笉鍒拌繖涓瓧錛岄偅涔堝氨璇存槑鎮ㄧ殑瀛楀吀涓病鏈夎繖涓瓧錛涘悓鏍風殑錛屽鏋滄煡“寮?#8221;瀛楋紝閭f偍涔熶細灝嗘偍鐨勫瓧鍏哥炕鍒版渶鍚庨儴鍒嗭紝鍥犱負“寮?#8221;鐨勬嫾闊蟲槸“zhang”銆備篃灝辨槸璇達紝瀛楀吀鐨勬鏂囬儴鍒嗘湰韜氨鏄竴涓洰褰曪紝鎮ㄤ笉闇瑕佸啀鍘繪煡鍏朵粬鐩綍鏉ユ壘鍒版偍闇瑕佹壘鐨勫唴瀹廣?br>
鎴戜滑鎶婅繖縐嶆鏂囧唴瀹規湰韜氨鏄竴縐嶆寜鐓т竴瀹氳鍒欐帓鍒楃殑鐩綍縐頒負“鑱氶泦绱㈠紩”銆?br>
濡傛灉鎮ㄨ璇嗘煇涓瓧錛屾偍鍙互蹇熷湴浠庤嚜鍔ㄤ腑鏌ュ埌榪欎釜瀛椼備絾鎮ㄤ篃鍙兘浼氶亣鍒版偍涓嶈璇嗙殑瀛楋紝涓嶇煡閬撳畠鐨勫彂闊籌紝榪欐椂鍊欙紝鎮ㄥ氨涓嶈兘鎸夌収鍒氭墠鐨勬柟娉曟壘鍒版偍瑕佹煡鐨勫瓧錛岃岄渶瑕佸幓鏍規嵁“鍋忔梺閮ㄩ”鏌ュ埌鎮ㄨ鎵劇殑瀛楋紝鐒跺悗鏍規嵁榪欎釜瀛楀悗鐨勯〉鐮佺洿鎺ョ炕鍒版煇欏墊潵鎵懼埌鎮ㄨ鎵劇殑瀛椼備絾鎮ㄧ粨鍚?#8220;閮ㄩ鐩綍”鍜?#8220;媯瀛楄〃”鑰屾煡鍒扮殑瀛楃殑鎺掑簭騫朵笉鏄湡姝g殑姝f枃鐨勬帓搴忔柟娉曪紝姣斿鎮ㄦ煡“寮?#8221;瀛楋紝鎴戜滑鍙互鐪嬪埌鍦ㄦ煡閮ㄩ涔嬪悗鐨勬瀛楄〃涓?#8220;寮?#8221;鐨勯〉鐮佹槸672欏碉紝媯瀛楄〃涓?#8220;寮?#8221;鐨勪笂闈㈡槸“椹?#8221;瀛楋紝浣嗛〉鐮佸嵈鏄?3欏碉紝“寮?#8221;鐨勪笅闈㈡槸“寮?#8221;瀛楋紝欏甸潰鏄?90欏點傚緢鏄劇劧錛岃繖浜涘瓧騫朵笉鏄湡姝g殑鍒嗗埆浣嶄簬“寮?#8221;瀛楃殑涓婁笅鏂癸紝鐜板湪鎮ㄧ湅鍒扮殑榪炵畫鐨?#8220;椹般佸紶銆佸緝”涓夊瓧瀹為檯涓婂氨鏄粬浠湪闈炶仛闆嗙儲寮曚腑鐨勬帓搴忥紝鏄瓧鍏告鏂囦腑鐨勫瓧鍦ㄩ潪鑱氶泦绱㈠紩涓殑鏄犲皠銆傛垜浠彲浠ラ氳繃榪欑鏂瑰紡鏉ユ壘鍒版偍鎵闇瑕佺殑瀛楋紝浣嗗畠闇瑕佷袱涓繃紼嬶紝鍏堟壘鍒扮洰褰曚腑鐨勭粨鏋滐紝鐒跺悗鍐嶇炕鍒版偍鎵闇瑕佺殑欏電爜銆?br>
鎴戜滑鎶婅繖縐嶇洰褰曠函綺規槸鐩綍錛屾鏂囩函綺規槸姝f枃鐨勬帓搴忔柟寮忕О涓?#8220;闈炶仛闆嗙儲寮?#8221;銆?br>
閫氳繃浠ヤ笂渚嬪瓙錛屾垜浠彲浠ョ悊瑙e埌浠涔堟槸“鑱氶泦绱㈠紩”鍜?#8220;闈炶仛闆嗙儲寮?#8221;銆?br>
榪涗竴姝ュ紩鐢充竴涓嬶紝鎴戜滑鍙互寰堝鏄撶殑鐞嗚В錛氭瘡涓〃鍙兘鏈変竴涓仛闆嗙儲寮曪紝鍥犱負鐩綍鍙兘鎸夌収涓縐嶆柟娉曡繘琛屾帓搴忋?br>
錛堜簩錛変綍鏃朵嬌鐢ㄨ仛闆嗙儲寮曟垨闈炶仛闆嗙儲寮?br>
涓嬮潰鐨勮〃鎬葷粨浜嗕綍鏃朵嬌鐢ㄨ仛闆嗙儲寮曟垨闈炶仛闆嗙儲寮曪紙寰堥噸瑕侊級銆?br>
鍔ㄤ綔鎻忚堪
浣跨敤鑱氶泦绱㈠紩
浣跨敤闈炶仛闆嗙儲寮?br>
鍒楃粡甯歌鍒嗙粍鎺掑簭
搴?br>搴?br>
榪斿洖鏌愯寖鍥村唴鐨勬暟鎹?br>搴?br>涓嶅簲
涓涓垨鏋佸皯涓嶅悓鍊?br>涓嶅簲
涓嶅簲
灝忔暟鐩殑涓嶅悓鍊?br>搴?br>涓嶅簲
澶ф暟鐩殑涓嶅悓鍊?br>涓嶅簲
搴?br>
棰戠箒鏇存柊鐨勫垪
涓嶅簲
搴?br>
澶栭敭鍒?br>搴?br>搴?br>
涓婚敭鍒?br>搴?br>搴?br>
棰戠箒淇敼绱㈠紩鍒?br>涓嶅簲
搴?br>
浜嬪疄涓婏紝鎴戜滑鍙互閫氳繃鍓嶉潰鑱氶泦绱㈠紩鍜岄潪鑱氶泦绱㈠紩鐨勫畾涔夌殑渚嬪瓙鏉ョ悊瑙d笂琛ㄣ傚錛氳繑鍥炴煇鑼冨洿鍐呯殑鏁版嵁涓欏廣傛瘮濡傛偍鐨勬煇涓〃鏈変竴涓椂闂村垪錛屾伆濂芥偍鎶婅仛鍚堢儲寮曞緩绔嬪湪浜嗚鍒楋紝榪欐椂鎮ㄦ煡璇?004騫?鏈?鏃ヨ嚦2004騫?0鏈?鏃ヤ箣闂寸殑鍏ㄩ儴鏁版嵁鏃訛紝榪欎釜閫熷害灝卞皢鏄緢蹇殑錛屽洜涓烘偍鐨勮繖鏈瓧鍏告鏂囨槸鎸夋棩鏈熻繘琛屾帓搴忕殑錛岃仛綾葷儲寮曞彧闇瑕佹壘鍒拌媯绱㈢殑鎵鏈夋暟鎹腑鐨勫紑澶村拰緇撳熬鏁版嵁鍗沖彲錛涜屼笉鍍忛潪鑱氶泦绱㈠紩錛屽繀欏誨厛鏌ュ埌鐩綍涓煡鍒版瘡涓欏規暟鎹搴旂殑欏電爜錛岀劧鍚庡啀鏍規嵁欏電爜鏌ュ埌鍏蜂綋鍐呭銆?br>
錛堜笁錛夌粨鍚堝疄闄咃紝璋堢儲寮曚嬌鐢ㄧ殑璇尯
鐞嗚鐨勭洰鐨勬槸搴旂敤銆傝櫧鐒舵垜浠垰鎵嶅垪鍑轟簡浣曟椂搴斾嬌鐢ㄨ仛闆嗙儲寮曟垨闈炶仛闆嗙儲寮曪紝浣嗗湪瀹炶返涓互涓婅鍒欏嵈寰堝鏄撹蹇借鎴栦笉鑳芥牴鎹疄闄呮儏鍐佃繘琛岀患鍚堝垎鏋愩備笅闈㈡垜浠皢鏍規嵁鍦ㄥ疄璺典腑閬囧埌鐨勫疄闄呴棶棰樻潵璋堜竴涓嬬儲寮曚嬌鐢ㄧ殑璇尯錛屼互渚夸簬澶у鎺屾彙绱㈠紩寤虹珛鐨勬柟娉曘?br>
1銆佷富閿氨鏄仛闆嗙儲寮?br>
榪欑鎯蟲硶絎旇呰涓烘槸鏋佺閿欒鐨勶紝鏄鑱氶泦绱㈠紩鐨勪竴縐嶆氮璐廣傝櫧鐒禨QL SERVER榛樿鏄湪涓婚敭涓婂緩绔嬭仛闆嗙儲寮曠殑銆?br>
閫氬父錛屾垜浠細鍦ㄦ瘡涓〃涓兘寤虹珛涓涓狪D鍒楋紝浠ュ尯鍒嗘瘡鏉℃暟鎹紝騫朵笖榪欎釜ID鍒楁槸鑷姩澧炲ぇ鐨勶紝姝ラ暱涓鑸負1銆傛垜浠殑榪欎釜鍔炲叕鑷姩鍖栫殑瀹炰緥涓殑鍒桮id灝辨槸濡傛銆傛鏃訛紝濡傛灉鎴戜滑灝嗚繖涓垪璁句負涓婚敭錛孲QL SERVER浼氬皢姝ゅ垪榛樿涓鴻仛闆嗙儲寮曘傝繖鏍峰仛鏈夊ソ澶勶紝灝辨槸鍙互璁╂偍鐨勬暟鎹湪鏁版嵁搴撲腑鎸夌収ID榪涜鐗╃悊鎺掑簭錛屼絾絎旇呰涓鴻繖鏍峰仛鎰忎箟涓嶅ぇ銆?br>
鏄捐屾槗瑙侊紝鑱氶泦绱㈠紩鐨勪紭鍔挎槸寰堟槑鏄劇殑錛岃屾瘡涓〃涓彧鑳芥湁涓涓仛闆嗙儲寮曠殑瑙勫垯錛岃繖浣垮緱鑱氶泦绱㈠紩鍙樺緱鏇村姞鐝嶈吹銆?br>
浠庢垜浠墠闈㈣皥鍒扮殑鑱氶泦绱㈠紩鐨勫畾涔夋垜浠彲浠ョ湅鍑猴紝浣跨敤鑱氶泦绱㈠紩鐨勬渶澶уソ澶勫氨鏄兘澶熸牴鎹煡璇㈣姹傦紝榪呴熺緝灝忔煡璇㈣寖鍥達紝閬垮厤鍏ㄨ〃鎵弿銆傚湪瀹為檯搴旂敤涓紝鍥犱負ID鍙鋒槸鑷姩鐢熸垚鐨勶紝鎴戜滑騫朵笉鐭ラ亾姣忔潯璁板綍鐨処D鍙鳳紝鎵浠ユ垜浠緢闅懼湪瀹炶返涓敤ID鍙鋒潵榪涜鏌ヨ銆傝繖灝變嬌璁㊣D鍙瘋繖涓富閿綔涓鴻仛闆嗙儲寮曟垚涓轟竴縐嶈祫婧愭氮璐廣傚叾嬈★紝璁╂瘡涓狪D鍙烽兘涓嶅悓鐨勫瓧孌典綔涓鴻仛闆嗙儲寮曚篃涓嶇鍚?#8220;澶ф暟鐩殑涓嶅悓鍊兼儏鍐典笅涓嶅簲寤虹珛鑱氬悎绱㈠紩”瑙勫垯錛涘綋鐒訛紝榪欑鎯呭喌鍙槸閽堝鐢ㄦ埛緇忓父淇敼璁板綍鍐呭錛岀壒鍒槸绱㈠紩欏圭殑鏃跺欎細璐熶綔鐢紝浣嗗浜庢煡璇㈤熷害騫舵病鏈夊獎鍝嶃?br>
鍦ㄥ姙鍏嚜鍔ㄥ寲緋葷粺涓紝鏃犺鏄郴緇熼欏墊樉紺虹殑闇瑕佺敤鎴風鏀剁殑鏂囦歡銆佷細璁繕鏄敤鎴瘋繘琛屾枃浠舵煡璇㈢瓑浠諱綍鎯呭喌涓嬭繘琛屾暟鎹煡璇㈤兘紱諱笉寮瀛楁鐨勬槸“鏃ユ湡”榪樻湁鐢ㄦ埛鏈韓鐨?#8220;鐢ㄦ埛鍚?#8221;銆?br>
閫氬父錛屽姙鍏嚜鍔ㄥ寲鐨勯欏典細鏄劇ず姣忎釜鐢ㄦ埛灝氭湭絳炬敹鐨勬枃浠舵垨浼氳銆傝櫧鐒舵垜浠殑where璇彞鍙互浠呬粎闄愬埗褰撳墠鐢ㄦ埛灝氭湭絳炬敹鐨勬儏鍐碉紝浣嗗鏋滄偍鐨勭郴緇熷凡寤虹珛浜嗗緢闀挎椂闂達紝騫朵笖鏁版嵁閲忓緢澶э紝閭d箞錛屾瘡嬈℃瘡涓敤鎴鋒墦寮棣栭〉鐨勬椂鍊欓兘榪涜涓嬈″叏琛ㄦ壂鎻忥紝榪欐牱鍋氭剰涔夋槸涓嶅ぇ鐨勶紝緇濆ぇ澶氭暟鐨勭敤鎴?涓湀鍓嶇殑鏂囦歡閮藉凡緇忔祻瑙堣繃浜嗭紝榪欐牱鍋氬彧鑳藉緬澧炴暟鎹簱鐨勫紑閿鑰屽凡銆備簨瀹炰笂錛屾垜浠畬鍏ㄥ彲浠ヨ鐢ㄦ埛鎵撳紑緋葷粺棣栭〉鏃訛紝鏁版嵁搴撲粎浠呮煡璇㈣繖涓敤鎴瘋繎3涓湀鏉ユ湭闃呰鐨勬枃浠訛紝閫氳繃“鏃ユ湡”榪欎釜瀛楁鏉ラ檺鍒惰〃鎵弿錛屾彁楂樻煡璇㈤熷害銆傚鏋滄偍鐨勫姙鍏嚜鍔ㄥ寲緋葷粺宸茬粡寤虹珛鐨?騫達紝閭d箞鎮ㄧ殑棣栭〉鏄劇ず閫熷害鐞嗚涓婂皢鏄師鏉ラ熷害8鍊嶏紝鐢氳嚦鏇村揩銆?br>
鍦ㄨ繖閲屼箣鎵浠ユ彁鍒?#8220;鐞嗚涓?#8221;涓夊瓧錛屾槸鍥犱負濡傛灉鎮ㄧ殑鑱氶泦绱㈠紩榪樻槸鐩茬洰鍦板緩鍦↖D榪欎釜涓婚敭涓婃椂錛屾偍鐨勬煡璇㈤熷害鏄病鏈夎繖涔堥珮鐨勶紝鍗充嬌鎮ㄥ湪“鏃ユ湡”榪欎釜瀛楁涓婂緩绔嬬殑绱㈠紩錛堥潪鑱氬悎绱㈠紩錛夈備笅闈㈡垜浠氨鏉ョ湅涓涓嬪湪1000涓囨潯鏁版嵁閲忕殑鎯呭喌涓嬪悇縐嶆煡璇㈢殑閫熷害琛ㄧ幇錛?涓湀鍐呯殑鏁版嵁涓?5涓囨潯錛夛細
錛?錛変粎鍦ㄤ富閿笂寤虹珛鑱氶泦绱㈠紩錛屽茍涓斾笉鍒掑垎鏃墮棿孌碉細
Select gid,fariqi,neibuyonghu,title from tgongwen
鐢ㄦ椂錛?28470姣錛堝嵆錛?28縐掞級
錛?錛夊湪涓婚敭涓婂緩绔嬭仛闆嗙儲寮曪紝鍦╢ariq涓婂緩绔嬮潪鑱氶泦绱㈠紩錛?br>
select gid,fariqi,neibuyonghu,title from Tgongwen
where fariqi> dateadd(day,-90,getdate())
鐢ㄦ椂錛?3763姣錛?4縐掞級
錛?錛夊皢鑱氬悎绱㈠紩寤虹珛鍦ㄦ棩鏈熷垪錛坒ariqi錛変笂錛?br>
select gid,fariqi,neibuyonghu,title from Tgongwen
where fariqi> dateadd(day,-90,getdate())
鐢ㄦ椂錛?423姣錛?縐掞級
铏界劧姣忔潯璇彞鎻愬彇鍑烘潵鐨勯兘鏄?5涓囨潯鏁版嵁錛屽悇縐嶆儏鍐電殑宸紓鍗存槸宸ㄥぇ鐨勶紝鐗瑰埆鏄皢鑱氶泦绱㈠紩寤虹珛鍦ㄦ棩鏈熷垪鏃剁殑宸紓銆備簨瀹炰笂錛屽鏋滄偍鐨勬暟鎹簱鐪熺殑鏈?000涓囧閲忕殑璇濓紝鎶婁富閿緩绔嬪湪ID鍒椾笂錛屽氨鍍忎互涓婄殑絎?銆?縐嶆儏鍐碉紝鍦ㄧ綉欏典笂鐨勮〃鐜板氨鏄秴鏃訛紝鏍規湰灝辨棤娉曟樉紺恒傝繖涔熸槸鎴戞憭寮僆D鍒椾綔涓鴻仛闆嗙儲寮曠殑涓涓渶閲嶈鐨勫洜绱犮?br>
寰楀嚭浠ヤ笂閫熷害鐨勬柟娉曟槸錛氬湪鍚勪釜select璇彞鍓嶅姞錛歞eclare @d datetime
set @d=getdate()
騫跺湪select璇彞鍚庡姞錛?br>
select [璇彞鎵ц鑺辮垂鏃墮棿(姣)]=datediff(ms,@d,getdate())
2銆佸彧瑕佸緩绔嬬儲寮曞氨鑳芥樉钁楁彁楂樻煡璇㈤熷害
浜嬪疄涓婏紝鎴戜滑鍙互鍙戠幇涓婇潰鐨勪緥瀛愪腑錛岀2銆?鏉¤鍙ュ畬鍏ㄧ浉鍚岋紝涓斿緩绔嬬儲寮曠殑瀛楁涔熺浉鍚岋紱涓嶅悓鐨勪粎鏄墠鑰呭湪fariqi瀛楁涓婂緩绔嬬殑鏄潪鑱氬悎绱㈠紩錛屽悗鑰呭湪姝ゅ瓧孌典笂寤虹珛鐨勬槸鑱氬悎绱㈠紩錛屼絾鏌ヨ閫熷害鍗存湁鐫澶╁¥涔嬪埆銆傛墍浠ワ紝騫墮潪鏄湪浠諱綍瀛楁涓婄畝鍗曞湴寤虹珛绱㈠紩灝辮兘鎻愰珮鏌ヨ閫熷害銆?br>
浠庡緩琛ㄧ殑璇彞涓紝鎴戜滑鍙互鐪嬪埌榪欎釜鏈夌潃1000涓囨暟鎹殑琛ㄤ腑fariqi瀛楁鏈?003涓笉鍚岃褰曘傚湪姝ゅ瓧孌典笂寤虹珛鑱氬悎绱㈠紩鏄啀鍚堥備笉榪囦簡銆傚湪鐜板疄涓紝鎴戜滑姣忓ぉ閮戒細鍙戝嚑涓枃浠訛紝榪欏嚑涓枃浠剁殑鍙戞枃鏃ユ湡灝辯浉鍚岋紝榪欏畬鍏ㄧ鍚堝緩绔嬭仛闆嗙儲寮曡姹傜殑錛?#8220;鏃笉鑳界粷澶у鏁伴兘鐩稿悓錛屽張涓嶈兘鍙湁鏋佸皯鏁扮浉鍚?#8221;鐨勮鍒欍傜敱姝ょ湅鏉ワ紝鎴戜滑寤虹珛“閫傚綋”鐨勮仛鍚堢儲寮曞浜庢垜浠彁楂樻煡璇㈤熷害鏄潪甯擱噸瑕佺殑銆?br>
3銆佹妸鎵鏈夐渶瑕佹彁楂樻煡璇㈤熷害鐨勫瓧孌甸兘鍔犺繘鑱氶泦绱㈠紩錛屼互鎻愰珮鏌ヨ閫熷害
涓婇潰宸茬粡璋堝埌錛氬湪榪涜鏁版嵁鏌ヨ鏃墮兘紱諱笉寮瀛楁鐨勬槸“鏃ユ湡”榪樻湁鐢ㄦ埛鏈韓鐨?#8220;鐢ㄦ埛鍚?#8221;銆傛棦鐒惰繖涓や釜瀛楁閮芥槸濡傛鐨勯噸瑕侊紝鎴戜滑鍙互鎶婁粬浠悎騫惰搗鏉ワ紝寤虹珛涓涓鍚堢儲寮曪紙compound index錛夈?br>
寰堝浜鴻涓哄彧瑕佹妸浠諱綍瀛楁鍔犺繘鑱氶泦绱㈠紩錛屽氨鑳芥彁楂樻煡璇㈤熷害錛屼篃鏈変漢鎰熷埌榪鋒儜錛氬鏋滄妸澶嶅悎鐨勮仛闆嗙儲寮曞瓧孌靛垎寮鏌ヨ錛岄偅涔堟煡璇㈤熷害浼氬噺鎱㈠悧錛熷甫鐫榪欎釜闂錛屾垜浠潵鐪嬩竴涓嬩互涓嬬殑鏌ヨ閫熷害錛堢粨鏋滈泦閮芥槸25涓囨潯鏁版嵁錛夛細錛堟棩鏈熷垪fariqi棣栧厛鎺掑湪澶嶅悎鑱氶泦绱㈠紩鐨勮搗濮嬪垪錛岀敤鎴峰悕neibuyonghu鎺掑湪鍚庡垪錛?br>
錛?錛塻elect gid,fariqi,neibuyonghu,title from Tgongwen where fariqi>'2004-5-5'
鏌ヨ閫熷害錛?513姣
錛?錛塻elect gid,fariqi,neibuyonghu,title from Tgongwen where fariqi>'2004-5-5' and neibuyonghu='鍔炲叕瀹?
鏌ヨ閫熷害錛?516姣
錛?錛塻elect gid,fariqi,neibuyonghu,title from Tgongwen where neibuyonghu='鍔炲叕瀹?
鏌ヨ閫熷害錛?0280姣
浠庝互涓婅瘯楠屼腑錛屾垜浠彲浠ョ湅鍒板鏋滀粎鐢ㄨ仛闆嗙儲寮曠殑璧峰鍒椾綔涓烘煡璇㈡潯浠跺拰鍚屾椂鐢ㄥ埌澶嶅悎鑱氶泦绱㈠紩鐨勫叏閮ㄥ垪鐨勬煡璇㈤熷害鏄嚑涔庝竴鏍風殑錛岀敋鑷蟲瘮鐢?/span>
]]>
int WINAPI MessageBoxA(HWND,LPCSTR,LPSTR,UINT);
鑰學INAPI瀹為檯涓婂氨鏄痏_stdcall.
澶у鏁癆PI閮介噰鐢╛_stdcall璋冪敤瑙勮寖,榪欐槸鍥犱負鍑犱箮鎵鏈夌殑璇█閮芥敮鎸乢_stdcall璋冪敤.鐩告瘮涔嬩笅,__cdecl鍙湁鍦–璇█涓墠鑳界敤.浣嗘槸__cdecl璋冪敤鏈変竴涓壒鐐?灝辨槸鑳藉瀹炵幇鍙彉鍙傛暟鐨勫嚱鏁拌皟鐢?姣斿printf,榪欑敤__stdcall璋冪敤鏄笉鍙兘鐨?
__fastcall榪欑璋冪敤瑙勮寖姣旇緝灝戣,浣嗘槸鍦˙orland C++ Builder涓瘮杈冨鐨勯噰鐢ㄤ簡榪欑璋冪敤鏂瑰紡.
濡傛灉鏈夊叡浜唬鐮佺殑闇瑕?姣斿鍐橠LL,鎺ㄨ崘鐨勬柟娉曟槸鐢╛_stdcall璋冪敤,鍥犱負榪欐牱閫傜敤鑼冨洿鏈騫?濡傛灉鏄疌++璇█鍐欑殑浠g爜渚汥elphi榪欐牱鐨勮璦璋冪敤灝卞繀欏誨0鏄庝負__stdcall,鍥犱負Pascal涓嶆敮鎸乧decl璋冪敤(鎴栬Delphi鐨勬渶鏂扮増鏈兘澶熸敮鎸佷篃璇翠笉瀹?榪欎釜鎴戜笉澶竻妤?.鍦ㄥ叾浠栦竴浜涘湴鏂?姣斿鍐機OM緇勪歡,鍑犱箮閮界敤鐨勬槸stdcall璋冪敤.鍦╒C鎴朌elphi鎴朇++Builder閲岄潰閮藉彲浠ヤ粠欏圭洰璁劇疆涓洿鏀歸粯璁ょ殑鍑芥暟璋冪敤瑙勮寖,褰撶劧浣犱篃鍙互鍦ㄥ嚱鏁板0鏄庣殑鏃跺欏姞鍏_stdcall,__cdecl,__fastcall鍏抽敭瀛楁潵鏄庣‘鐨勬寚紺烘湰鍑芥暟鐢ㄥ摢縐嶈皟鐢ㄨ鑼?
__declspec涓鑸兘鏄敤鏉ュ0鏄嶥LL涓殑瀵煎嚭鍑芥暟.榪欎釜鍏抽敭瀛椾篃鏈変竴浜涘叾浠栫殑鐢ㄦ硶,涓嶈繃闈炲父緗曡.
]]>
#define _ALV_TREE_H
#define Max(a,b) (((a)>(b))?(a):(b))
#include <iostream>
template<class T>
class AVLTree
{
struct _TreeNode;
typedef struct _TreeNode TreeNode;
struct _TreeNode
{
T data;
int height;
TreeNode* left;
TreeNode* right;
};
private:
TreeNode *root;
public:
AVLTree()
{
this->root=NULL;
}
~AVLTree()
{
this->MakeEmpty(this->root);
}
int GeiHeight()
{
return this->GetHeightUtil(this->root);
}
void Insert(T data)
{
this->root=this->InsertUtil(this->root,data);
}
void Delete(T data)
{
this->root=this->DeleteUtil(this->root,data);
}
void Print()
{
/*if(root!=NULL)
{
std::cout<<"The root node is: "<<root->data<<std::endl;
}*/
for(int level=0;;level++)
{
if(this->PrintUtil(this->root,level)==0)
{
break;
}
std::cout<<std::endl;
}
}
private:
TreeNode *InsertUtil(TreeNode *_root,T data)
{
if(_root==NULL)
{
_root=new TreeNode();
_root->data=data;
_root->left=0;
_root->right=0;
_root->height=0;
}
if(data>_root->data)
{
_root->right=this->InsertUtil(_root->right,data);
if(GetHeightUtil(_root->right)-GetHeightUtil(_root->left)==2)
{
if(data>_root->right->data)
{
_root=this->SingleRotateWithRight(_root);
}
else
{
_root=this->DoubleRotateWithRight(_root);
}
}
}
else if(data<_root->data)
{
_root->left=this->InsertUtil(_root->left,data);
if(GetHeightUtil(_root->left)-GetHeightUtil(_root->right)==2)
{
if(data<_root->left->data)
{
_root=this->SingleRotateWithLeft(_root);
}
else
{
_root=this->DoubleRotateWithLeft(_root);
}
}
}
_root->height=Max(GetHeightUtil(_root->left),GetHeightUtil(_root->right))+1;
return _root;
}
TreeNode *DeleteUtil(TreeNode *_root,T data)
{
if(_root==NULL)
{
return _root;
}
else if(_root->data==data
&&_root->left==NULL
&&_root->right==NULL)
{
delete _root;
return NULL;
}
else if(_root->data==data
&&_root->left!=NULL
&&_root->right==NULL)
{
TreeNode* tmpNode=_root->left;
delete _root;
tmpNode->height=this->RecalculateHeight(tmpNode);
return tmpNode;
}
else if(_root->data==data
&&_root->left==NULL
&&_root->right!=NULL)
{
TreeNode *tmpNode=_root->right;
delete _root;
tmpNode->height=this->RecalculateHeight(tmpNode);
return tmpNode;
}
else
{
if(data==_root->data)
{
TreeNode *tmpNode,*parentNode;
tmpNode=_root->right->right;
parentNode=_root->right;
if(tmpNode!=NULL)
{
while(tmpNode->right!=NULL)
{
parentNode->height-=1;
parentNode=tmpNode;
tmpNode=tmpNode->right;
}
parentNode->right=NULL;
_root->data=tmpNode->data;
delete tmpNode;
}
else
{
_root=parentNode;
}
_root->height=this->RecalculateHeight(_root);
//TreeNode *tmpNode=this->FindMax(_root->right);
//_root->data=tmpNode->data;
if(GetHeightUtil(_root->left)-GetHeightUtil(_root->right)==2)
{
if(_root->left->left!=NULL)
{
_root=this->SingleRotateWithLeft(_root);
}
else if(_root->left->right!=NULL)
{
_root=this->DoubleRotateWithLeft(_root);
}
}
}
else
if(data>_root->data)
{
_root->right=this->DeleteUtil(_root->right,data);
_root->height=this->RecalculateHeight(_root);
if(GetHeightUtil(_root->left)-GetHeightUtil(_root->right)==2)
{
if(_root->left->left!=NULL)
{
_root=this->SingleRotateWithLeft(_root);
}
else if(_root->left->right!=NULL)
{
_root=this->DoubleRotateWithLeft(_root);
}
}
}
else
{
_root->left=this->DeleteUtil(_root->left,data);
_root->height=this->RecalculateHeight(_root);
if(GetHeightUtil(_root->right)-GetHeightUtil(_root->left)==2)
{
if(_root->right->right!=NULL)
{
_root=this->SingleRotateWithRight(_root);
}
else if(_root->right->left!=NULL)
{
_root=this->DoubleRotateWithRight(_root);
}
}
}
}
//_root->height=this->RecalculateHeight(_root);
return _root;
}
void MakeEmpty(TreeNode *_root)
{
if(_root==NULL)
{
return;
}
else
{
MakeEmpty(_root->left);
MakeEmpty(_root->right);
delete _root;
}
}
int GetHeightUtil(TreeNode *_root)
{
/*if(_root==NULL|| (_root->left==NULL && _root->right==NULL))
{
return 0;
}
else
{
return 1+GetHeightUtil(_root->left)+GetHeightUtil(_root->right);
}*/
if(_root==NULL)
{
return -1;
}
else
{
return _root->height;
}
}
int PrintUtil(TreeNode *node, int level)
{
if(node==NULL||level<0)
{
return 0;
}
else
{
if(level==0)
{
std::cout<<node->data<<" ";
return 1;
}
return PrintUtil(node->left,level-1)+PrintUtil(node->right,level-1);
}
}
TreeNode *SingleRotateWithLeft(TreeNode *node)
{
TreeNode *tmpNode=node->left;
node->left=tmpNode->right;
tmpNode->right=node;
node->height=Max(GetHeightUtil(node->left),GetHeightUtil(node->right))+1;
tmpNode->height=Max(GetHeightUtil(tmpNode->left),GetHeightUtil(tmpNode->right))+1;
return tmpNode;
}
TreeNode*SingleRotateWithRight(TreeNode *node)
{
TreeNode *tmpNode=node->right;
node->right=tmpNode->left;
tmpNode->left=node;
node->height=Max(GetHeightUtil(node->left),GetHeightUtil(node->right))+1;
tmpNode->height=Max(GetHeightUtil(tmpNode->left),GetHeightUtil(tmpNode->right))+1;
return tmpNode;
}
TreeNode* DoubleRotateWithLeft(TreeNode *node)
{
node->left=this->SingleRotateWithRight(node->left);
return this->SingleRotateWithLeft(node);
}
TreeNode* DoubleRotateWithRight(TreeNode *node)
{
node->right=this->SingleRotateWithLeft(node->right);
return this->SingleRotateWithRight(node);
}
TreeNode* FindMax(TreeNode *node)
{
//T maxData;
while(node!=NULL&&node->right!=NULL)
{
node=node->right;
}
//maxData=node->data;
return node;
}
int RecalculateHeight(TreeNode *node)
{
if(node==NULL)
{
return -1;
}
else
{
node->height=Max(RecalculateHeight(node->left),RecalculateHeight(node->right))+1;
return node->height;
}
}
};
#endif
1銆傞夋嫨閰嶇疆灞炴?>閾炬帴鍣?>璋冭瘯->鐢熸垚璋冭瘯淇℃伅 鏀逛負 鏄?
2銆傞夋嫨 閰嶇疆灞炴?>C/C++ ->甯歌->璋冭瘯淇℃伅鏍煎紡 鏀逛負 鐢ㄤ簬“緙栬緫騫剁戶緇?#8221;鐨勭▼搴忔暟鎹簱(/ZI)
3銆傞夋嫨 閰嶇疆灞炴?>C/C++ ->浼樺寲->浼樺寲 鏀逛負 鑷畾涔?/strong>
閲嶆柊緙栬瘧錛岃繍琛?/strong>
int main()
{
SECURITY_ATTRIBUTES secStru;
secStru.bInheritHandle=0;
secStru.lpSecurityDescriptor=0;
secStru.nLength=0;
HANDLE hDevice=CreateFile("\\\\.\\PhysicalDrive0",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);
if(hDevice==INVALID_HANDLE_VALUE)
{
return -1;
}
//DWORD outBuff[1000];
GET_LENGTH_INFORMATION infoStruct;
memset(&infoStruct,0,sizeof(infoStruct));
DWORD bytesReturned;
if(DeviceIoControl(hDevice,IOCTL_DISK_GET_LENGTH_INFO,NULL,0,&infoStruct,sizeof(infoStruct),&bytesReturned,NULL)==0)
{
cout<<"Failed to get disk information."<<endl;
DWORD error;
error=GetLastError();
HRESULT hRe=HRESULT_FROM_WIN32(error);
char errorData[10];
sprintf(errorData,"%x",hRe);
cout<<"Error code:"<</*hRe*/errorData<<endl;
CloseHandle(hDevice);
return -1;
}
DISK_GEOMETRY_EX geoStruct;
memset(&geoStruct,0,sizeof(geoStruct));
if(DeviceIoControl(hDevice,IOCTL_DISK_GET_DRIVE_GEOMETRY_EX ,NULL,0,&geoStruct,sizeof(geoStruct),&bytesReturned,NULL)==0)
{
cout<<"Failed to get disk information."<<endl;
DWORD error;
error=GetLastError();
HRESULT hRe=HRESULT_FROM_WIN32(error);
char errorData[10];
sprintf(errorData,"%x",hRe);
cout<<"Error code:"<</*hRe*/errorData<<endl;
CloseHandle(hDevice);
return -1;
}
cout<<"The disk's size is:"<<infoStruct.Length.QuadPart/1024/1024/1024<<" G Bytes."<<endl;
cout<<"The disk's cylinder number:"<<geoStruct.Geometry.Cylinders.QuadPart<<endl;
cout<<"The disk's media type:"<<geoStruct.Geometry.MediaType<<endl;
cout<<"Number of tracks per cylinder:"<<geoStruct.Geometry.TracksPerCylinder<<endl;
cout<<"Number of sectors per track:"<<geoStruct.Geometry.SectorsPerTrack<<endl;
cout<<"Number of bytes per sector:"<<geoStruct.Geometry.BytesPerSector<<endl;
PDISK_PARTITION_INFO partitionInfo=DiskGeometryGetPartition(&geoStruct);
DRIVE_LAYOUT_INFORMATION_EX layOutInfo[20];
memset(&layOutInfo,0,sizeof(DRIVE_LAYOUT_INFORMATION_EX)*20);
//layOutInfo.PartitionEntry=*(new PARTITION_INFORMATION_EX[10]);
if(DeviceIoControl(hDevice,IOCTL_DISK_GET_DRIVE_LAYOUT_EX,NULL,0,&layOutInfo,sizeof(DRIVE_LAYOUT_INFORMATION_EX)*20,&bytesReturned,NULL)==0)
{
cout<<"Failed to get disk information."<<endl;
DWORD error;
error=GetLastError();
HRESULT hRe=HRESULT_FROM_WIN32(error);
char errorData[10];
sprintf(errorData,"%x",hRe);
cout<<"Error code:"<</*hRe*/errorData<<endl;
CloseHandle(hDevice);
return -1;
}
int partitionCount=layOutInfo[0].PartitionCount;
cout<<"Number of partitions:"<<layOutInfo[0].PartitionCount<<endl;
cout<<"Partitions' information:"<<endl;
for(int i=0;i<partitionCount;i++)
{
//PDISK_PARTITION_INFO pParInfo=partitionInfo+i*sizeof(DISK_PARTITION_INFO);
if(layOutInfo[i].PartitionEntry[0].PartitionNumber!=0)
{
cout<<"Partition "<<layOutInfo[i].PartitionEntry[0].PartitionNumber<<", partition size is "<<layOutInfo[i].PartitionEntry[0].PartitionLength.QuadPart/1024/1024/1024<<" G Bytes, partition style is "<<layOutInfo[i].PartitionEntry[0].PartitionStyle<<endl;
}
}
//cout<<"The type of partition:"<<((partitionInfo.PartitionStyle==PARTITION_STYLE_MBR) ?"MBR":((partitionInfo.PartitionStyle==PARTITION_STYLE_GPT )?"GPT":((partitionInfo.PartitionStyle==PARTITION_STYLE_RAW)?"RAW":"")))<<endl;
CloseHandle(hDevice);
return 0;
}