锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓. message 鍙傛暟銆?br> message 鍏朵嬌鐢ㄦ柟娉曚負錛?nbsp; #pragma message("娑堟伅鏂囨湰") 褰撶紪璇戝櫒閬囧埌榪欐潯鎸囦護鏃跺氨鍦ㄧ紪璇戣緭鍑虹獥鍙d腑灝嗘秷鎭枃鏈墦鍗板嚭鏉ャ?br> 褰撴垜浠湪紼嬪簭涓畾涔変簡璁稿瀹忔潵鎺у埗婧愪唬鐮佺増鏈殑鏃跺欙紝鎴戜滑鑷繁鏈夊彲鑳介兘浼氬繕璁版湁娌℃湁姝g‘鐨勮緗繖浜涘畯錛屾鏃舵垜浠彲浠ョ敤榪欐潯鎸囦護鍦ㄧ紪璇戠殑鏃跺欏氨榪涜媯鏌ャ傚亣璁炬垜浠笇鏈涘垽鏂嚜宸辨湁娌℃湁鍦ㄦ簮浠g爜鐨勪粈涔堝湴鏂瑰畾涔変簡_X86榪欎釜瀹忓彲浠ョ敤涓嬮潰鐨勬柟娉曪細 浜? 鍙︿竴涓嬌鐢ㄥ緱姣旇緝澶氱殑#pragma鍙傛暟鏄痗ode_seg銆?br> 鏍煎紡濡傦細 push (鍙夊弬鏁? 灝嗕竴涓褰曟斁鍒板唴閮ㄧ紪璇戝櫒鐨勫爢鏍堜腑,鍙夊弬鏁板彲浠ヤ負涓涓爣璇嗙鎴栬呰妭鍚?br> pop(鍙夊弬鏁? 灝嗕竴涓褰曚粠鍫嗘爤欏剁寮瑰嚭,璇ヨ褰曞彲浠ヤ負涓涓爣璇嗙鎴栬呰妭鍚?br> identifier (鍙夊弬鏁? 褰撲嬌鐢╬ush鎸囦護鏃?涓哄帇鍏ュ爢鏍堢殑璁板綍鎸囨淳鐨勪竴涓爣璇嗙,褰撹鏍囪瘑絎﹁鍒犻櫎鐨勬椂鍊欏拰鍏剁浉鍏崇殑鍫嗘爤涓殑璁板綍灝嗚寮瑰嚭鍫嗘爤 //灝嗗嚱鏁板瓨鏀懼湪.my_data1鑺備腑 //r1涓烘爣璇嗙,灝嗗嚱鏁版斁鍏?my_data2鑺備腑 int main() { 涓? #pragma once (姣旇緝甯哥敤錛?br> 榪欐槸涓涓瘮杈冨父鐢ㄧ殑鎸囦護,鍙鍦ㄥご鏂囦歡鐨勬渶寮濮嬪姞鍏ヨ繖鏉℃寚浠ゅ氨鑳藉淇濊瘉澶存枃浠惰緙栬瘧涓嬈?/p>
鍥? #pragma hdrstop琛ㄧず棰勭紪璇戝ご鏂囦歡鍒版涓烘錛屽悗闈㈢殑澶存枃浠朵笉榪涜棰勭紪璇戙?br> BCB鍙互棰勭紪璇戝ご鏂囦歡浠ュ姞蹇摼鎺ョ殑閫熷害錛屼絾濡傛灉鎵鏈夊ご鏂囦歡閮借繘琛岄緙栬瘧鍙堝彲鑳藉崰澶紓佺洏絀洪棿錛屾墍浠ヤ嬌鐢ㄨ繖涓夐」鎺掗櫎涓浜涘ご鏂囦歡銆?br> 鏈夋椂鍗曞厓涔嬮棿鏈変緷璧栧叧緋伙紝姣斿鍗曞厓A渚濊禆鍗曞厓B錛屾墍浠ュ崟鍏傿瑕佸厛浜庡崟鍏傾緙栬瘧銆備綘鍙互鐢?pragma startup鎸囧畾緙栬瘧浼樺厛綰э紝濡傛灉浣跨敤浜?pragma package(smart_init) 錛孊CB灝變細鏍規嵁浼樺厛綰х殑澶у皬鍏堝悗緙栬瘧銆?/p>
浜? #pragma warning鎸囦護 涓昏鐢ㄥ埌鐨勮鍛婅〃紺烘湁濡備笅鍑犱釜: once:鍙樉紺轟竴嬈?璀﹀憡/閿欒絳?娑堟伅 濡傛灉澶у瀵逛笂闈㈢殑瑙i噴涓嶆槸寰堢悊瑙?鍙互鍙傝冧竴涓嬩笅闈㈢殑渚嬪瓙鍙婅鏄?/p>
#pragma warning( disable : 4507 34; once : 4385; error : 164 ) 鍦ㄨ繖孌典唬鐮佺殑鏈鍚庯紝閲嶆柊淇濆瓨鎵鏈夌殑璀﹀憡淇℃伅(鍖呮嫭4705錛?706鍜?707) 鍦ㄤ嬌鐢ㄦ爣鍑咰++榪涜緙栫▼鐨勬椂鍊欑粡甯鎬細寰楀埌寰堝鐨勮鍛婁俊鎭?鑰岃繖浜涜鍛婁俊鎭兘鏄笉蹇呰鐨勬彁紺?鎵浠ユ垜浠彲浠ヤ嬌鐢?pragma warning(disable:4786)鏉ョ姝㈣綾誨瀷鐨勮鍛婂湪vc涓嬌鐢ˋDO鐨勬椂鍊欎篃浼氬緱鍒頒笉蹇呰鐨勮鍛婁俊鎭?榪欎釜鏃跺欐垜浠彲浠ラ氳繃#pragma warning(disable:4146)鏉ユ秷闄よ綾誨瀷鐨勮鍛婁俊鎭?/p>
鍏? pragma comment(...) 1銆乧ompiler:灝嗙紪璇戝櫒鐨勭増鏈彿鍜屽悕縐版斁鍏ョ洰鏍囨枃浠朵腑,鏈潯娉ㄩ噴璁板綍灝嗚緙栬瘧鍣ㄥ拷鐣?br>濡傛灉浣犱負璇ヨ褰曠被鍨嬫彁渚涗簡commentstring鍙傛暟,緙栬瘧鍣ㄥ皢浼氫駭鐢熶竴涓鍛?br>渚嬪:#pragma comment( compiler ) 2銆乪xestr:灝哻ommentstring鍙傛暟鏀懼叆鐩爣鏂囦歡涓?鍦ㄩ摼鎺ョ殑鏃跺欒繖涓瓧絎︿覆灝嗚鏀懼叆鍒板彲鎵ц鏂囦歡涓?褰撴搷浣滅郴緇熷姞杞藉彲鎵ц鏂囦歡鐨勬椂鍊?璇ュ弬鏁板瓧絎︿覆涓嶄細琚姞杞藉埌鍐呭瓨涓?浣嗘槸,璇ュ瓧絎︿覆鍙互琚玠umpbin涔嬬被鐨勭▼搴忔煡鎵懼嚭騫舵墦鍗板嚭鏉?浣犲彲浠ョ敤榪欎釜鏍囪瘑絎﹀皢鐗堟湰鍙風爜涔嬬被鐨勪俊鎭祵鍏ュ埌鍙墽琛屾枃浠朵腑! 3銆乴ib:榪欐槸涓涓潪甯稿父鐢ㄧ殑鍏抽敭瀛?鐢ㄦ潵灝嗕竴涓簱鏂囦歡閾炬帴鍒扮洰鏍囨枃浠朵腑甯哥敤鐨刲ib鍏抽敭瀛楋紝鍙互甯垜浠繛鍏ヤ竴涓簱鏂囦歡銆?br> 渚嬪: 4銆乴inker:灝嗕竴涓摼鎺ラ夐」鏀懼叆鐩爣鏂囦歡涓?浣犲彲浠ヤ嬌鐢ㄨ繖涓寚浠ゆ潵浠f浛鐢卞懡浠よ浼犲叆鐨勬垨鑰呭湪寮鍙戠幆澧冧腑璁劇疆鐨勯摼鎺ラ夐」,浣犲彲浠ユ寚瀹?include閫夐」鏉ュ己鍒跺寘鍚煇涓璞?渚嬪: 榪欎簺閫夐」鍦ㄨ繖閲屽氨涓嶄竴涓璇存槑浜?璇︾粏淇℃伅璇風湅msdn! 5銆乽ser:灝嗕竴鑸殑娉ㄩ噴淇℃伅鏀懼叆鐩爣鏂囦歡涓璫ommentstring鍙傛暟鍖呭惈娉ㄩ噴鐨勬枃鏈俊鎭?榪欎釜娉ㄩ噴璁板綍灝嗚閾炬帴鍣ㄥ拷鐣?br> 渚嬪: 鍦ㄦ Symbol 涓嬭級灝佽鏄緷铏曠悊鍣ㄥ瀷鎱?(x86銆両tanium 鍜?x64) 浠ュ強 Build 欏炲垾 (retail 浠ュ強 checked) 渚嗗垪紺恒傚咕涔庢墍鏈夌殑瀹㈡埗閮介渶瑕佺敤鏂?Retail 鐗堟湰鐨?Symbol銆傚鏋滄偍姝e湪 Debugging 涓鍊嬬壒孌婄増鏈殑 Windows 闇瑕侀澶栫殑 Debugging 璩囪▕錛岄偅鎮ㄥ氨鎳夎┎涓嬭級鐢ㄦ柤 Checked 鐗堟湰鐨?Symbol銆?/p>
Windows XP 鑸?Windows Server 2003 涓嶉渶瑕佺暥鍦拌獮緋誨寲鐗堟湰鐨?Symbol 渚?Debug 鐣跺湴瑾炵郴鍖栫増鏈殑鐢㈠搧銆傛瘡涓鍊?Windows XP 鑸?Windows Server™ 2003 Symbol 涓嬭級灝佽鐨嗗彲鐢ㄦ柤 Debugging 鎵鏈夊凡鐣跺湴瑾炵郴鍖栫殑鐗堟湰銆?/p>
姣忎竴鍊?x86 Symbol 鍙兘闇瑕?750 MB 鎴栨洿澶х殑紜絀洪枔錛屾瘡鍊?Itanium Symbol 鍙兘闇瑕?560 MB 鎴栨洿澶х殑紜絀洪枔錛岃屾瘡鍊?x64 Symbol 濂椾歡鍙兘闇瑕?640 MB 鎴栨洿澶х┖闁撱傛絀洪枔闇姹傞噺鍖呭惈涓嬭級鐨勫皝瑁濊垏鍏舵墍闇鐨勬毇瀛樻獢妗堟墍瑕佹眰鐨勭┖闁撳ぇ灝忥紝寤鴻鎮ㄥ湪涓嬭級鑸囧畨瑁濅換鍙?Symbol 濂椾歡涔嬪墠鑷沖皯闋愮暀 1 GB 鐨勫彲鐢ㄧ‖紕熺┖闁撱?/p>
娉ㄦ剰錛氳嫢鎮ㄧ偤 MSDN Subscriber 涓斾嬌鐢ㄧ殑鏄?Windows Vista CTP 鐗堟湰錛屾偍鍙敱 Microsoft Connect 浼烘湇鍣ㄥ彇寰?CTP 鐗堟湰浣跨敤涔?Symbols 灝佽濂椾歡銆傝嫢鎮ㄧ洰鍓嶄甫闈?MSDN Subscriber 浣嗘兂鎴愮偤 MSDN Subscriber錛屾偍鍙互鐢辨铏曞姞鍏ャ?/p>
妾㈣鐢ㄦ柤 Symbol 灝佽鐨勪笅杓夐g祼 Windows Vista Release Candidate 1 (RC1) Windows Vista RC1 x86 retail symbols, all languages (妾旀澶у皬錛?70 MB - 澶ч儴浠界殑瀹㈡埗闇瑕侀欏嬪皝瑁濆浠躲? 姝ゅ皝瑁濆寘鍚湪 Debug 宸卞畨瑁?Service Pack 1 涔?Windows Server 2003 鐨勫畬鏁?Symbol 濂椾歡銆傚叾涓?Windows Server 2003 鐨?Symbol 宸辮鏇存柊鐐虹鍚?Windows Server 2003 Service Pack 1 鏇存柊妾旀鐨?Symbol銆?/p>
闄勮ɑ錛歐indows Server 2003 SP1 x64-based Symbol 濂椾歡浜﹀彲鐢ㄦ柤 Windows XP x64 Edition銆?/p>
Windows Server 2003 with Service Pack 1 x86 retail symbols, all languages (妾旀澶у皬錛?53 MB - 澶ч儴浠界殑瀹㈡埗闇瑕侀欏嬪皝瑁濆浠躲? 姝ゅ皝瑁濇瘮鍚湁 Service Pack 1 鐨?Windows Server 2003 瀹屾暣濂椾歡鐨勪笅杓夐噺渚嗙殑灝忋傚畠鍍呭寘鍚毃闄勬柤 Windows Server 2003 Service Pack 1 涔嬫獢妗堢殑 Symbol銆傝嫢鎮ㄥ繁綞撳畨瑁濅簡 Windows Server 2003 鐨?Symbol錛屾偍鍙互灝囧畠瀹夎鍦ㄧ浉鍚岀殑璺緫錛岄欐ǎ鎮ㄥ氨鎿佹湁浜嗗惈鏈?Service Pack 1 鐨?Windows Server 2003 瀹屾暣 Symbol 濂椾歡銆?/p>
Windows Server 2003 Service Pack 1 x86 retail symbols, all languages (妾旀澶у皬錛?30 MB - 姝ょ偤澶у鏁稿鎴舵墍闇瑕佺殑灝佽銆? Windows Server 2003 x86 retail symbols, all languages (妾旀澶у皬錛?68 MB - 姝ょ偤澶у鏁稿鎴舵墍闇瑕佺殑灝佽銆? 姝ゅ皝瑁濆寘鍚湪 Debug 宸卞畨瑁?Service Pack 2 涔?Windows XP 鐨勫畬鏁?Symbol 濂椾歡銆傚叾涓?Windows XP 鐨?Symbol 宸辮鏇存柊鐐虹鍚?Windows XP Service Pack 2 鏇存柊妾旀鐨?Symbol銆?/p>
Windows XP with Service Pack 2 x86 retail symbols, all languages (妾旀澶у皬錛?95 MB - 姝ょ偤澶у鏁稿鎴舵墍闇瑕佺殑灝佽銆? 姝ゅ皝瑁濇瘮鍚湁 Service Pack 2 鐨?Windows XP 瀹屾暣濂椾歡鐨勪笅杓夐噺渚嗙殑灝忋傚畠鍍呭寘鍚毃闄勬柤 Service Pack 2 涔嬫獢妗堢殑 Symbol銆傝嫢鎮ㄥ繁綞撳畨瑁濅簡 Windows XP 鐨?Symbol錛屾偍鍙互灝囧畠瀹夎鍦ㄧ浉鍚岀殑璺緫錛岄欐ǎ鎮ㄥ氨鎿佹湁浜嗗惈鏈?Service Pack 2 鐨?Windows XP 瀹屾暣 Symbol 濂椾歡銆?/p>
Windows XP Service Pack 2 x86 retail symbols, all languages (妾旀澶у皬錛?45 MB - 姝ょ偤澶у鏁稿鎴舵墍闇瑕佺殑灝佽銆? 姝ゅ皝瑁濆寘鍚湪 Debug 宸卞畨瑁?Service Pack 1 鎴?Service Pack 1a 涔?Windows XP 鐨勫畬鏁?Symbol 濂椾歡銆傚叾涓?Windows XP 鐨?Symbol 宸辮鏇存柊鐐虹鍚?Windows XP Service Pack 1 浠ュ強 Service Pack 1a 鏇存柊妾旀鐨?Symbol銆?/p>
Windows XP with Service Pack 1 and Service Pack 1a x86 retail symbols, all languages (妾旀澶у皬錛?72 MB - 姝ょ偤澶у鏁稿鎴舵墍闇瑕佺殑灝佽銆? 姝ゅ皝瑁濇瘮鍚湁 Service Pack 1 浠ュ強 Service Pack 1a 鐨?Windows XP 瀹屾暣濂椾歡鐨勪笅杓夐噺渚嗙殑灝忋傚畠鍍呭寘鍚毃闄勬柤 Service Pack 1 浠ュ強 Service Pack 1a 涔嬫獢妗堢殑 Symbol銆傝嫢鎮ㄥ繁綞撳畨瑁濅簡 Windows XP 鐨?Symbol錛屾偍鍙互灝囧畠瀹夎鍦ㄧ浉鍚岀殑璺緫錛岄欐ǎ鎮ㄥ氨鎿佹湁浜嗗惈鏈?Service Pack 1 浠ュ強 Service Pack 1a 鐨?Windows XP 瀹屾暣 Symbol 濂椾歡銆? Windows XP Service Pack 1 and Service Pack 1a x86 retail symbols, all languages (妾旀澶у皬錛?03 MB - Most customers want this package.) Windows XP x86 retail symbols, all languages (妾旀澶у皬錛?49 MB - 姝ょ偤澶у鏁稿鎴舵墍闇瑕佺殑灝佽銆? Windows 2000 SP4 鐨勬洿鏂板綑綹藉浠?1 (Update Rollup 1)銆傛瀹夎 Windows 2000 SP4 鐨勬洿鏂板綑綹藉浠?1 涓墍鍖呮嫭鐨勬柊澧?Symbols錛岃珛鍦ㄤ笅鏂圭殑涓嬫媺寮忛伕鍠腑閬告搰鎮ㄦ兂瑕佷笅杓夌殑瑾炶█鐗堟湰鐒跺緦鍦?"鎸変竴涓嬮欒!闁嬪涓嬭級" 鐨勯g祼鎸変竴涓嬨傛鎿佹湁瀹屾暣鐨?Symbol 濂椾歡錛屾偍蹇呴爤鍏堝畨瑁?Windows 2000 Symbol錛屼箣寰屾帴钁楀畨瑁?Service Pack 4 Symbol錛屾渶寰屽啀瀹夎 Windows 2000 SP4 鏇存柊褰欑附濂椾歡 1 鐨?Symbol銆?/p>
< language="javascript" type="text/javascript"> function ShowSelectInfoSP4UR1() { oElement = window.event.srcElement for (i=0; i 閬告搰鎵闇鐨勮獮璦鐗堟湰錛?br> 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB) Windows 2000 Service Pack 4 銆傚畨瑁?Service Pack 4 鎵鎻愪緵鐨勯澶?Symbol錛岃珛鍦ㄤ笅闈㈢殑涓嬫媺寮忚〃鍠腑閬告搰鎮ㄦ兂瑕佷笅杓夌殑瑾炶█鐒跺緦鎸変竴涓?"鎸変竴涓嬮欒!闁嬪涓嬭級" 鐨勯g祼闋呯洰銆傛鎿佹湁瀹屾暣鐨?Symbol 濂椾歡錛屾偍蹇呴爤鍦ㄥ畨瑁?Service Pack 4 Symbol 鍓嶅厛瀹夎 Windows 2000 Symbol銆?/p>
< language="javascript" type="text/javascript"> function ShowSelectInfoSP4() { oElement = window.event.srcElement for (i=0; i 閬告搰鎵闇鐨勮獮璦鐗堟湰錛?br> 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細72 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細74 MB) 鑻ユ偍鏈夌壒孌婄増鏈殑 Service Pack 4 涓旈渶瑕佹洿澶氱殑 Debugging 璩囪▕錛岄偅鎮ㄦ噳瑭蹭笅杓夌敤鏂?Checked 鐗堟湰鐨?Symbol銆備笅杓夎嫳鏂囩増鐨?Service Pack 4 Checked 鐗堟湰錛岃珛鎸変竴涓嬮欒! (涓嬭級閲忥細 66 MB)銆?/p>
Windows 2000 Service Pack 3銆傚畨瑁?Service Pack 3 鎵鎻愪緵鐨勯澶?Symbol錛岃珛鍦ㄤ笅闈㈢殑涓嬫媺寮忚〃鍠腑閬告搰鎮ㄦ兂瑕佷笅杓夌殑瑾炶█鐒跺緦鎸変竴涓?"鎸変竴涓嬮欒!闁嬪涓嬭級" 鐨勯g祼闋呯洰銆傛鎿佹湁瀹屾暣鐨?Symbol 濂椾歡錛屾偍蹇呴爤鍦ㄥ畨瑁?Service Pack 3 Symbol 鍓嶅厛瀹夎 Windows 2000 Symbol銆?/p>
< language="javascript" type="text/javascript"> function ShowSelectInfo() { oElement = window.event.srcElement for (i=0; i 閬告搰鎵闇鐨勮獮璦錛?br> 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細67 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細67 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細67 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細67 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細67 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細67 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細67 MB) 鑻ユ偍鏈夌壒孌婄増鏈殑 Service Pack 3 涓旈渶瑕佹洿澶氱殑 Debugging 璩囪▕錛岄偅鎮ㄦ噳瑭蹭笅杓夌敤鏂?Checked 鐗堟湰鐨?Symbol銆備笅杓夎嫳鏂囩増鐨?Service Pack 3 Checked 鐗堟湰錛岃珛鎸変竴涓嬫铏曘?/p>
Windows 2000 Service Pack 2 Security Rollup Package 1銆傚畨瑁?Service Pack 2 Security Rollup Package 1 鎵鎻愪緵鐨勯澶?Symbol錛岃珛鍦ㄤ笅闈㈢殑涓嬫媺寮忚〃鍠腑閬告搰鎮ㄦ兂瑕佷笅杓夌殑瑾炶█鐒跺緦鎸変竴涓?"鎸変竴涓嬮欒!闁嬪涓嬭級" 鐨勯g祼闋呯洰銆傛鎿佹湁瀹屾暣鐨?Symbol 濂椾歡錛屾偍蹇呴爤鍏堝畨瑁?Windows 2000 Symbol錛屽啀瀹夎 Service Pack 2 Symbol錛屾渶寰屽啀瀹夎 Service Pack 2 Security Rollup Package 1 Symbol銆?/p>
閬告搰鎵闇鐨勮獮璦錛?br> 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB) Windows 2000 Service Pack 2 Symbols - 璺熼毃 SP2 鎵鏂板鐨?Symbol銆傛鎿佹湁鐢ㄦ柤鍚湁 Service Pack 2 涔?Windows 2000 鐨勫畬鏁?Symbol 濂椾歡錛屾偍蹇呴爤鍏堝畨瑁?Windows 2000 Symbo 鐒跺緦鍐嶅畨瑁?Service Pack 2 Symbol銆?/p>
Windows 2000 Service Pack 1 Symbols - 璺熼毃 SP1 鎵鏂板鐨?Symbol銆傛鎿佹湁鐢ㄦ柤鍚湁 Service Pack 1 涔?Windows 2000 鐨勫畬鏁?Symbol 濂椾歡錛屾偍蹇呴爤鍏堝畨瑁?Windows 2000 Symbo 鐒跺緦鍐嶅畨瑁?Service Pack 1 Symbol銆?/p>
Windows 2000 Symbols - 鐢ㄦ柤 Debugging Windows 2000 鎵闇鐨勬獢妗堛?br> 鎰忚鍙嶆噳 - 鎴戝戞湡寰呭緱鍒版偍闂楁柤 Symbol 鐨勬剰瑕嬪弽鎳夈傝珛灝囨偍鐨勫緩璀版垨鏄尟瑾ゅ牨鍛?windbgfb@microsoft.com銆?闆栫劧鎮ㄧ劇娉曞緸姝よ檿鍙栧緱鎶琛撴敮鎻達紝浣嗘槸鎮ㄧ殑鎰忚灝囧彲浠ュ公鍔╂垜鍊戞湭渚嗗湪 Symbol 鐨勮畩鏇磋▓鐣甫涓斾嬌寰楀畠鍦ㄦ湭渚嗘洿鍚堟柤鎮ㄧ殑闇姹傘?/p>
Last Updated: 2006 騫?9 鏈?13 鏃?/p>
濡傛灉瑕佸湪搴旂敤紼嬪簭涓互鐗╃悊鍦板潃鏂瑰紡璁塊棶鍐呭瓨錛岃嚜鐒惰岀劧鐨勫姙娉曪紝鏄紪鍐欎竴涓笓鐢ㄧ殑椹卞姩紼嬪簭錛堝澶у鐔熸倝鐨刉inIO錛夛紝閲岄潰璁劇疆涓瀹氱殑IOCTL鐮侊紝搴旂敤紼嬪簭閫氳繃璋冪敤DeviceIoCtrol()鏉ュ疄鐜拌繖鏍風殑鍔熻兘銆?/p>
閭d箞錛屾湁娌℃湁涓縐嶆柟娉曪紝鐪佸幓緙栧啓涓撶敤椹卞姩紼嬪簭榪欎竴姝ワ紝寰堟柟渚垮湴灝辮兘璁塊棶鐗╃悊鍐呭瓨鍛紵絳旀鏄偗瀹氱殑銆傚疄闄呬笂錛屽井杞棭灝辯粰鎴戜滑鍑嗗濂戒簡涓濂楀姙娉曪紝鍙槸浠栦滑縐樿屼笉瀹g艦浜嗐傜郴緇熷唴寤轟竴涓彨鍋歅hysicalMemory鐨勫唴鏍稿璞★紝鍙互閫氳繃緋葷粺鏍稿績鏂囦歡NTDLL.DLL涓殑鏈夊叧API榪涜鎿嶇旱錛屼粠鑰屽疄鐜扮墿鐞嗗唴瀛樼殑鐩存帴璁塊棶銆傚井杞0縐拌繖浜汚PI鏄敤浜庨┍鍔ㄧ▼搴忓紑鍙戠殑錛屽湪VC/.NET涓湭鎻愪緵鍘熷瀷璇存槑鍜屽簱鏂囦歡錛岀劧鑰屼簨瀹炶瘉鏄庡湪搴旂敤紼嬪簭涓皟鐢ㄥ畠浠槸娌℃湁闂鐨勩傛垜浠劅鍏磋叮鐨凙PI涓昏鍖呮嫭錛?/p>
ZwOpenSection 鎴?NtOpenSection - 鎵撳紑鍐呮牳瀵硅薄 鍦╒C/.NET涓紝鐢變簬娌℃湁鐩稿簲鐨勫師鍨嬭鏄庡拰搴撴枃浠訛紝鎴戜滑鐢℅etProcAddress()榪涜DLL鏄懼紡璋冪敤銆傚墠闈㈠ぇ孌電殑浠g爜錛岀敤浜庤鏄庡繀闇鐨勭被鍨嬪拰緇撴瀯銆傝鍙栫墿鐞嗗唴瀛樼殑涓昏姝ラ涓猴細鎵撳紑鍐呮牳瀵硅薄 → 鏄犲皠铏氭嫙鍦板潃絀洪棿 → 璇誨彇(澶嶅埗)鍐呭瓨 → 鍙栨秷鍦板潃絀洪棿鏄犲皠銆?/p>
typedef LONG NTSTATUS; 琛ュ厖璇存槑涓鐐癸紝鐢變簬Windows铏氭嫙鍐呭瓨欏甸潰澶у皬榛樿鏄?KB錛孨tMapViewOfSection()榪斿洖鐨勮櫄鎷熺┖闂村熀鍧鏄寜鐓?KB瀵歸綈鐨勶紝榪斿洖鐨?/p>
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/coffeemay/archive/2006/10/28/1354465.aspx
瀹冭兘澶熷湪緙栬瘧淇℃伅杈撳嚭紿楀彛涓緭鍑虹浉搴旂殑淇℃伅錛岃繖瀵逛簬婧愪唬鐮佷俊鎭殑鎺у埗鏄潪甯擱噸瑕佺殑銆?/p>
#ifdef _X86
#pragma message("_X86 macro activated!")
#endif
褰撴垜浠畾涔変簡_X86榪欎釜瀹忎互鍚庯紝搴旂敤紼嬪簭鍦ㄧ紪璇戞椂灝變細鍦ㄧ紪璇戣緭鍑虹獥鍙i噷鏄劇ず
"_X86 macro activated!"
榪欐牱錛屾垜浠氨涓嶄細鍥犱負涓嶈寰楄嚜宸卞畾涔夌殑涓浜涚壒瀹氱殑瀹忚屾姄鑰蟲尃鑵簡銆?/p>
#pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
璇ユ寚浠ょ敤鏉ユ寚瀹氬嚱鏁板湪.obj鏂囦歡涓瓨鏀劇殑鑺?瑙傚療OBJ鏂囦歡鍙互浣跨敤VC鑷甫鐨刣umpbin鍛戒護琛岀▼搴?鍑芥暟鍦?obj鏂囦歡涓粯璁ょ殑瀛樻斁鑺備負.text鑺傦紝濡傛灉code_seg娌℃湁甯﹀弬鏁扮殑璇?鍒欏嚱鏁板瓨鏀懼湪.text鑺備腑銆?/p>
"segment-name" (鍙夊弬鏁? 琛ㄧず鍑芥暟瀛樻斁鐨勮妭鍚?br> 渚嬪:
//榛樿鎯呭喌涓?鍑芥暟琚瓨鏀懼湪.text鑺備腑
void func1() { // stored in .text
}
#pragma code_seg(".my_data1")
void func2() { // stored in my_data1
}
#pragma code_seg(push, r1, ".my_data2")
void func3() { // stored in my_data2
}
}
璇ユ寚浠ゅ厑璁告湁閫夋嫨鎬х殑淇敼緙栬瘧鍣ㄧ殑璀﹀憡娑堟伅鐨勮涓?br> 鎸囦護鏍煎紡濡備笅:
#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]
#pragma warning( push[ ,n ] )
#pragma warning( pop )
default:閲嶇疆緙栬瘧鍣ㄧ殑璀﹀憡琛屼負鍒伴粯璁ょ姸鎬?br> 1,2,3,4:鍥涗釜璀﹀憡綰у埆
disable:紱佹鎸囧畾鐨勮鍛婁俊鎭?br> error:灝嗘寚瀹氱殑璀﹀憡淇℃伅浣滀負閿欒鎶ュ憡
絳変環浜庯細
#pragma warning(disable:4507 34) // 涓嶆樉紺?507鍜?4鍙瘋鍛婁俊鎭?br> #pragma warning(once:4385) // 4385鍙瘋鍛婁俊鎭粎鎶ュ憡涓嬈?br> #pragma warning(error:164) // 鎶?64鍙瘋鍛婁俊鎭綔涓轟竴涓敊璇?br> 鍚屾椂榪欎釜pragma warning 涔熸敮鎸佸涓嬫牸寮忥細
#pragma warning( push [ ,n ] )
#pragma warning( pop )
榪欓噷n浠h〃涓涓鍛婄瓑綰?1---4)銆?br> #pragma warning( push )淇濆瓨鎵鏈夎鍛婁俊鎭殑鐜版湁鐨勮鍛婄姸鎬併?br> #pragma warning( push, n)淇濆瓨鎵鏈夎鍛婁俊鎭殑鐜版湁鐨勮鍛婄姸鎬侊紝騫朵笖鎶婂叏灞璀﹀憡絳夌駭璁懼畾涓簄銆?br> #pragma warning( pop )鍚戞爤涓脊鍑烘渶鍚庝竴涓鍛婁俊鎭紝鍦ㄥ叆鏍堝拰鍑烘爤涔嬮棿鎵浣滅殑涓鍒囨敼鍔ㄥ彇娑堛備緥濡傦細
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
#pragma warning( pop )
璇ユ寚浠ょ殑鏍煎紡涓猴細 #pragma comment( "comment-type" [, commentstring] )
璇ユ寚浠ゅ皢涓涓敞閲婅褰曟斁鍏ヤ竴涓璞℃枃浠舵垨鍙墽琛屾枃浠朵腑,comment-type(娉ㄩ噴綾誨瀷):鍙互鎸囧畾涓轟簲縐嶉瀹氫箟鐨勬爣璇嗙鐨勫叾涓竴縐嶃?br> 浜旂棰勫畾涔夌殑鏍囪瘑絎︿負:
#pragma comment(lib, "user32.lib")
璇ユ寚浠ょ敤鏉ュ皢user32.lib搴撴枃浠跺姞鍏ュ埌鏈伐紼嬩腑
#pragma comment(linker, "/include:__mySymbol")
浣犲彲浠ュ湪紼嬪簭涓緗笅鍒楅摼鎺ラ夐」
/DEFAULTLIB
/EXPORT
/INCLUDE
/MERGE
/SECTION
#pragma comment( user, "Compiled on " __DATE__ " at " __TIME__ )
]]>
閫欎簺灝佽妾旀涓寘鍚簡鎵鏈夌敤鏂?Debug Windows Vista Release Candidate 1 (RC1) 鐨勫畬鏁?Symbol 濂椾歡銆?/p>
Windows Vista RC1 Itanium retail symbols, all languages (妾旀澶у皬錛?48 MB)
Windows Vista RC1 x64 retail symbols, all languages (妾旀澶у皬錛?05 MB)
Windows Vista RC1 x86 checked symbols, all languages (妾旀澶у皬錛?48 MB)
Windows Vista RC1 Itanium checked symbols, all languages (妾旀澶у皬錛?87 MB)
Windows Vista RC1 x64 checked symbols, all languages (妾旀澶у皬錛?24 MB)
Windows Server 2003 and Windows XP x64 Edition
鍚?Service Pack 1 鐨?Windows Server 2003 Symbols
Windows Server 2003 with Service Pack 1 x86 checked symbols, all languages (妾旀澶у皬錛?46 MB)
Windows Server 2003 with Service Pack 1 Itanium-based retail symbols, all languages (妾旀澶у皬錛?02 MB)
Windows Server 2003 with Service Pack 1 Itanium-based checked symbols, all languages (妾旀澶у皬錛?23 MB)
Windows Server 2003 with Service Pack 1 x64-based retail symbols, all languages (妾旀澶у皬錛?23 MB)
Windows Server 2003 with Service Pack 1 x64-based checked symbols, all languages (妾旀澶у皬錛?13 MB)
娓涘皯涓嬭級鐨勯噺錛歐indows Server 2003 Service Pack 1
Windows Server 2003 Service Pack 1 x86 checked symbols, all languages (妾旀澶у皬錛?21 MB)
Windows Server 2003 Service Pack 1 Itanium-based retail symbols, all languages (妾旀澶у皬錛?1 MB)
Windows Server 2003 Service Pack 1 Itanium-based checked symbols, all languages (妾旀澶у皬錛?10 MB)
涓嶅寘鍚?Service Pack 鐨?Windows Server 2003 Symbols
Windows Server 2003 Itanium retail symbols, all languages (妾旀澶у皬錛?05 MB)
Windows Server 2003 x86 checked symbols, all languages (妾旀澶у皬錛?63 MB)
Windows Server 2003 Itanium checked symbols, all languages (妾旀澶у皬錛?23 MB)
Windows XP
鍚?Service Pack 2 鐨?Windows XP Symbol
Windows XP with Service Pack 2 x86 checked symbols, all languages (妾旀澶у皬錛?88 MB)
娓涘皯涓嬭級鐨勯噺錛歐indows XP Service Pack 2
Windows XP Service Pack 2 x86 checked symbols, all languages (妾旀澶у皬錛?32 MB)
Windows XP with Service Pack 1 浠ュ強 Service Pack 1a Symbol
Windows XP with Service Pack 1 and Service Pack 1a Itanium retail symbols, all languages (妾旀澶у皬錛?01 MB)
Windows XP with Service Pack 1 and Service Pack 1a x86 checked symbols, all languages (妾旀澶у皬錛?68 MB)
Windows XP with Service Pack 1 and Service Pack 1a Itanium checked symbols, all languages (妾旀澶у皬錛?24 MB)
娓涘皯涓嬭級鐨勯噺錛歐indows XP Service Pack 1 浠ュ強 Service Pack 1a Symbol
Windows XP Service Pack 1 and Service Pack 1a Itanium retail symbols, all languages (妾旀澶у皬錛?0 MB)
Windows XP Service Pack 1 and Service Pack 1a x86 checked symbols, all languages (妾旀澶у皬錛?6 MB)
Windows XP Service Pack 1 and Service Pack 1a Itanium checked symbols, all languages (妾旀澶у皬錛?3 MB)
Windows XP Symbol 鍏朵腑涓嶅惈 Service Pack
Windows XP IA-64 retail symbols, all languages (妾旀澶у皬錛?5 MB)
Windows XP x86 checked symbols, all languages (妾旀澶у皬錛?47 MB)
Windows XP IA-64 checked symbols, all languages (妾旀澶у皬錛?16 MB)
Windows 2000
涓嬪垪閫g祼閫f帴鑷蟲瘡涓鍊?Symbols 灝佽鐨勪笅杓夎檿錛屾垨鏄付闋樻偍鑷蟲彁渚涢棞鏂?Windows 2000 Symbol 涓嬭級璩囪▕鐨勭恫绔欍?
Arabic Chinese (Simplified) Chinese (Traditional) Czech Danish Dutch English Finnish French German Greek Hebrew Hungarian Italian Japanese Japanese NEC98 Korean Norwegian Polish Portugese Portugese (Brazilian) Russian Spanish Swedish Turkish 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細 22 MB)
Arabic Chinese (Simplified) Chinese (Traditional) Chinese (Hong Kong SAR) Czech Danish Dutch English Finnish French German Greek Hebrew Hungarian Italian Japanese Japanese NEC98 Korean Norwegian Polish Portugese Portugese (Brazilian) Russian Spanish Swedish Turkish 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細72 MB)
English French German Italian Japanese Japanese NEC98 Portugese (Brazilian) Spanish 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細67 MB)
English Arabic Chinese (Simplified) Chinese (Traditional) Czech Danish Dutch Finnish French German Greek Hebrew Hungarian Italian Japanese Japanese NEC98 Korean Norwegian Polish Portugese Portugese (Brazilian) Russian Spanish Swedish Turkish 鎸変竴涓嬮欒!闁嬪涓嬭級 (涓嬭級閲忥細19 MB)
Debugging 瑾槑妾?- 鐐轟簡騫姪鎮?Debugging 鍟忛錛岃珛鎻愰佺窔涓婅鏄庢獢鐨勮姹傛垨鏄嬌鐢ㄩ檮鍔犵殑璩囨簮鏂?DDK 闁嬬櫦浜哄摗鏀彺銆?/p>
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/coffeemay/archive/2006/10/12/1331356.aspx
]]>
ZwMapViewOfSection 鎴?NtMapViewOfSection - 鏄犲皠铏氭嫙鍦板潃絀洪棿
ZwUnmapViewOfSection 鎴?NtUnmapViewOfSection - 鍙栨秷鍦板潃絀洪棿鏄犲皠
RtlInitUnicodeString - 鐢║NICODE涓插垵濮嬪寲UNICODE鎻忚堪鐨勭粨鏋?
浠ヤ笅鐨勪唬鐮佹弿榪頒簡濡備綍鍒╃敤NTDLL.DLL涓殑涓婅堪鍑犱釜API錛屽疄鐜板鐗╃悊鍐呭瓨鐨勮鍙栥傞渶瑕佹寚鍑虹殑鏄紝鍙湁system鎷ユ湁璇誨啓鏉冮檺錛宎dministrator鍙湁璇繪潈闄愶紝鑰寀ser榪炶鏉冮檺閮芥病鏈夈傝繖涓鐐癸紝鏄笉鑳戒笌涓撶敤椹卞姩紼嬪簭鏂規硶鍚戠浉姣旂殑銆?/p>
typedef struct _UNICODE_STRING
{
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
typedef enum _SECTION_INHERIT
{
ViewShare = 1,
ViewUnmap = 2
} SECTION_INHERIT, *PSECTION_INHERIT;
typedef struct _OBJECT_ATTRIBUTES
{
ULONG Length;
HANDLE RootDirectory;
PUNICODE_STRING ObjectName;
ULONG Attributes;
PVOID SecurityDescriptor;
PVOID SecurityQualityOfService;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
#define InitializeObjectAttributes( p, n, a, r, s ) { \
(p)->Length = sizeof( OBJECT_ATTRIBUTES ); \
(p)->RootDirectory = r; \
(p)->Attributes = a; \
(p)->ObjectName = n; \
(p)->SecurityDescriptor = s; \
(p)->SecurityQualityOfService = NULL; \
}
// Interesting functions in NTDLL
typedef NTSTATUS (WINAPI *ZwOpenSectionProc)
(
PHANDLE SectionHandle,
DWORD DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes
);
typedef NTSTATUS (WINAPI *ZwMapViewOfSectionProc)
(
HANDLE SectionHandle,
HANDLE ProcessHandle,
PVOID *BaseAddress,
ULONG ZeroBits,
ULONG CommitSize,
PLARGE_INTEGER SectionOffset,
PULONG ViewSize,
SECTION_INHERIT InheritDisposition,
ULONG AllocationType,
ULONG Protect
);
typedef NTSTATUS (WINAPI *ZwUnmapViewOfSectionProc)
(
HANDLE ProcessHandle,
PVOID BaseAddress
);
typedef VOID (WINAPI *RtlInitUnicodeStringProc)
(
IN OUT PUNICODE_STRING DestinationString,
IN PCWSTR SourceString
);
// Global variables
static HMODULE hModule = NULL;
static HANDLE hPhysicalMemory = NULL;
static ZwOpenSectionProc ZwOpenSection;
static ZwMapViewOfSectionProc ZwMapViewOfSection;
static ZwUnmapViewOfSectionProc ZwUnmapViewOfSection;
static RtlInitUnicodeStringProc RtlInitUnicodeString;
// initialize
BOOL InitPhysicalMemory()
{
if (!(hModule = LoadLibrary("ntdll.dll")))
{
return FALSE;
}
// 浠ヤ笅浠嶯TDLL鑾峰彇鎴戜滑闇瑕佺殑鍑犱釜鍑芥暟鎸囬拡
if (!(ZwOpenSection = (ZwOpenSectionProc)GetProcAddress(hModule, "ZwOpenSection")))
{
return FALSE;
}
if (!(ZwMapViewOfSection = (ZwMapViewOfSectionProc)GetProcAddress(hModule, "ZwMapViewOfSection")))
{
return FALSE;
}
if (!(ZwUnmapViewOfSection = (ZwUnmapViewOfSectionProc)GetProcAddress(hModule, "ZwUnmapViewOfSection")))
{
return FALSE;
}
if (!(RtlInitUnicodeString = (RtlInitUnicodeStringProc)GetProcAddress(hModule, "RtlInitUnicodeString")))
{
return FALSE;
}
// 浠ヤ笅鎵撳紑鍐呮牳瀵硅薄
WCHAR PhysicalMemoryName[] = L"\\Device\\PhysicalMemory";
UNICODE_STRING PhysicalMemoryString;
OBJECT_ATTRIBUTES attributes;
RtlInitUnicodeString(&PhysicalMemoryString, PhysicalMemoryName);
InitializeObjectAttributes(&attributes, &PhysicalMemoryString, 0, NULL, NULL);
NTSTATUS status = ZwOpenSection(&hPhysicalMemory, SECTION_MAP_READ, &attributes );
return (status >= 0);
}
// terminate -- free handles
void ExitPhysicalMemory()
{
if (hPhysicalMemory != NULL)
{
CloseHandle(hPhysicalMemory);
}
if (hModule != NULL)
{
FreeLibrary(hModule);
}
}
BOOL ReadPhysicalMemory(PVOID buffer, DWORD address, DWORD length)
{
DWORD outlen; // 杈撳嚭闀垮害錛屾牴鎹唴瀛樺垎欏靛ぇ灝忓彲鑳藉ぇ浜庤姹傜殑闀垮害
PVOID vaddress; // 鏄犲皠鐨勮櫄鍦板潃
NTSTATUS status; // NTDLL鍑芥暟榪斿洖鐨勭姸鎬?br> LARGE_INTEGER base; // 鐗╃悊鍐呭瓨鍦板潃
vaddress = 0;
outlen = length;
base.QuadPart = (ULONGLONG)(address);
// 鏄犲皠鐗╃悊鍐呭瓨鍦板潃鍒板綋鍓嶈繘紼嬬殑铏氬湴鍧絀洪棿
status = ZwMapViewOfSection(hPhysicalMemory,
(HANDLE) -1,
(PVOID *)&vaddress,
0,
length,
&base,
&outlen,
ViewShare,
0,
PAGE_READONLY);
if (status < 0)
{
return FALSE;
}
// 褰撳墠榪涚▼鐨勮櫄鍦板潃絀洪棿涓紝澶嶅埗鏁版嵁鍒拌緭鍑虹紦鍐插尯
memmove(buffer, vaddress, length);
// 瀹屾垚璁塊棶錛屽彇娑堝湴鍧鏄犲皠
status = ZwUnmapViewOfSection((HANDLE)-1, (PVOID)vaddress);
return (status >= 0);
}
// 涓涓祴璇曞嚱鏁幫紝浠庣墿鐞嗗湴鍧0xfe000寮濮嬶紝璇誨彇4096涓瓧鑺?br>// 瀵逛簬Award BIOS錛屽彲浠ヤ粠榪欐鏁版嵁鎵懼埌搴忓垪鍙風瓑淇℃伅
BOOL test()
{
UCHAR buf[4096];
if (!InitPhysicalMemory())
{
return FALSE;
}
if (!ReadPhysicalMemory(buf, 0xfe000, 4096))
{
// ... 鎴愬姛璇誨彇浜嗘寚瀹氭暟鎹?br> ExitPhysicalMemory();
return FALSE;
}
ExitPhysicalMemory();
return TRUE;
}
]]>
]]>
鏌ョ湅榪涚▼琚皝鍚姩錛?br>浠誨姟綆$悊鍣?=銆嬫煡鐪嬶紙V錛?=銆嬮夋嫨鍒楋紙S錛?#8230;==銆嬪嬀閫?#8220;PID錛堣繘紼嬫爣璇嗙錛?#8221;==銆嬫壘鍒癙ID瀵瑰簲鐨勬槧鍍忓悕縐?#8230;…
]]>
]]>