锘??xml version="1.0" encoding="utf-8" standalone="yes"?> TCPMP鏄竴涓姛鑳藉己澶у紑鏀懼紡鐨勫紑婧愬濯掍綋鎾斁鍣紝 libmad宸ョ▼鐢ㄤ簬MP3鏂囦歡瑙g爜錛岃宸ョ▼鍖呭惈涓や釜鍔熻兘妯″潡錛屼竴涓礋璐hВ鏋怣P3鏂囦歡鏍煎紡錛屽寘鎷琈PEG1闊抽鏂囦歡 (MP1,MP2,MP3,MPA)錛岃鍙栨瘡涓甯ч煶棰戞暟鎹紱鍙︿竴涓礋璐hВ鐮丮PEG1闊抽鏁版嵁錛岃В鐮佷唬鐮佸湪libmad瀛愮洰褰曚腑銆?br>libmad鏄竴涓紑婧愮殑楂樼簿搴?MPEG1闊抽瑙g爜搴擄紝鏀寔 MPEG-1錛圠ayer I, Layer II 鍜?LayerIII錛屼篃灝辨槸 MP3錛夈俵ibmad鎻愪緵 24-bit 鐨?PCM 杈撳嚭錛屽畬鍏ㄦ槸瀹氱偣璁$畻錛岄潪甯擱傚悎娌℃湁嫻偣鏀寔鐨勫鉤鍙頒笂浣跨敤銆備嬌鐢?libmad 鎻愪緵鐨勪竴緋誨垪 API錛屽氨鍙互闈炲父綆鍗曞湴瀹炵幇 MP3 鏁版嵁瑙g爜宸ヤ綔銆傚湪 libmad 鐨勬簮浠g爜鏂囦歡鐩綍涓嬬殑 mad.h 鏂囦歡涓紝鍙互鐪嬪埌緇濆ぇ閮ㄥ垎璇ュ簱鐨勬暟鎹粨鏋勫拰 API 絳夈俵ibmad鏄敤鐨刦ixed-integer錛岄氳繃鏁存暟妯℃嫙灝忔暟璁$畻鐨勶紝綺懼害鍙兘淇濊瘉鍒板皬鏁扮偣鍚庣9浣嶏紙澶т簬0鐨勬渶灝忓?0.00000000372529錛夛紝铏界劧瑙g爜綺懼害浼氭湁鎹熷け錛屼絾鏄瀬澶ф彁楂樹簡瑙g爜鏁堢巼錛岀壒鍒槸鍦ㄥ祵鍏ュ紡璁懼涓婁篃鍙互瀹炵幇楂樼爜鐜嘙P3鏂囦歡鐨勮В鐮併?/p>
splitter宸ョ▼鐢ㄤ簬瑙f瀽澶氱闊寵棰戞枃浠舵牸寮忋傚彲浠ヨВ鏋愮殑鏂囦歡鏍煎紡鍖呮嫭錛欰SF濯掍綋鏂囦歡錛岃棰戞枃浠?(AVI,DIVX)錛學(xué)indows娉㈠艦鏂囦歡 (WAV,RMP)錛孧PEG鐢?shù)濯勬枃錃g (MPEG,MPG,MPV)錛孧PEG4鏂囦歡 (MP4,3GP,M4A,M4B,K3G)銆備互涓婃牸寮忓彲浠ヨ瑙f瀽浣嗘槸鏁版嵁緙栫爜涓嶄竴瀹氳兘姝g‘瑙g爜錛岄渶瑕佷緷璧栫郴緇熺殑瑙g爜鍣ㄣ?/p>
common宸ョ▼鏄牳蹇冩ā鍧楋紝鏄竴涓紑鏀劇殑闆嗘暟鎹緭鍏ャ佽漿鎹€侀煶/瑙嗛瑙g爜銆佷俊鍙瘋緭鍑虹瓑鍔熻兘涓轟竴浣撶殑瀹屾暣鐨勫濯掍綋鎾斁妗嗘灦銆傝繖涓鏋惰嚜韜笉鍖呭惈浠諱綍鐨凞ecode鍜孲plit鍔熻兘錛岃繖浜涘姛鑳界敱鎻掍歡瀹炵幇錛屾牳蹇冩ā鍧椾互涓涓爲(wèi)鐘剁粨鏋勭鐞嗘墍鏈夌殑鍔熻兘妯″潡鍜屾彃浠舵ā鍧楋紝瀹炵幇鏁版嵁Render鍔熻兘錛屽杈撳叆銆佽漿鎹€佽緭鍑烘祦紼嬬殑鎺у埗錛屾帴鍙楁挱鏀捐繃紼嬩腑鐨勬搷浣滃拰瀵逛簨浠惰繘琛屽鐞嗭紝鍚屾椂涔熷疄鐜扮郴緇熻繍琛屼腑緇忓父浣跨敤鐨勪竴浜涘叡鐢ㄥ嚱鏁幫紝姣斿瑙g爜榪囩▼涓粡甯鎬嬌鐢ㄧ殑閫嗙鏁d綑寮﹀彉鎹紝鍐呭瓨鎿嶄綔錛岀晫闈腑闇瑕佷嬌鐢ㄧ殑澶氳璦瀛楃澶勭悊絳夈俢ommon宸ョ▼鐨勪富鐩綍涓嬩富瑕佹湁錛歜lit銆乨yncode銆乷verlay銆乸cm銆乻oftidct銆亀in32銆亃lib絳夊瓙鐩綍銆傚叾涓璪lit鍜宱verlay瀛樻斁鏄棰戜俊鍙鋒覆鏌撴ā鍧楋紝pcm瀛樻斁PCM闊抽淇″彿杞崲妯″潡錛宻oftidct瀛樻斁閫嗙鏁d綑寮﹀彉鎹㈠嚱鏁幫紝win32瀛樻斁鍐呭瓨鎿嶄綔絳夊父鐢ㄦā鍧楋紝dyncode榪欎釜鐩綍鐨勪唬鐮佹瘮杈冩櫐娑╋紝瀛樻斁鐨勬槸紼嬪簭榪愯鏄姩鎬佺敓鎴愪唬鐮佹ā鍧楋紝閽堝涓嶅悓鐨凜PU鎸囦護闆嗭紝PCM鏁版嵁鏁版嵁澹伴亾鍜岄噰鏍風(fēng)巼涓嶅悓錛岃棰戞覆鏌撴暟鎹牸寮忓拰鑹叉繁絳変笉鍚屾儏鍐靛姩鎬佺敓鎴愪笉鍚岀殑浼樺寲浠g爜錛堣繖孌典唬鐮侀潪甯哥簿褰╋紝涓嶈兘涓嶈浜轟僵鏈峊CPMP浣滆呯殑楂樿秴姘村鉤錛夈傛牳蹇冩ā鍧楁湁涓涓笂涓嬫枃瀵硅薄context錛岃瀵硅薄鍦ㄥ垵濮嬪寲鍑芥暟bool_t Context_Init(……)涓欏垱寤轟簡涓涓瀵硅薄瀹炰緥銆傝瀵硅薄瀹炰緥璁板綍綆$悊鍚勪釜鍔熻兘妯″潡錛岀敤鎴風(fēng)晫闈㈠彲浠ラ氳繃璇ュ璞″拰鏍稿績妯″潡浜や簰錛岀鐞嗘帶鍒舵挱鏀捐繃紼嬨?br> Context瀵硅薄璇存槑錛?br>typedef struct context } context; 鍔熻兘妯″潡鍖呭惈瀹氫箟瀵硅薄鍜屾暟鎹璞★紝瀹氫箟瀵硅薄鎻忚堪鍔熻兘妯″潡鐩鎬簰闂寸殑閫昏緫緇撴瀯錛屾暟鎹璞¤褰曟ā鍧楀睘鎬у拰鏂規(guī)硶銆?br>鎵鏈夌殑鍔熻兘妯″潡緇撴瀯鎸変竴涓爲(wèi)鐘剁粨鏋勬潵緇勭粐錛岀粨鏋勫叧緋誨涓嬶紝NODE鏄暣涓粨鏋勭殑鏍圭粨鐐癸紝鍏朵笅涓哄瓙鑺傜偣錛岃妭鐐規(guī)寜綾誨瀷鍙垎涓哄疄鑺傜偣錛屽叏灞鑺傜偣錛岃緗妭鐐癸紝鎶借薄鑺傜偣銆?br>#define CF_SIZE 0x00FFFFFF NODE 錛堟牴鑺傜偣錛?br> 鈹溾攢FLOW 錛堟祦鎺у埗妯″潡錛?br> 鈹?nbsp; 鈹溾攢CODEC 錛堣В鐮佹ā鍧楋級 鍦ㄦ墍鏈夊姛鑳芥ā鍧椾腑鍜岀晫闈㈠姞浜や簰鐨勪富瑕佸氨鏄挱鏀炬帶鍒舵ā鍧梥truct node* Player;浣跨敤鏂規(guī)硶濡備笅錛?br>context* p = Context(); 娣誨姞涓涓獟浣撴枃浠跺埌鎾斁妯″潡浣跨敤int PlayerAdd(player* Player,int Index, const tchar_t* Path, const tchar_t* Title); 鏍稿績妯″潡涔熺鐞嗗璇█瀛楃涓詫紝浣跨敤鍑芥暟const tchar_t* LangStr(int Class, int Id);鍜宑onst tchar_t* LangStrDef(int Class, int Id)鍙互寰楀埌瀵瑰簲瀛楃涓詫紝緋葷粺瀛楃涓茶祫婧愭湁涓ょ錛屾爣鍑嗗瓧絎︿覆鍜岀壒孌婂瓧絎﹂泦瀛楃涓層傛爣鍑嗗瓧絎︿覆璧勬簮鏂囦歡鏄伐紼嬬洰褰曚笅鐨刲ang_std.txt鏂囦歡錛岃鏂囦歡瀛楃涓蹭負ASCII瀛楃錛屽彲涓庡叾浠栦唬鐮侀〉瀛楃鍏煎銆傝鏂囦歡璁板綍鐨勬槸鏍稿績妯″潡榪愯鏃墮渶瑕佷嬌鐢ㄧ殑瀛楃涓詫紝Decode鍜孲plite妯″潡鍙互澶勭悊鐨勭紪鐮佹牸寮忓拰鏂囦歡鏍煎紡涔熷湪榪欎釜鏂囦歡涓褰曪紝渚嬪lang_std.txt鏂囦歡涓殑
涓ょ鍔炴硶錛?nbsp;
1銆佸湪[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]涓嬫坊鍔犳敞鍐岄敭銆?nbsp;
2銆佸湪搴旂敤紼嬪簭涓皟鐢ˋctivateDeviceEx銆?nbsp;
鍦ㄤ竴浜涙枃浠朵腑鐢ㄥ垎鍙鋒潵琛ㄧず娉ㄩ噴錛屼緥濡備笅闈㈢殑鍐呭
; @CESYSGEN IF SERVERS_MODULES_HTTPD
; @CESYSGEN ENDIF
鍦?#8220;CESYSGEN...”鍓嶅姞浜?#8220;@”錛屾湁娌℃湁浠涔堢壒鍒殑鍚箟錛?nbsp;
鍦╓INCE鐨勪竴浜涙枃浠朵腑錛岀敤“;”浣滀負娉ㄩ噴騫跺湪娉ㄩ噴鏂囧瓧涓敤@CESYSGEN浣滀負鏍囪錛屽悗闈㈡帴鏉′歡璇彞銆侰efilter.exe宸ュ叿璐熻矗鎸夌収鏉′歡鏉ョ瓫閫夋枃浠跺唴瀹癸紝鎵浠ヤ笉瑕佽交鏄撳湴鍒犻櫎鍖呭惈@CESYSGEN鐨勬敞閲婅鍙ャ?nbsp;
閫氳繃涓插彛寤虹珛ActiveSync鑱旀帴,涓插彛綰跨敤涓夌嚎鐨勫彲浠ュ悧?
涓嶅彲浠ワ紝鍥犱負鐢ㄤ覆鍙e悓姝ユ椂瑕佺敤鍒板叾浣欏彛鐨勭姸鎬併?nbsp;
WINCE鏄惁鏀寔MAPI錛?/strong>
涓嶆敮鎸併俉INCE鑷甫鐨刾mail.exe杞歡涔熶笉鏄緢濂界敤銆傚緩璁嚜寮鍙戦偖浠舵敹鍙戣蔣浠躲傚鏋滈渶瑕佽喘涔癢INCE涓嬮偖浠舵敹鍙戣蔣浠跺彲浠ヨ仈緋繪垜銆?nbsp;
濡備綍鏃嬭漿灞忓箷鏄劇ず鐨勫唴瀹癸紵
渚嬪瓙浠g爜濡備笅錛堝墠鎻愭槸鏄劇ず椹卞姩紼嬪簭鏀寔鏃嬭漿錛夛細
DEVMODE devmode = {0};
devmode.dmSize = sizeof(DEVMODE);
devmode.dmDisplayOrientation = DMDO_90; ///鍨傜洿妯″紡
devmode.dmFields = DM_DISPLAYORIENTATION;
ChangeDisplaySettingsEx(NULL, &devmode, NULL, 0, NULL); ///鏀瑰彉鏄劇ず鐨勮緗?nbsp;
CRect rcWorkArea(0, 0, 320, 240); ///鏁翠釜灞忓箷灝哄
///璁劇疆瀹㈡埛鍖哄ぇ灝忓茍騫挎挱娑堟伅錛岃繖鏍鋒墍鏈夎蔣浠朵篃灝遍殢涔嬫洿鏀規(guī)樉紺?nbsp;
SystemParametersInfo(SPI_SETWORKAREA, 0, (void*)&rcWorkArea, SPIF_SENDCHANGE);
璇烽棶濡備綍淇敼瀛楀艦緙撳瓨鐨勫閲忥紵
[HKEY_LOCAL_MACHINE\System\GDI\GLYPHCACHE]
"limit"=dword:0400
濡備綍寰楀埌浠嶹INCE鍚姩寮濮嬪埌鐜板湪鐨勬椂闂達紵
璋冪敤API GetTickCount錛屽緱鍒扮殑鍊間負32浣嶆暣鏁幫紝鍗曚綅涓烘縐掋?nbsp;
濡備綍璋冪敤WINCE鐨勮蔣閿洏錛?/strong>
璋冪敤API SipShowIM(SIPF_ON)錛屽墠鎻愭槸鍐呮牳鍔犲叆浜嗚蔣閿洏緇勪歡銆?nbsp;
鍩轟簬HIVE鐨勬敞鍐岃〃錛屽浣曞湪緋葷粺鍏抽棴鍓嶄繚瀛樻敞鍐岃〃鐨勬暟鎹埌鏂囦歡system.hv錛?/strong>
璋冪敤API RegFlushKey鍑芥暟銆?nbsp;
浣跨敤VirtualAlloc鍜孷irtualCopy鐨勬椂鍊欓渶瑕佹敞鎰忓摢浜涗簨欏癸紵
1銆乂irtualAlloc鐨勪綔鐢ㄦ槸鐢寵铏氭嫙鍦板潃絀洪棿錛岃繖鑲畾涓嶆槸鏈緇堢殑鐩殑錛屾渶緇堢洰鐨勫彲鑳芥槸鐢寵鐗╃悊鍐呭瓨銆佹槧灝勫瘎瀛樺櫒銆佹彁浜ゆ枃浠剁瓑銆傛病鏈変竴涓洰鐨勪細鍦ㄦ剰铏氭嫙鍦板潃絀洪棿鐨勪綅緗紝鎵浠ュ敖閲忎紶閫掑弬鏁?涓?錛屼篃灝辨槸璁¦INCE鑷姩鍒嗛厤铏氭嫙鍦板潃絀洪棿銆俈irtualAlloc鍒嗛厤鍦板潃絀洪棿瀹為檯涓婃槸浠?4KB涓哄崟浣嶏紝鎵浠ヨ鎸囧畾鐢寵鐨勮櫄鎷熺┖闂寸殑棣栧湴鍧鐨勮瘽錛屽弬鏁?搴旇涓?4KB鐨勬暣鏁板嶏紝鐢寵鐨勯暱搴︿篃搴旇涓?4KB鐨勬暣鏁板嶏紝鍗充嬌浣犱笉闇瑕侀偅涔堝ぇ銆?nbsp;
2銆乂irtualCopy鐨勪富瑕佷綔鐢ㄦ槸鏄犲皠鐗╃悊鍦板潃絀洪棿錛屽鏋滃弬鏁?涓虹墿鐞嗗湴鍧錛岄偅涔堟渶鍚庝竴涓弬鏁拌娣誨姞PAGE_PHYSICAL錛屽弬鏁?蹇呴』鏄?56鐨勬暣鏁板嶃傚鏋滃弬鏁?涓鴻櫄鎷熷湴鍧錛?x80000000浠ヤ笂錛夛紝閭d箞鏈鍚庝竴涓弬鏁板氨涓嶈娣誨姞PAGE_PHYSICAL錛學(xué)INCE鍐呮牳浼氭牴鎹繖涓櫄鎷熷湴鍧鎵懼埌瀵瑰簲鐨勭墿鐞嗗湴鍧銆?nbsp;
椹卞姩紼嬪簭鍜屽簲鐢ㄧ▼搴忎箣闂翠紶閫掓暟鎹椂浣曟椂璋冪敤MapPtrToProcess錛?nbsp;
鍥犱負璁懼綆$悊鍣ㄨ礋璐e姞杞介┍鍔ㄧ▼搴廌LL錛岃繖鎰忓懗鐫褰撳簲鐢ㄧ▼搴忚皟鐢ㄩ┍鍔ㄧ▼搴忔帴鍙e嚱鏁扮殑鏃跺欙紝W(xué)INCE鍐呮牳浼氬皢璋冪敤椹卞姩紼嬪簭鎺ュ彛鍑芥暟鐨勭嚎紼嬭漿縐誨埌璁懼綆$悊鍣ㄧ殑榪涚▼絀洪棿鐒跺悗鎵ц鍏蜂綋鐨勯┍鍔ㄧ▼搴忎唬鐮侊紝搴旂敤紼嬪簭鍜岃澶囩鐞嗗櫒澶勪簬涓や釜榪涚▼絀洪棿錛岃繖灝遍犳垚璁懼綆$悊鍣ㄦ棤娉曡闂簲鐢ㄧ▼搴忎紶閫掔殑鎸囬拡錛堣櫄鎷熷湴鍧錛夛紝鎵浠ュ綋鎴戜滑鍦ㄥ簲鐢ㄧ▼搴忎腑浼犻掓寚閽堢粰嫻侀┍鍔ㄧ▼搴忔帴鍙e嚱鏁版椂錛學(xué)INCE鍐呮牳浠庝腑浣滀簡涓涓湴鍧鏄犲皠錛屼緥濡俁eadFile銆乄riteFile銆丏eviceIoControl鍑芥暟鐨勫弬鏁板嚒鏄寚閽堥兘緇忚繃浜嗘槧灝勬墠浼犻掔粰椹卞姩紼嬪簭錛屾墍浠ュ緢澶氶┍鍔ㄧ▼搴忓紑鍙戣呭茍涓嶄簡瑙e叾涓殑濂ョ灝卞彲浠ョ紪紼嬩簡銆備絾鏄鏋滃弬鏁版槸涓涓寚鍚戜竴涓粨鏋勪綋鐨勬寚閽堬紝鑰岀粨鏋勪綋閲屽寘鎷竴涓垨澶氫釜鎸囬拡錛岄偅涔圵INCE鍐呮牳騫朵笉璐熻矗鏄犲皠錛屾墍浠ュ氨闇瑕佸紑鍙戣呭湪椹卞姩紼嬪簭鎺ュ彛鍑芥暟涓皟鐢ˋPI鍑芥暟MapPtrToProcess鏉ユ槧灝勫湴鍧銆備緥濡傦細pPointer_retval = MapPtrToProcess(pPointer, GetCallerProcess());
濡備綍鍒ゆ柇鍙彃鎷旂殑璁懼鏄惁瀛樺湪錛?/strong>
1銆侀氳繃鏌ユ壘娉ㄥ唽琛ㄧ殑鍊箋傚嚒鏄敱API ActivateDeviceEx鍔犺澆鐨勯┍鍔ㄧ▼搴忛兘鍦╗HKEY_LOCAL_MACHINE\Drivers\Active]閿笅鏈夋敞鍐岄敭錛岄氳繃鏌ユ壘“name”鎴栬呭叾瀹冮敭鍊煎氨鑳藉鎵懼埌銆傝澶囩鐞嗗櫒灝辮皟鐢ㄨ繖涓狝PI銆傚鏋滄槸PCI璁懼錛屽湪娉ㄥ唽琛╗HLM\Drivers\BuiltIn\PCI\Instance]涓嬫煡鎵懼叧閿瓧錛屼緥濡俒HLM\Drivers\BuiltIn\PCI\Instance\WaveDev1]錛岃鏄庨煶棰戦┍鍔ㄥ凡緇忓姞杞姐?nbsp;
2銆佽皟鐢ㄩ┍鍔ㄧ▼搴忔帴鍙e嚱鏁幫紝鏍規(guī)嵁榪斿洖鍊兼垨鑰呮墽琛岀粨鏋滄潵鍒ゆ柇銆?nbsp;
濡備綍鍋氬埌閫氳繃涓插彛榪囨潵鐨勪竴涓俊鍙峰惎鍔ㄨ嚜宸卞紑鍙戠殑搴旂敤紼嬪簭錛?nbsp;
鍒涘緩涓涓嚎紼嬭礋璐g瓑寰呬覆鍙h繃鏉ョ殑淇″彿錛岃皟鐢ˋPI SetCommMask璁劇疆瑕佺瓑寰呯殑淇″彿縐嶇被錛屽叿浣撳彲浠ョ瓑寰呯殑淇″彿縐嶇被鍙傝鍙傛暟2鐨勮鏄庛傜劧鍚庡啀璋冪敤API WaitCommEvent鍑芥暟絳夊緟榪欎釜淇″彿錛屾帴鏀朵箣鍚庡啀璋冪敤API CreateProcess鍚姩搴旂敤紼嬪簭銆?nbsp;
鍦╓INCE涓浣曞彧鑳藉惎鍔ㄥ簲鐢ㄧ▼搴忕殑涓涓疄渚嬶紵
甯哥敤鐨勪袱縐嶅姙娉曪細
1銆佸鏋滃簲鐢ㄧ▼搴忓疄渚嬪垱寤轟簡紿楀彛錛屽彲閫氳繃API FindWindow鍑芥暟閫氳繃紿楀彛綾誨悕鍜岀獥鍙f爣棰樺悕縐版潵鏌ユ壘錛屽墠鎻愭槸緋葷粺鍐呬笉浼氬嚭鐜扮獥鍙e悕縐伴噸澶嶇殑鎯呭喌銆?nbsp;
2銆佸簲鐢ㄧ▼搴忓垵濮嬪寲鐨勬椂鍊欏垱寤轟竴涓簨浠舵垨浜掓枼絳夊唴鏍稿璞★紝鍥犱負鍐呮牳瀵硅薄鏄敱鍐呮牳鍒涘緩錛屽悕縐板湪緋葷粺鍐呭敮涓銆?nbsp;
鑳戒笉鑳借嚜宸辯紪杈戜竴涓暟瀛楃鍚嶆枃浠跺鍏ュ埌鎵嬫満涓婏紝榪欐牱灝卞彲浠ョ敤榪欎釜絳懼悕絳捐嚜宸辯殑紼嬪簭浜嗭紵
WINCE鐨勫唴鏍哥鍚嶆満鍒剁殑鐢ㄩ旀槸闄愬埗闈炴硶鐨勫彲鎵ц妯″潡EXE銆丏LL絳夊湪璁懼涓婅繍琛屻傝姹傚唴鏍哥殑鍔犺澆妯″潡鐢ㄥ叕閽ラ獙璇佽姹傚姞杞界殑EXE銆丏LL鐨勭鍚嶆槸鍚﹀悎娉曪紝鑰岃繖涓叕閽ユ槸鍦ㄥ畾鍒跺唴鏍哥殑鏃跺欏姞榪涘幓鐨勶紝鎵浠ラ櫎鍐呮牳鐨勫畾鍒惰呬互澶栫殑浜烘棤娉曚慨鏀硅繖涓獙璇佹満鍒躲?nbsp;
鎴戞寜鐓х増涓葷殑鏂囩珷銆婂姞瀵哤INCE緋葷粺銆嬮噷鎿嶄綔錛屾彁紺洪敊璇涓嬶細
Error 80090016 during CryptSignHash 1!
Error signing hash
榪欐槸鍥犱負浼犻掍簡鏃犳晥鐨勯挜瀹瑰櫒鍚嶇О錛屼嬌CryptoAPI璋冪敤澶辮觸銆傚簲璇ュ湪浣跨敤signfile宸ュ叿涔嬪墠鍒涘緩涓涓挜瀹瑰櫒錛屽湪妗岄潰Windows涓皟鐢ˋPI CryptAcquireContext鍒涘緩涓涓寚瀹氬悕縐扮殑閽ュ鍣紝鎺ョ潃鍐嶅垱寤轟竴涓鍚嶅瘑閽ュ錛岃繖鏃跺啀浣跨敤signfile宸ュ叿灝卞彲浠ヤ簡銆傛垜鍦ㄦ枃绔犻噷鍐欐垚-kfulinlin鏄洜涓烘垜鍒涘緩閽ュ鍣ㄧ殑鏃跺欐病鏈夋寚瀹氬悕縐幫紝緋葷粺灝遍噰鐢ㄥ綋鍓嶇櫥褰曠殑鐢ㄦ埛鍚嶄負瀹瑰櫒鍚嶃?nbsp;
緙栬瘧閿欒錛欳VTRES : fatal error CVT1102: out of memory; 42 bytes required 錛?/strong>
澶氭暟鎯呭喌涓嬪嚭鐜拌繖縐嶉敊璇槸鍥燛VC鐨刡ug鑰岃搗錛屽簲璇ュ湪瀹夎EVC涔嬪悗灝辯珛鍒誨畨瑁匛VC鐨凷P琛ヤ竵銆傚彟澶栦負浜嗛伩寮BUG錛屼嬌鐢‥VC緙栫▼搴旇鍏繪垚涓浜涗範鎯紝姣斿瀹氭湡澶囦喚宸ョ▼鎵鏈夋枃浠訛紝姣忔緙栬瘧鏃墮噰鐢–lean + Rebuild All錛屾璋冭瘯鏃朵笉瑕佸叧闂ā鎷熷櫒絳夌瓑銆?nbsp;
鍦╓INCE涓嬫槸鍚﹁兘澶熷緱鍒版煇涓榪涚▼浣跨敤鐨勭墿鐞嗗唴瀛樻婚噺錛?/strong>
鐩墠娌″彂鐜版湁榪欐牱涓涓狝PI鑳藉寰楀埌鎸囧畾榪涚▼浣跨敤鐨勭墿鐞嗗唴瀛樻婚噺銆傚彧鏈塆lobalMemoryStatus鑳藉寰楀埌鏁翠釜緋葷粺浣跨敤鐨勭墿鐞嗗唴瀛樻婚噺銆?nbsp;
搴旂敤紼嬪簭濡備綍鎺у埗lcd鐨勪寒搴︼紵濡備綍鑾峰緱鐢墊睜鐨勭數(shù)閲忥紵
浠庡父瑙佺殑騫沖彴濡侴eode銆佷笁鏄烝RM緋誨垪鏉ョ湅錛岀殑紜湪椹卞姩鏂歸潰娌℃湁緇熶竴鐨勬帶鍒禠CD鎴栬呭叾瀹冪綾誨睆騫曚寒搴︾殑鎺ュ彛鍑芥暟錛屾墍浠ュ彧鑳芥牴鎹叿浣撳鉤鍙版彁渚涚殑鎺ュ彛鏉ュ仛銆備粠甯姪鏂囨。鏉ョ湅寰蔣鐨勫甫鏈塂irectDraw鍔熻兘鐨勬樉紺洪┍鍔ㄧ▼搴忕殑紜湁鏍囧噯鐨勫鍔犱寒搴︾殑鎺ュ彛鍑芥暟錛屽叧浜庤儗鏅厜鍙傝鏍囬涓?#8220;Enabling a Backlight”鐨勫府鍔╂枃妗c?nbsp;
鑾峰緱鐢墊睜鐢?shù)閲忔湁鏍囧噯鐨勬帴鍙e嚱鏁癎etSystemPowerStatusEx錛屽墠鎻愭槸椹卞姩紼嬪簭鍜岀‖浠墮兘瑕佹敮鎸併?nbsp;
WINCE鐨剆ocket鍑芥暟濂藉儚涓嶆敮鎸佸彂閫?鎺ユ敹瓚呮椂錛?/strong>
鏄殑錛屾渶鏃╃増鏈殑WINCE鏀寔閫夐」SO_RCVTIMEO銆丼O_SNDTIMEO錛屽悗鏉ュ嵈涓嶆敮鎸佷簡銆?nbsp;
WINCE涓嬪浣曡緗獥鍙f渶澶у寲鍜屾渶灝忓寲錛?/strong>
WINCE鐨勫府鍔╂枃妗e湪浠嬬粛API ShowWindow鍑芥暟鐨勫弬鏁版椂鎸囧嚭SW_MAXIMIZE, SW_MINIMIZE, SW_RESTORE, SW_SHOWDEFAULT, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE閮戒笉琚敮鎸侊紝浣嗗疄闄呬笂騫朵笉瀹屽叏鏄繖鏍鳳紝鍏蜂綋鏉ヨ錛?nbsp;
SW_MAXIMIZE 姣斿師鏉ョ獥鍙eぇ錛屼絾涓嶆槸鏈澶у寲
SW_MINIMIZE 緙栬瘧鎴愬姛錛屼絾鏄笉璧蜂綔鐢?nbsp;
SW_SHOWMAXIMIZED 鏈澶у寲
SW_SHOWMINIMIZED 緙栬瘧鍑洪敊
SW_RESTORE 鑳芥仮澶?nbsp;
SW_SHOWDEFAULT 緙栬瘧鍑洪敊
SW_SHOWMINNOACTIVE 緙栬瘧鍑洪敊
SW_HIDE 鑳藉闅愯棌
濡備綍鐢ㄧ▼搴忚皟鐢ㄦ帶鍒墮潰鏉跨殑瑙︽懜灞忔牎瀵圭▼搴忥紵
涓ょ鍔炴硶錛?nbsp;
1銆佽皟鐢ˋPI TouchCalibrate鍑芥暟
2銆佽皟鐢–reateProcess錛屽弬鏁?涓篖"\\windows\\ctlpnl.exe"錛屽弬鏁?涓篖"cplmain.cpl,9"銆?nbsp;
濡備綍鑾峰緱U鐩樻垨鑰呭叾瀹冪被鍨嬬殑瀛樺偍鍣ㄦ誨閲忓拰鍓╀綑鍙敤瀹歸噺錛?/strong>
璋冪敤API GetStoreInfo寰楀埌鎵囧尯鏁般佹瘡鎵囧尯瀛楄妭鏁幫紝鐩鎬箻鍗蟲槸鎬誨閲忋傝皟鐢ˋPI GetDiskFreeSpaceEx寰楀埌鍓╀綑鍙敤瀹歸噺銆?nbsp;
涓夋槦2440澶存枃浠跺畾涔?define IIC_BASE 0xB1400000 // 54000000錛宒atasheet鏄?4000000錛岄偅涔堟庝箞杞垚0xB1400000錛?/strong>
鐗╃悊鍦板潃鏄犲皠鏂規(guī)硶鍒嗕負涓ょ錛屼竴縐嶉潤鎬佹槧灝勫彟涓縐嶄負鍔ㄦ佹槧灝勩傚湪OEMAddressTable涓畾涔変簡鐗╃悊鍦板潃涓庤櫄鎷熷湴鍧鐨勬槧灝勫叧緋誨睘浜庨潤鎬佹槧灝勶紝鐢╒irtualCopy鏄犲皠灞炰簬鍔ㄦ佹槧灝勶紝閲囩敤鍝鍔炴硶閮藉彲浠ャ傞棶棰樹腑鎻愬埌鐨勫睘浜庨潤鎬佹槧灝勶紝2440鐨凚SP鍦╩ap.a鏂囦歡涓畾涔変簡IIC鎺у埗瀵勫瓨鍣ㄧ殑鐗╃悊璧峰鍦板潃鍜屽搴旂殑铏氭嫙鍦板潃濡備笅錛?nbsp;
DCD 0x91400000, 0x54000000, 1 ;
鍦∣EMAddressTable涓畾涔夌殑铏氭嫙鍦板潃鑼冨洿鍦?x8000 0000鈥?x9FFF FFFF錛岃繖閮ㄥ垎鍙紦瀛橈紝閫傚悎鍐呮牳紼嬪簭鍜屽簲鐢ㄧ▼搴忎嬌鐢紝鍚屾椂WINCE鍐呮牳鍦?xA000 0000鈥?xBFFF FFFF涓槧灝勪簡鍙︿竴浠斤紝鎸囧悜浜嗗悓鏍風(fēng)殑鐗╃悊鍦板潃錛岃繖閮ㄥ垎涓嶅彲緙撳瓨錛岄傚悎椹卞姩紼嬪簭浣跨敤銆備笁鏄烝RM澶勭悊鍣ㄥ甫鏈塋1綰ч珮閫熺紦瀛橈紝鍙紦瀛樹細鎻愰珮鎵ц鏁堢巼銆傚浜庣壒孌婄殑璁懼瀵勫瓨鍣ㄩ傚悎鏄犲皠鍒頒笉鍙紦瀛樼殑铏氭嫙鍦板潃銆?nbsp;
褰撻┍鍔ㄧ▼搴忚皟鐢╒irtualCopy瀵?xB1400000鍦板潃璇誨啓鏃訛紝W(xué)INCE鑷姩灝嗚繖涓湴鍧鍑忓幓0x2000 0000錛屼篃灝辨槸0x91400000錛屽搴旂殑鐗╃悊鍦板潃灝辨槸0x54000000錛屼篃灝辨槸IIC鎺у埗瀵勫瓨鍣ㄧ殑鐗╃悊璧峰鍦板潃銆?nbsp;
鍩轟簬RAM鐨勬敞鍐岃〃濡備綍淇濆瓨鏁版嵁錛?/strong>
璋冪敤API RegCopyFile澶囦喚娉ㄥ唽琛ㄣ傝皟鐢ˋPI RegRestoreFile鎭㈠娉ㄥ唽琛紝鐒跺悗璋冪敤KernelIoControl鐑惎鍔ㄤ嬌鎭㈠鐢熸晥銆?nbsp;
濡備綍闅愯棌鍜屾樉紺簑inCE涓嬫爣鍑嗗澹崇殑浠誨姟鏍忥紵
HANDLE hTaskBar = FindWindow(L"HHTaskBar", NULL);
ShowWindow(hTaskBar, SW_HIDE);
ShowWindow(hTaskBar, SW_SHOWNORMAL);
濡傛灉鑳借WINCE鐨処E嫻忚鍣ㄦ挱鏀緁lash鍔ㄧ敾錛?/strong>
鎾斁flash闇瑕丮acromedia Flash Player SDK錛屽弬瑙乭ttp://www.adobe.com/products/flashplayer_sdk/銆傝繖鍜宺eal player鐩鎬技錛岄兘闇瑕乄INCE騫沖彴鐨凷DK錛岄兘闇瑕佺敵璇楓?nbsp;
WINCE涓嬪唴鏍告ā寮忓拰鐢ㄦ埛妯″紡鏈変粈涔堝尯鍒紵
涓轟簡浣胯鑰呰兘澶熻緇嗕簡瑙INCE鐨勫湴鍧鏄犲皠鍘熺悊榪樻湁涓ょ妯″紡錛屽湪榪欓噷鎴戝垎鍑犱釜閮ㄥ垎璇存槑錛?nbsp;
1銆乄INCE鍐呮牳nk.exe鐨勪換鍔℃槸綆$悊鎿嶄綔緋葷粺鏍稿績鍔熻兘銆傛寜鐓EMAddressTable鐨勬槧灝勮姹傦紝鎵鏈夌墿鐞嗗湴鍧閮芥槧灝勫埌0x80000000浠ヤ笂錛屾墍浠ュ浜庡唴鏍哥▼搴弉k.exe鍜屽唴鏍告ā寮忎笅鐨勭嚎紼嬫潵璇達紝鍙璁塊棶0x80000000浠ヤ笂鐨勬湁鏁堣櫄鎷熷湴鍧緇廙MU灝辮兘澶熻闂墿鐞嗗湴鍧錛屾棤闇鍐嶆槧灝勬槸鍐呮牳妯″紡鐨勪竴涓壒鐐廣傚唴鏍告ā寮忕殑絎簩涓壒鐐規(guī)槸娌℃湁鍦板潃璁塊棶闄愬埗錛屽唴鏍告ā寮忕嚎紼嬪彲浠ヨ闂換浣曟湁鏁堣櫄鎷熷湴鍧錛屾墍璋撴湁鏁堣櫄鎷熷湴鍧鏄寚鏈夊疄闄呬簨鐗╁搴斻?nbsp;
2銆佺敤鎴鋒ā寮忕嚎紼嬪彧鑳借闂?x80000000浠ヤ笅鐨勮櫄鎷熷湴鍧絀洪棿錛學(xué)INCE6.0涔嬪墠鐗堟湰鐨勫唴鏍鎬負姣忎釜榪涚▼鍒掑垎32MB鐨勫湴鍧絀洪棿錛屽湪涓嶈皟鐢ㄧ壒孌婂嚱鏁扮殑鎯呭喌涓嬩笉鑳界浉浜掕闂紝榪欐牱鐨勮璁′嬌寰梂INCE緋葷粺鏇村畨鍏ㄣ佹洿紼沖畾錛岄檺鍒惰闂湴鍧鏄敤鎴鋒ā寮忕殑絎竴涓壒鐐廣傜浜屼釜鐗圭偣灝辨槸闇瑕佸涓灞傛槧灝勶紝濡傛灉綰跨▼瑕佽闂墿鐞嗗唴瀛樼殑璇濋渶瑕佸厛鏄犲皠鍒?x80000000浠ヤ笂錛屽啀緇廙MU璁塊棶鐗╃悊鍐呭瓨鍦板潃銆?nbsp;
WINCE鐨勭嚎紼嬪叿鏈夎漿縐繪э紙鍙傝傾PI GetCallerProcess鐨勮鏄庯紝鏈変竴涓緢濂界殑渚嬪瓙錛夛紝褰撳簲鐢ㄧ▼搴忕殑綰跨▼璋冪敤API鎴栬呰皟鐢ㄩ┍鍔ㄧ▼搴忔帴鍙e嚱鏁版椂錛岃綰跨▼浼氳漿縐誨埌gwes.exe銆乨evice.exe銆乫ilesys.exe絳夎繘紼嬩腑鎵ц錛岃漿縐繪槸鐢盬INCE鍐呮牳鎿嶄綔鐨勶紝瀹冧細淇敼綰跨▼鐨勪笂涓嬫枃錛岃褰曠嚎紼嬬殑褰撳墠榪涚▼銆佽皟鐢ㄨ呰繘紼嬨佹嫢鏈夎呰繘紼嬩笁涓箋?nbsp;
3銆佸鏋滃湪瀹氬埗鍐呮牳鐨勬椂鍊欓夋嫨浜?#8220;Full Kernel Mode”錛岄偅涔堝湪榪欎釜鍐呮牳涓婅繍琛岀殑鎵鏈夌嚎紼嬮兘澶勪簬鍐呮牳妯″紡錛屽嵆浣胯皟鐢⊿etKMode(FALSE)鍚庣嚎紼嬩粛鐒跺叿鏈夊唴鏍告ā寮忕殑鐗圭偣錛岃兘澶熻闂換浣曟湁鏁堢殑铏氭嫙鍦板潃銆傚亣璁劇幇鏈変竴涓?4MB RAM鐨刉INCE浜у搧錛孯AM鏄犲皠浠?x80000000鍒?x84000000錛屽鏋滅嚎紼嬪浜庡唴鏍告ā寮忥紝瀹冨氨鐩存帴鍙互璁塊棶榪欎釜鑼冨洿鐨勮櫄鎷熷湴鍧錛?nbsp;
鍦∣nButton1()涓紪鍐?nbsp;
DWORD oldMode = SetKMode(FALSE);
volatile int *piTemp = (volatile int*)(0x20000000+0x84000000-0x00019000); ///鎴栬?0x84000000-0x00019000)
*piTemp = 12345;
鍦∣nButton2()涓紪鍐?nbsp;
DWORD oldMode = SetKMode(FALSE);
volatile int *piTemp = (volatile int*)(0x20000000+0x84000000-0x00019000); ///鎴栬?0x84000000-0x00019000)
int iTemp = *piTemp;
鍏堝彧鎵цOnButton1()鐒跺悗鍏抽棴紼嬪簭錛屽啀閲嶅惎紼嬪簭鐒跺悗鎵цOnButton2()錛宨Temp浠嶇劧絳変簬12345銆傜粨鏋滆鏄庝簡涓ょ偣錛氬唴鏍告ā寮忕嚎紼嬪彲浠ョ洿鎺ヨ闂?x80000000浠ヤ笂鐨勬湁鏁堣櫄鎷熷湴鍧錛涙垜浠啓鍒癛AM涓殑鏁版嵁娌℃湁涓㈠け錛岃鏄庤櫄鎷熷湴鍧鏈夋晥銆?nbsp;
濡傛灉鍦ㄥ畾鍒跺唴鏍哥殑鏃跺欐病鏈夐夋嫨“Full Kernel Mode”錛岄偅涔堝湪榪欎釜鍐呮牳涓婅繍琛岀殑鎵鏈夌嚎紼嬮兘澶勪簬鐢ㄦ埛妯″紡銆傚彲浠ヨ皟鐢⊿etKMode(TRUE)浣胯皟鐢ㄧ嚎紼嬫殏鏃跺浜庡唴鏍告ā寮忥紝榪樻槸鍘熸潵鐨勫亣璁劇幆澧冿紝鎴戝啀涓句釜渚嬪瓙錛?nbsp;
鍦∣nButton1()涓紪鍐?nbsp;
DWORD oldMode = SetKMode(TRUE);
volatile int *piTemp = (volatile int*)(0x20000000+0x84000000-0x00019000); ///鎴栬?0x84000000-0x00019000)
*piTemp = 12345;
鍦ㄧ敤鎴鋒ā寮忎笅錛屽鏋滀笉璋冪敤SetKMode(TRUE)錛岄偅涔堟墽琛?piTemp = 12345涓瀹氫細寮瑰嚭瀵硅瘽妗嗭紝鎻愮ず鍦板潃璁塊棶闈炴硶錛屽鏋滆皟鐢⊿etKMode(TRUE)灝變笉浼氭彁紺哄湴鍧璁塊棶闈炴硶錛岃屼笖鍦∣nButton2()涓粛鐒惰兘寰楀埌12345榪欎釜鍊箋?nbsp;
閫氳繃榪欎袱涓緥瀛愭垜鐩鎬俊璇昏呰兘澶熷畬鍏ㄤ簡瑙d袱縐嶆ā寮忕殑鍖哄埆浜嗐?nbsp;
4銆乄INCE鎻愪緵浜嗕袱涓嚱鏁癝etKMode鍜孲etProcPermissions錛屽叾涓璖etKMode鑳藉鎶婅皟鐢ㄧ嚎紼嬪垏鎹㈠埌鍐呮牳妯″紡錛岃繕鍙互鍒囨崲鍥炵敤鎴鋒ā寮忋係etProcPermissions + GetCurrentPermissions娣誨姞褰撳墠榪涚▼璁塊棶鏉冮檺緇欒皟鐢ㄧ嚎紼嬶紝SetProcPermissions (0xFFFFFFFF)鑳借璋冪敤綰跨▼璁塊棶鎵鏈夎繘紼嬬┖闂達紝浣嗘槸璋冪敤綰跨▼浠嶇劧澶勪簬鐢ㄦ埛妯″紡銆係etKMode鍜孲etProcPermissions鍑芥暟浣垮緱鐢ㄦ埛妯″紡鐨勭壒鐐逛笉閭d箞鏄庢櫚銆?nbsp;
濡備笂鎵璇翠竴涓簲鐢ㄧ▼搴忕殑綰跨▼鍙兘杞Щ鍒板叾瀹冧袱涓繘紼嬪湴鍧絀洪棿涓鍐欐暟鎹紝鑰屾瘡涓涓嚎紼嬪湪琚垱寤虹殑鏃跺欏彧鏈夎闂垱寤哄畠鐨勮繘紼嬪湴鍧絀洪棿鐨勬潈闄愶紝鎵浠ラ┍鍔ㄧ▼搴忓紑鍙戣呭繀欏誨湪椹卞姩紼嬪簭璇誨啓鏁版嵁鍓嶈皟鐢⊿etKMode鎴栬匰etProcPermissions澧炲姞璋冪敤姝ゅ嚱鏁扮殑綰跨▼璁塊棶鍏跺畠榪涚▼絀洪棿鐨勬潈闄愩傚鏋滀竴涓簲鐢ㄧ▼搴忕殑綰跨▼鍙漿縐誨埌涓涓繘紼嬪湴鍧絀洪棿錛屼竴鑸負璁懼綆$悊鍣ㄨ繘紼媎evice.exe錛岃繖縐嶆儏鍐典笅涓嶅繀澧炲姞綰跨▼璁塊棶鍏跺畠榪涚▼絀洪棿鐨勬潈闄愶紝浣嗗鏋滈┍鍔ㄧ▼搴忔湰韜垱寤轟簡涓涓嚎紼嬶紝閭h繕鏄璋冪敤SetKMode鎴栬匰etProcPermissions澧炲姞鏂扮殑綰跨▼璁塊棶鍏跺畠榪涚▼鐨勬潈闄愮殑錛屽洜涓洪┍鍔ㄧ▼搴忓垱寤虹嚎紼嬫椂錛屽綋鍓嶈繘紼嬩負璁懼綆$悊鍣紝鎵浠ユ柊綰跨▼鍙叿鏈夎闂澶囩鐞嗗櫒榪涚▼絀洪棿鐨勬潈闄愶紝鑰屼笉鍏峰璁塊棶搴旂敤紼嬪簭榪涚▼絀洪棿鐨勬潈闄愩?nbsp;
5銆佸彲鑳戒竴涓紪鍐欒繃綆鍗曠殑嫻侀┍鍔ㄧ殑鍒濆鑰呬細寰堢枒鎯戯紝鍥犱負寮鍙戜竴涓畝鍗曠殑嫻侀┍鍔ㄧ▼搴忔牴鏈笉闇瑕佽皟鐢ㄨ繖浜涘嚱鏁幫紝涔熸病鏈夎皟鐢ㄨ繃MapPtrToProcess錛岄偅鏄洜涓哄鏋滄爣鍑嗘祦椹卞姩鎺ュ彛鍑芥暟鐨勫弬鏁頒負鎸囬拡錛圧eadFile銆乄riteFile銆丏eviceIoControl鍙傛暟閮芥湁鎸囬拡錛夛紝W(xué)INCE鍐呮牳浼氳嚜鍔ㄦ槧灝勬寚閽堝寘鍚殑鍦板潃錛屼絾浠呮鑰屽凡錛屽叾浣欎換浣曟儏鍐甸兘瑕佹眰寮鍙戣呰嚜琛屽鐞嗭紝姣斿嫻佹帴鍙e嚱鏁扮殑鍙傛暟鏄竴涓寚鍚戠粨鏋勪綋鐨勬寚閽圥A錛岃岀粨鏋勪綋涓寘鎷寚閽圥B錛孭B鎸囬拡灝卞繀欏誨湪嫻佹帴鍙e嚱鏁頒腑鏄犲皠錛屾槧灝勫悗鎵嶈兘璁塊棶錛屽惁鍒欏氨浼氶犳垚鍦板潃璁塊棶闈炴硶銆傛墍浠ョ粨鏋勪綋涓瘡涓寚閽堥兘瑕佹槧灝勩?nbsp;
涓轟簡璁╄鑰呰兘浜嗚В鍏朵腑鐨勫師鍥狅紝鎴戜婦涓緥瀛愶細
鍋囪璁懼綆$悊鍣ㄨ鍔犺澆鍒癝lot4錛屽簲鐢ㄧ▼搴廇琚姞杞藉埌Slot 8錛孉鍙湁涓涓富綰跨▼T錛孴寮濮嬫墽琛岋紝鎸夌収WINCE鐨勮瀹氾紝姝h幏寰桟PU鐨勮繘紼嬪繀欏繪槧灝勫埌Slot0錛岄偅涔堝湪鎵ц浠g爜鐨勬椂鍊橝鐨勬墍鏈夎櫄鎷熷湴鍧閮借鍑忓幓涓涓亸縐誨鹼紝涔熷氨鏄?×0x02000000錛孉璋冪敤DeviceIoControl錛屼紶閫掍竴涓寚鍚戜竴涓粨鏋勪綋鐨勬寚閽圔錛岃岃繖涓粨鏋勪綋涓寘鍚竴涓寚閽圕錛屾寚閽圕鍖呭惈鐨勫湴鍧鍋囪涓?x00030000錛屽綋鎵цDeviceIoControl鏃禬INCE鎶婅澶囩鐞嗗櫒鐨勮繘紼嬪湴鍧絀洪棿鏄犲皠鍒癝lot0錛屽洜涓烘斁鍦ㄦ敞鍐岃〃[HKLM\Drivers\BuiltIn]涓嬬殑椹卞姩紼嬪簭鏄敱璁懼綆$悊鍣ㄥ姞杞界殑錛岃嚜鐒墮┍鍔ㄧ▼搴忕殑浠g爜孌佃鍔犺澆鍒拌澶囩鐞嗗櫒榪涚▼絀洪棿錛屼絾鏄嚎紼嬩粛鐒舵槸T錛屾鏃禩鐨勫綋鍓嶆墍鍦ㄨ繘紼嬩負璁懼綆$悊鍣紙CurrentProcess錛夛紝A鍙樻垚浜員鐨勮皟鐢ㄨ呰繘紼嬶紙CallerProcess錛夛紝T鑷姩鍏鋒湁浜嗚闂皟鐢ㄨ呰繘紼嬬┖闂寸殑鏉冮檺銆傝繖鏃惰闂甋lot0涓殑铏氭嫙鍦板潃鍏跺疄璐ㄥ氨鏄闂澶囩鐞嗗櫒鐨勮繘紼嬪湴鍧絀洪棿錛岃鎶婂湴鍧鍔犱笂涓涓亸縐誨鹼紝涔熷氨鏄?×0x02000000錛屾墍浠eviceIoControl璁塊棶鎸囬拡C鍖呭惈鐨勫湴鍧鏃舵湰搴旇鍔犱笂8×0x02000000錛屽嵈鍔犱笂4×0x02000000錛岀粨鏋滃湴鍧騫朵笉鏄澶囩鐞嗗櫒鐨勫悎娉曞尯鍩燂紝緋葷粺灝變細鎻愮ず鍦板潃璁塊棶闈炴硶銆傝屽鏋滃仛浜嗕竴涓槧灝勶紝鎸囬拡C鍖呭惈鐨勫湴鍧灝變細琚姞涓涓紜殑鍋忕Щ鍊鹼紝浣垮湴鍧澶勪簬A鐨勫湴鍧絀洪棿Slot 8涓紝T姝ゆ椂鍏鋒湁璁塊棶A榪涚▼絀洪棿鐨勬潈闄愶紝璁塊棶鍒版紜殑铏氭嫙鍦板潃褰撶劧浼氬緱鍒版紜殑鏁版嵁浜嗐?nbsp;
涓轟粈涔圵INCE鐩綍涓嬬殑渚嬪瓙鐢╞uild+sysgen鑳藉緙栬瘧鎴怑XE鏂囦歡錛岃屾垜娣誨姞鐨勪緥瀛愬氨涓嶈兘緙栬瘧鍛紵
濡傛灉榪欎釜渚嬪瓙鏄竴涓簲鐢ㄧ▼搴忥紝閭d箞鑲畾鍖呮嫭浠g爜鏂囦歡錛?h .c .cpp錛夊拰璧勬簮鏂囦歡錛?rc鍜屽叾瀹冭祫婧愭枃浠訛級錛宐uild宸ュ叿鏍規(guī)嵁source鏂囦歡鍐呭鎶婁唬鐮佹枃浠剁紪璇戞垚lib鏂囦歡錛岃祫婧愭枃浠剁紪璇戞垚.res鏂囦歡錛宻ysgen宸ュ叿鏍規(guī)嵁makefile鏂囦歡鍐呭灝唖ource鏂囦歡涓垪鍑虹殑闇瑕侀摼鎺ョ殑鍚勪釜搴撴枃浠跺悎騫舵垚涓涓狤XE鏂囦歡銆傛墍浠ヨ鍏抽敭鍦ㄤ簬makefile鏂囦歡錛學(xué)INCE鐩綍涓嬪嚒鏄兘澶熺敤build+sysgen緙栬瘧鐨勯兘鍦╩akefile涓湁濡備綍閾炬帴鐨勮緗紝鑰屾垜浠坊鍔犵殑渚嬪瓙褰撶劧娌℃湁鍦╩akefile涓壘鍒板浣曢摼鎺ョ殑璁劇疆錛宯make宸ュ叿灝變細鎻愮ず涓嶇煡閬撳浣曞垱寤恒?nbsp;
pcienum.exe騫蹭粈涔堢敤鐨勶紵
濡傛灉浣犺寮鍙戞煇涓涓狿CI璁懼鐨勯┍鍔ㄧ▼搴忥紝棣栧厛瑕佺煡閬撹繖涓狿CI璁懼鐨勪俊鎭紙濡俈endorID銆丏eviceID銆丅aseClass銆丼ubClass錛夊拰PCI鎬葷嚎鐨勪俊鎭傝繍琛岃繖涓猵cienum.exe灝辮兘寰楀埌鐩稿叧淇℃伅銆俻cienum.exe鎻愪緵浜嗘簮鐮侊紝浣嶇疆\Public\Common\Oak\Drivers\Ceddk\Test\Pcienum銆?nbsp;
wince涓嬪浣曡鎿嶄綔緋葷粺榪涘叆寰呮満妯″紡錛熷張濡備綍鎶婂畠嬋媧伙紵
閫氳繃娉ㄥ唽琛ㄥ氨鍙互璁劇疆錛屽墠鎻愭槸浣犵殑椹卞姩鍜岀‖浠墮兘鏀寔銆傛敞鍐岃〃欏瑰弬瑙佹爣棰樹負“GWES Suspend Time-outs”鐨勫府鍔╂枃妗c?nbsp;
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power]
"BattPowerOff"=dword:300
"ExtPowerOff"=dword:0
"WakeupPowerOff"=dword:60
"ScreenPowerOff"=dword:0
鐜版湁涓涓狦PRS妯″潡錛屽浣曢氳繃GPRS榪炴帴鍒癐nternet錛?/strong>
1銆佸厛鍦ㄥ唴鏍鎬腑鍔犲叆WAN涓嬮潰鐨勫嚑涓粍浠訛紝濡俁AS/PPP銆乀API銆俉INCE閲囩敤unimodem椹卞姩錛屾墍浠ヤ笉蹇呮媴蹇冩病鏈塎odem椹卞姩鐨勬敮鎸併?nbsp;
2銆乄INCE鍚姩鍚庢柊寤轟竴涓嫧鍙瘋繛鎺ワ紝姣斿鍚嶇О鍙?#8220;gprs1”錛岃緭鍏ョ敤鎴峰悕銆佸瘑鐮併佺數(shù)璇濆彿鐮併傜數(shù)璇濆彿鐮佷笉鍚岋紝鎵閲囩敤鐨勬ā寮忎笉涓鏍鳳紝渚嬪“*99#”鏄疓PRS妯″紡錛?#8220;17201”鏄櫘閫氱殑鏁版嵁妯″紡錛岄熷害宸緢澶氾紝浠烽挶涔熷樊寰堝銆?nbsp;
3銆佸紑濮嬭繛鎺ワ紝榪炴帴榪囩▼浼氬湪瀵硅瘽妗嗕腑鏄劇ず錛岀洿鍒版樉紺?#8220;榪炴帴鎴愬姛”銆?nbsp;
4銆佹墦寮嫻忚鍣ㄦ垨鑰呰嚜宸卞紑鍙戠殑閫氳杞歡嫻嬭瘯緗戠粶榪炴帴鎯呭喌銆?nbsp;
5銆佸叧闂繛鎺ャ?nbsp;
6銆佷繚瀛榌HKEY_CURRENT_USER\Comm\RasBook\gprs1]涓嬬殑鎵鏈夋暟鎹紝娣誨姞鍒皃roject.reg涓紝閲嶆柊緙栬瘧鍚庡唴鏍鎬腑灝辨湁浜嗕竴涓嫧鍙瘋繛鎺?#8220;gprs1”銆?nbsp;
7銆佽皟鐢≧AS鍑芥暟鍙互淇敼鎷ㄥ彿榪炴帴“gprs1”鐨勫弬鏁幫紝濡傜敤鎴峰悕銆佸瘑鐮併佺數(shù)璇濆彿鐮侊紝浣嗘槸涓嶈兘淇敼紜歡璁劇疆錛屽娉㈢壒鐜囥佷覆鍙c佹暟鎹綅銆佸仠姝綅絳夈俁AS鍑芥暟榪樿兘澶熸嫧鍙楓佹寕鏂備負浜嗕慨鏀規(guī)嘗鐗圭巼鍙互澶氫繚瀛樺嚑涓嫧鍙瘋繛鎺ワ紝涔熷彲浠ョ洿鎺ヨ皟鐢═API寮鍙戞嫧鍙瘋蔣浠訛紝鍙﹀WINCE鑷甫鐨勬嫧鍙瘋繛鎺ユ槸鏈夋簮鐮佺殑錛屼綅緗湪\PUBLIC\COMMON\OAK\DRIVERS\NETSAMP\CONNMC銆?nbsp;
閲囩敤鍩轟簬HIVE鐨勬敞鍐岃〃濡備綍鍒犻櫎鐢ㄦ埛淇濆瓨鍦ㄦ敞鍐岃〃涓殑鏁版嵁錛屾仮澶嶅埌鍑哄巶鏃剁殑娉ㄥ唽琛紵
鐢ㄦ埛淇敼鐨勬暟鎹繚瀛樺湪user.hv鏂囦歡涓紝鐩存帴鍒犻櫎涓瀹氬け璐ワ紝鎵浠ヤ笉鑳介氳繃鍒犻櫎鏂囦歡瀹炵幇鎭㈠鍑哄巶璁劇疆銆傚井杞冭檻鍒頒簡榪欎釜闂錛屽湪WINCE鍚姩榪囩▼涓璮ilesys.exe鍔犺澆娉ㄥ唽琛ㄦ椂浼氳皟鐢∣EMIoControl鍑芥暟騫朵紶閫掍竴涓狪OCTL錛岃繖涓狪OCTL鍦╬kfuncs.h涓畾涔夊涓嬶細
#define IOCTL_HAL_GET_HIVE_CLEAN_FLAG CTL_CODE(FILE_DEVICE_HAL, 49, METHOD_BUFFERED, FILE_ANY_ACCESS)
filesys.exe浼氬垎鍒紶閫掑弬鏁癏IVECLEANFLAG_SYSTEM鍜孒IVECLEANFLAG_USERS錛屽鏋滆繑鍥炲間負TRUE閭d箞filesys.exe娓呴櫎鍘熸潵鐨勬敞鍐岃〃鏂囦歡錛屽鏋滆繑鍥炲間負FALSE閭d箞filesys.exe淇濈暀鍘熸潵鐨勬敞鍐岃〃鏂囦歡銆傞粯璁INCE騫舵病鏈夊疄鐜拌繖涓狪OCTL錛屾墍浠EM瑕佸垹闄ゆ敞鍐岃〃鏂囦歡灝卞繀欏誨厛緙栧啓榪欎釜IOCTL浠g爜銆備唬鐮佺殑渚嬪瓙鍙弬鑰冩爣棰樹負“IOCTL_HAL_GET_HIVE_CLEAN_FLAG”鐨勫府鍔╂枃妗c傚彟澶栧繀欏誨湪ioctl.h鍜宨octl.c涓や釜鏂囦歡涓紪鍐欒浠g爜銆傚湪ioctl.c鏂囦歡涓壘鍒癱onst OAL_IOCTL_HANDLER g_oalIoCtlTable[]錛屾坊鍔營OCTL鍜屽搴旂殑澶勭悊鍑芥暟銆傝榪涗竴姝ヤ簡瑙h繖涓叏灞鏁扮粍錛屽弬瑙佹爣棰樹負“IOCTL Library”鐨勫府鍔╂枃妗c?nbsp;
濡備綍鍦ㄤ笉鍒犻櫎蹇呰緇勪歡鐨勫墠鎻愪笅鍑忓皬鍐呮牳鏂囦歡闀垮害錛?/strong>
瑕佸噺灝忓唴鏍告枃浠墮暱搴﹂鍏堣鍦ㄤ嬌鐢≒B鐨勫畾鍒跺唴鏍稿悜瀵間腑閫夋嫨鑷畾涔夛紝涔熷氨鏄瀵逛簬姣忎釜緇勪歡閮界敱鑷繁鏉ラ夋嫨錛岃屼笉鏄夋嫨PB鐨勬爣鍑嗛厤緗備絾鍑忓皬鍐呮牳鏂囦歡闀垮害鏈鏈夋晥鏈鐩存帴鐨勫姙娉曟槸緙╁皬瀛椾綋錛屽挨鍏跺浜庝笢浜氬瓧浣擄紝閲囩敤瀛椾綋鍘嬬緝鎶鏈茍涓旈夋嫨鍚堢悊鐨勫瓧搴撴枃浠跺皢鏄庢樉緙╁皬鏂囦歡闀垮害銆?nbsp;
1銆佸湪瀹氬埗鍐呮牳鏃墮夋嫨AGFA AC3 Font Compression緇勪歡銆係YSGEN鍙橀噺涓篠YSGEN_AGFA_FONT銆?nbsp;
2銆佸弬鑰冩爣棰樹負“East Asian Font Versions”鐨勫府鍔╂枃妗o紝浠庝腑閫夋嫨浣犻渶瑕佺殑瀛楀簱鏂囦歡鍔犲埌鍐呮牳涓紝浠庢枃妗e彲浠ョ湅鍑哄姞AC3鍘嬬緝姣斾笉鍔犲帇緙╁湪鏂囦歡闀垮害鏂歸潰宸窛寰堝ぇ銆?nbsp;
濡備綍寰楀埌WAV鏂囦歡鎾斁鐨勬繪椂闂達紵
1銆佺洿鎺ヨ鍙杦av鏂囦歡澶翠俊鎭紝浠庢枃浠惰搗濮嬪湴鍧鍋忕Щ28涓瓧鑺傞暱搴︿負4涓瓧鑺備繚瀛樼殑鏄瘡縐掗挓鎾斁鐨勫瓧鑺傛暟錛屼粠鏂囦歡璧峰鍦板潃鍋忕Щ40涓瓧鑺傞暱搴︿負4涓瓧鑺備繚瀛樼殑鏄0闊蟲暟鎹殑鎬葷殑瀛楄妭鏁幫紝鐩擱櫎灝辨槸鎾斁鏃墮棿銆?nbsp;
2銆佽皟鐢↖GraphBuilder::RenderFile鎵撳紑涓涓獁av鏂囦歡錛岀劧鍚庨氳繃IGraphBuilder寰楀埌IMediaSeeking鎸囬拡錛屽啀璋冪敤IMediaSeeking::GetDuration寰楀埌鎬葷殑鏃墮棿錛堢粨鏋滆闄や互10000000錛夛紝IMediaSeeking::GetCurrentPosition寰楀埌褰撳墠鎾斁鏃墮棿銆?nbsp;
濡備綍鍦―ialog-Based紼嬪簭涓姞鍏enubar錛?/strong>
鍏堣皟鐢–ommandBar_Create鍐嶈皟鐢–ommandBar_InsertMenubar銆?nbsp;
璇烽棶MultiByteToWideChar涓巁T銆丩銆乀EXT鐨勫尯鍒紵
MultiByteToWideChar鍑芥暟杞崲鐨勫璞″彲浠ユ槸甯擱噺涔熷彲浠ユ槸鍙橀噺銆傚叾瀹冨彧鑳借漿鎹㈠父閲忋俖T鍜孴EXT浼氭牴鎹綋鍓嶇郴緇熸槸鍚﹀畾涔塤UNICODE瀹忔潵鍐沖畾鏄惁杞崲錛岃孡灝辨槸杞崲鎴愬瀛楃錛屽綋鐒朵篃鍖呮嫭鍏朵粬綾誨瀷甯擱噺鐨勮漿鎹€?nbsp;
鍦ㄧ敤UBS綰跨紗閫氳繃ActiveSync鍚屾鏈夋晥鐨勬儏鍐典笅錛屽浣曟彃涓奤SB綰跨紗鍚嶹INCE鑷姩涓嶱C鍚屾錛?/strong>
1銆佹柊寤轟竴涓嫧鍙瘋繛鎺ワ紝鍋囪鍚嶇О涓?#8220;usb1”錛岄夋嫨榪炴帴綾誨瀷涓?#8220;鐩存帴榪炴帴”錛屽茍鍦ㄨ繛鎺ヨ澶囬噷閫夋嫨閫氳繃USB綰跨紗榪炴帴銆?nbsp;
2銆佸皢娉ㄥ唽琛╗HKEY_CURRENT_USER\Comm\RasBook\usb1]涓嬬殑鏁版嵁娣誨姞鍒皃roject.reg鎴栬卲latform.reg涓?nbsp;
3銆佸湪[HKEY_CURRENT_USER\ControlPanel\Comm]涓嬫坊鍔犲涓嬶細
"AutoCnct"=dword:1 ///鐩存帴榪炴帴
"Cnct"="usb1" ///榪炴帴鍚嶇О
4銆侀噸鏂扮紪璇戝唴鏍搞備負浜嗚妭鐪佺紪璇戞椂闂翠篃鍙互鍦ㄥ唴鏍稿伐紼嬩笅鎼滅儲*.reg鏂囦歡錛屽皢2銆?姝ラ涓殑娉ㄥ唽琛ㄦ暟鎹坊鍔犲叾涓紝鐒跺悗鐩存帴make image銆?nbsp;
濡備綍閫氳繃榪涚▼鍙ユ焺鏉ヨ幏寰楄榪涚▼鐨勪富紿楀彛鍙ユ焺錛?/strong>
濂藉儚娌℃湁API鑳藉閫氳繃榪涚▼鍙ユ焺鐩存帴鑾峰緱涓葷獥鍙g殑鍙ユ焺錛屽洜涓哄茍闈炴瘡涓簲鐢ㄧ▼搴忛兘甯I銆備絾鏄彲浠ュ弽榪囨潵錛屽厛鏋氫婦褰撳墠緋葷粺鎵鏈変富紿楀彛錛岀劧鍚庢牴鎹瘡涓獥鍙g殑鍙ユ焺璋冪敤GetWindowThreadProcessId鍑芥暟寰楀埌榪涚▼鐨処D錛屽啀璋冪敤OpenProcess寰楀埌榪涚▼鍙ユ焺錛屼笌鐜版湁鐨勮繘紼嬪彞鏌勬瘮杈冦?nbsp;
鎴戝仛鐨勬樉紺洪┍鍔―LL宸茬粡緙栬瘧鎴愬姛浜嗭紝浣嗘槸鍦ㄥ姞杞芥樉紺洪┍鍔ㄧ殑榪囩▼涓脊鍑鴻瘽妗嗭紝鎻愮ず濡備笅錛?nbsp;
unhandled exception in gwes.exe (0xc0000005 access violation)
鎻愮ず鐨勯敊璇斺斿湴鍧璁塊棶闈炴硶錛岃〃鏄庝綘鐨勯┍鍔ㄧ▼搴忎唬鐮佸茍娌℃湁鍦ㄨ鍐欐暟鎹墠娣誨姞SetKMode(TRUE)鎴栬匰etProcPermissions(0xFFFFFFFF)鍑芥暟璁╃嚎紼嬭兘澶熻闂換浣曡繘紼嬬殑鍦板潃絀洪棿銆備綘鍙互璋冪敤 IsBadReadPtr鍜孖sBadWritePtr鍑芥暟媯嫻嬪湴鍧鏄惁鑳藉鍚堟硶璁塊棶銆傜紪鍐欏拰gwes鏈夊叧鐨勯┍鍔ㄧ▼搴忓簲璇ラ鍏堣皟鐢⊿etKMode(TRUE)鎴栬匰etProcPermissions(0xFFFFFFFF)鍑芥暟錛岃繖鏄竴涓ソ涔犳儻銆?nbsp;
璇烽棶鍦ㄥ祵鍏ュ紡緋葷粺涓浣曡緗瓽PRS鎷斿彿鐢ㄧ殑APN錛?/strong>
瀵逛竴涓嫧鍙瘋繛鎺ユ瘮濡?#8220;鎴戠殑榪炴帴”鍗曞嚮榧犳爣鍙抽敭錛屽湪寮瑰嚭鐨勮彍鍗曚腑閫夋嫨“灞炴?#8221;錛岀劧鍚庡崟鍑?#8220;閰嶇疆”鈥?#8220;鎷ㄥ彿閫夐」”錛屽湪“闄勫姞璁劇疆”涓坊鍔燗T鍛戒護濡?#8220;+cgdcont=1,"ip","cmnet"”銆?#8220;cmnet”浣嶇疆鍗充負APN銆?nbsp;
WINCE鐨処P Phone鍔熻兘濡備綍錛?/strong>
WINCE鐨剉oip闇瑕乧-s-c緇撴瀯錛屾棦闇瑕佹湇鍔″櫒鐨勪腑杞紝鑰宻kype閲囩敤絎笁浠2p鎶鏈氨涓嶉渶瑕佷腑杞紝浣嗘槸鍦╣prs涓嬩篃鍋氫笉鍒拌闊蟲祦鐣呫俿kype鏈塸ocket pc鐗堟湰錛屼絾鏄棤綰挎柟闈㈤渶瑕亀lan鎴栬卌dma銆?nbsp;
涓夋槦ARM騫沖彴濡備綍瀹氫箟鑷繁鐨勪腑鏂璉D錛?/strong>
浠3C2410涓轟緥錛屽湪oalintr.h鏂囦歡涓畾涔変腑鏂璉D錛屼篃縐癝YSINTR錛屼緥濡?nbsp;#define SYSINTR_MYINT (SYSINTR_FIRMWARE+20)錛屾渶澶у間笉鑳借秴榪嘢YSINTR_FIRMWARE+23銆傜劧鍚庡湪armint.c鏂囦歡涓壘鍒癘EMInterruptHandler鍑芥暟錛岀敤if (IntPendVal == INTSRC_XXX) 鍒ゆ柇褰撳墠鍙戠敓鐨勪腑鏂簮鍙鳳紝鐒跺悗榪斿洖SYSINTR_MYINT銆傚唴鏍稿垎鍒皟鐢∣EMInterruptDisable錛堢姝㈠綋鍓嶄腑鏂級銆丱EMInterruptDone錛堜腑鏂鐞嗙粨鏉燂級銆丱EMInterruptEnable錛堝綋鍓嶄腑鏂湁鏁堬級涓変釜鍑芥暟錛屽弬鏁伴兘涓轟腑鏂璉D錛屽湪榪欎笁涓嚱鏁頒腑鐢?nbsp;case SYSINTR_MYINT鍒ゆ柇褰撳墠瑕佸鐞嗙殑涓柇銆?nbsp;
濡備綍寮鍙戣蔣浠朵粠PC绔鍒舵枃浠跺埌鍩轟簬WINCE鐨勮澶囷紵
璋冪敤RAPI錛圧emote Application Programming Interface錛夊嚱鏁幫紝姝ゅ嚱鏁伴泦鐢辨闈㈣綆楁満璋冪敤錛岀敱鍩轟簬WINCE鐨勮澶囨墽琛屻備竴鏃﹁繛鎺ヤ笂灝卞彲浠ュ湪妗岄潰璁$畻鏈虹璋冪敤RAPI銆傞氳繃娉ㄥ唽琛ㄨ繕鍙互闄愬埗RAPI鑳藉璁塊棶鐩綍鐨勮寖鍥淬傚叿浣撳弬鑰僐API鍜孯DP錛堣繙紼嬫闈㈠崗璁級銆?nbsp;
璇烽棶濡備綍瀵筃andFlash鍒嗗尯銆佹牸寮忓寲錛?/strong>
浣犵湅鐪媁INCE420\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BOOTPART\bootpart.cpp錛屽湪Eboot涓厛瑕佽皟鐢˙P_LowLevelFormat(
DWORD dwStartBlock, DWORD dwNumBlocks, DWORD dwFlags)鍐峟lash鐨勪竴涓尯鍩熷緩绔嬬┖鐨凪BR,鐒跺悗榪炵畫涓ゆ璋冪敤BP_OpenPartition(DWORD dwStartSector, DWORD dwNumSectors, DWORD dwPartType, BOOL fActive, DWORD dwCreationFlags)鍑芥暟鏉ュ緩绔婤INFS鍜孎AT鍒嗗尯銆傚緩濂藉悗錛屽皢nk.bin鐑у叆binfs鍒嗗尯涓?nbsp;
瑕佸仛涓脊鍑哄璇濇鍏鋒湁 always on top 灞炴э紝濡備綍瀹炵幇錛?/strong>
璋冪敤SetWindowPos(.. , HWND_TOPMOST, ...., SWP_NOACTIVATE)銆?nbsp;
s3c2410錛媁INCE涓嬬綉緇淧ING涓浼氬氨鏂紝濡備綍瑙e喅錛?/strong>
鍘熷洜鍦ㄤ簬涓柇澶勭悊紼嬪簭鎶婂凡緇忎駭鐢熺殑涓柇鏍囧織娓呴櫎鎺変簡錛岃繖鏍峰氨涓㈠け涓嬈′腑鏂傚洜涓哄師椹卞姩閲岄厤緗腑鏂負涓婂崌娌胯Е鍙戯紝涓嬈′腑鏂涪澶卞氨瀵艱嚧涓嶄細鍐嶄駭鐢熶腑鏂俊鍙瘋煩鍙橈紝鍥犱負鍙湁鍦ㄤ腑鏂湇鍔′腑璇誨彇浜哻s8900鐨?nbsp;Interrupt status queue瀵勫瓨鍣ㄥ悗錛屾墠浼氫駭鐢熶笅涓嬈′腑鏂紒瑙e喅鍔炴硶錛?nbsp;
1銆佸湪cfw.c鏂囦歡涓叏灞瀹氫箟BOOL Inited = FALSE
2銆佷慨鏀筄EMInterruptEnable()涓璫ase SYSINTR_ETHER: 涓嬮潰鐨勮鍙ヤ負錛?nbsp;
if(Inited == FALSE)
{
s2410IOP->rEINTPEND = 0x200;
s2410INT->rSRCPND = BIT_EINT8_23;
if (s2410INT->rINTPND & BIT_EINT8_23)
s2410INT->rINTPND = BIT_EINT8_23;
Inited = TRUE;
}
s2410IOP->rEINTMASK &= ~0x200;
s2410INT->rINTMSK &= ~BIT_EINT8_23;
break錛?nbsp;
娉細鏈В鍐沖姙娉曡漿杞戒簬http://stoned.blogchina.com/stoned/3083045.html錛岄潪鎴戞湰浜虹爺絀舵垚鏋溿?nbsp;
宸茬粡鎼滅儲鍒版枃浠訛紝濡備綍鐢–ListBox浠ュ浘鏍囧艦寮忔樉紺哄嚭鏉ワ紵
CListCtrl ListCtrl;
CImageList ImageList;
ImageList.Create(IDB_BITMAP, 48, 2, RGB(0,0,0));
ListCtrl.SetImageList(&ImageList, LVSIL_NORMAL);
ListCtrl.InsertItem(iListIndex, strItem, 1);
濡備綍鏀瑰彉鎺у埗闈㈡澘涓數(shù)婧愬睘鎬у璇濇鐨勫昂瀵?
1銆侀渶瑕佷慨鏀瑰璇濇鐨勫昂瀵告槸鍥犱負瀵硅瘽妗嗘槸浠ヨ祫婧愭柟寮忓姞杞界殑錛屼笉浼氭牴鎹綋鍓嶇郴緇熸樉紺哄垎杈ㄧ巼鑰岃嚜鎴戣皟鑺傚昂瀵搞?nbsp;
2銆佸畨瑁匴INCE鍚庢湁涓浜涚粍浠訛紙feature錛夌殑璧勬簮鏂囦歡*.res灝卞凡緇忔湁浜嗭紝濡傛灉浣犱笉鏀瑰彉錛岄偅涔坆uild鍐呮牳鐨勬椂鍊橮B鍙槸鎶婅繖浜?res澶嶅埗鍒板伐紼嬬洰褰曚笅錛岀劧鍚庝笌*.obj鍚堝茍鎴怑XE銆丏LL銆丆PL銆傛墍浠ヤ慨鏀逛簡.rc鏂囦歡閲岄潰鐨勫璇濇灝哄鍚庤閲嶆柊緙栬瘧.rc鏂囦歡涓?res鏂囦歡錛岀劧鍚庡啀瑕嗙洊鍘熸潵WINCE鑷甫鐨?res鏂囦歡銆?nbsp;
3銆佹敼鍙樺璇濇灝哄鏈変袱縐嶅姙娉曪細涓縐嶆柟娉曟槸鏇存敼緋葷粺瀛椾綋瀛楀彿錛岀郴緇熷瓧浣撶殑瀛楀彿鍙樺寲浼氬獎鍝嶅璇濇鐨勫昂瀵革紝浣嗘槸緙虹偣鏄墍鏈夌郴緇熷瓧浣撴湁鍏崇殑UI閮戒細鏀瑰彉銆傚彟涓縐嶆槸鍦?rc鏂囦歡涓皟鏁村璇濇灝哄錛岀劧鍚庣紪璇戞垚.res鏂囦歡錛屽啀灝?res澶嶅埗鍒板搴旂殑璇█鐩綍閲岋紝姣斿鐩綍鍚嶄負0804錛堜腑鏂囷級錛屽啀鎵цRebuild鍛戒護閲嶆柊緙栬瘧鍐呮牳錛屾垨鑰呮墽琛宻ysgen錛媌uild銆傚湪鐮旂┒涓垜鍙戠幇.res鏂囦歡铏界劧鑳藉鐩存帴鐢‥VC鎵撳紑銆佷慨鏀廣佷繚瀛橈紝浣嗘槸鍜屽叾瀹僌bj閾炬帴鎴怑XE銆丏LL銆丆PL鍚庡茍涓嶈兘榪愯錛屾墍浠ヨ繕鏄緩璁鑰呯敤CE鑷甫鐨剅c宸ュ叿緙栬瘧鏈濂姐傝鑰呭彲鍦≒B鐨勫懡浠よ涓敭鍏?#8220;rc /?”浜嗚Вrc.exe宸ュ叿鐨勭敤閫斿拰鍙傛暟銆?nbsp;
浣跨敤EVC build涔嬪悗榪炴帴妯℃嫙鍣ㄧ殑鏃跺欙紝鎻愮ずdownload file絳変簡涓浼氬張鍑虹幇download failed錛?/strong>
涓鑸繖鏍風(fēng)殑闂浠庝笅闈㈠嚑涓楠よВ鍐籌細
1銆佸鏋滀箣鍓嶈兘鍚姩妯℃嫙鍣ㄨ岀幇鍦ㄤ笉鑳斤紝閭d箞鍏坈lean鐒跺悗閲嶅惎璁$畻鏈哄啀build銆?nbsp;
2銆佸鏋滃紑鍙戠殑涓繪満涓篧INXP+SP2錛屽彲鑳藉瓨鍦ㄤ笌EVC妯℃嫙鍣ㄤ笉鍏煎鐨勬儏鍐碉紝媯鏌:\boot.ini錛屽皢/noexecute=optin鏀逛負/execute=optin銆?nbsp;
3銆佹鏌ヤ綘鐨勬ā鎷熷櫒鏄惁鑳借繍琛岋紝鍋囪浣犳鐢ㄧ殑SDK鍚嶇О涓篗YSDK錛屽崟鍑昏彍鍗晅ools鈥攃onfigure platform manager錛岄夋嫨MYSDK鈥擬YSDK emulator錛屽啀鍗曞嚮properties鈥攖est錛岀湅鐪嬫ā鎷熷櫒鏄惁鑳藉鍚姩錛屽鏋滆兘鍚姩閭i棶棰樺氨涓嶅ぇ銆?nbsp;
4銆佸崟鍑昏彍鍗昩uild鈥攗pdate remote output files錛岀湅鐪嬫ā鎷熷櫒鏄惁鑳藉鍚姩銆?nbsp;
5銆佸鏋滀笂榪板姙娉曞潎涓嶈錛屽叧闂璄VC鐒跺悗閲嶆柊寤虹珛涓涓柊鐨勫伐紼嬶紝緙栬瘧錛岀湅鐪嬫ā鎷熷櫒鏄惁鑳藉鍚姩錛屽鏋滆兘鍚姩璇存槑鍘熸潵宸ョ▼鍑轟簡闂錛屾渶濂芥仮澶嶅師宸ョ▼鐨勫浠姐?nbsp;
濡備綍璁劇疆鑳藉鑷姩鎷ㄥ彿銆佺姝㈣嚜鍔ㄦ嫧鍙鳳紵
鍦╗HKEY_LOCAL_MACHINE\Comm\Autodial]涓嬫槸鑷姩鎷ㄥ彿鐨勬敞鍐岃〃璁劇疆銆?nbsp;
Enabled=DWORD:1 ///鏄惁鑳藉鑷姩鎷ㄥ彿
FailRetryWaitMS=DWORD ///濡傛灉澶辮觸鍐嶆鎷ㄥ彿鐨勭瓑寰呮椂闂?nbsp;
RasEntryName1= REG_SZ ///鑷姩鎷ㄥ彿閲囩敤鐨勬嫧鍙瘋繛鎺ュ悕縐?nbsp;
鏇村緇嗚妭璇峰弬鑰冩爣棰樹負“Auto Dial Registry Settings”鐨勫府鍔╂枃妗c?nbsp;
]]>
棰勫鐞嗗櫒錛圥reprocessor錛?/strong>
1 . 鐢ㄩ澶勭悊鎸囦護#define 澹版槑涓涓父鏁幫紝鐢ㄤ互琛ㄦ槑1騫翠腑鏈夊灝戠錛堝拷鐣ラ棸騫撮棶棰橈級
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
鎴戝湪榪欐兂鐪嬪埌鍑犱歡浜嬫儏錛?br> 1) #define 璇硶鐨勫熀鏈煡璇嗭紙渚嬪錛氫笉鑳戒互鍒嗗彿緇撴潫錛屾嫭鍙風(fēng)殑浣跨敤錛岀瓑絳夛級
2)鎳傚緱棰勫鐞嗗櫒灝嗕負浣犺綆楀父鏁拌〃杈懼紡鐨勫鹼紝鍥犳錛岀洿鎺ュ啓鍑轟綘鏄浣曡綆椾竴騫翠腑鏈夊灝戠鑰屼笉鏄綆楀嚭瀹為檯鐨勫鹼紝鏄洿娓呮櫚鑰屾病鏈変唬浠風(fēng)殑銆?br> 3) 鎰忚瘑鍒拌繖涓〃杈懼紡灝嗕嬌涓涓?6浣嶆満鐨勬暣鍨嬫暟婧㈠嚭-鍥犳瑕佺敤鍒伴暱鏁村瀷絎﹀彿L,鍛婅瘔緙栬瘧鍣ㄨ繖涓父鏁版槸鐨勯暱鏁村瀷鏁般?br> 4) 濡傛灉浣犲湪浣犵殑琛ㄨ揪寮忎腑鐢ㄥ埌UL錛堣〃紺烘棤絎﹀彿闀挎暣鍨嬶級錛岄偅涔堜綘鏈変簡涓涓ソ鐨勮搗鐐廣傝浣忥紝絎竴鍗拌薄寰堥噸瑕併?br>
2 . 鍐欎竴涓?鏍囧噯"瀹廙IN 錛岃繖涓畯杈撳叆涓や釜鍙傛暟騫惰繑鍥炶緝?yōu)畯鐨勪竴涓?br> #define MIN(A,B) 錛堬紙A錛?<= (B) ? (A) : (B))
榪欎釜嫻嬭瘯鏄負涓嬮潰鐨勭洰鐨勮岃鐨勶細
1) 鏍囪瘑#define鍦ㄥ畯涓簲鐢ㄧ殑鍩烘湰鐭ヨ瘑銆傝繖鏄緢閲嶈鐨勩傚洜涓哄湪 宓屽叆(inline)鎿嶄綔絎?鍙樹負鏍囧噯C鐨勪竴閮ㄥ垎涔嬪墠錛屽畯鏄柟渚夸駭鐢熷祵鍏ヤ唬鐮佺殑鍞竴鏂規(guī)硶錛屽浜庡祵鍏ュ紡緋葷粺鏉ヨ錛屼負浜嗚兘杈懼埌瑕佹眰鐨勬ц兘錛屽祵鍏ヤ唬鐮佺粡甯告槸蹇呴』鐨勬柟娉曘?br> 2)涓夐噸鏉′歡鎿嶄綔絎︾殑鐭ヨ瘑銆傝繖涓搷浣滅瀛樺湪C璇█涓殑鍘熷洜鏄畠浣垮緱緙栬瘧鍣ㄨ兘浜х敓姣攊f-then-else鏇翠紭鍖栫殑浠g爜錛屼簡瑙h繖涓敤娉曟槸寰堥噸瑕佺殑銆?br> 3) 鎳傚緱鍦ㄥ畯涓皬蹇冨湴鎶婂弬鏁扮敤鎷彿鎷搗鏉?br> 4) 鎴戜篃鐢ㄨ繖涓棶棰樺紑濮嬭璁哄畯鐨勫壇浣滅敤錛屼緥濡傦細褰撲綘鍐欎笅闈㈢殑浠g爜鏃朵細鍙戠敓浠涔堜簨錛?br> least = MIN(*p++, b);
3. 棰勫鐞嗗櫒鏍囪瘑#error鐨勭洰鐨勬槸浠涔堬紵
濡傛灉浣犱笉鐭ラ亾絳旀錛岃鐪嬪弬鑰冩枃鐚?銆傝繖闂瀵瑰尯鍒嗕竴涓甯哥殑浼欒鍜屼竴涓功鍛嗗瓙鏄緢鏈夌敤鐨勩傚彧鏈変功鍛嗗瓙鎵嶄細璇籆璇█璇炬湰鐨勯檮褰曞幓鎵懼嚭璞¤繖縐嶉棶棰樼殑絳旀銆傚綋鐒跺鏋滀綘涓嶆槸鍦ㄦ壘涓涓功鍛嗗瓙錛岄偅涔堝簲璇曡呮渶濂藉笇鏈涜嚜宸變笉瑕佺煡閬撶瓟妗堛?br>
姝誨驚鐜紙Infinite loops錛?/strong>
4. 宓屽叆寮忕郴緇熶腑緇忓父瑕佺敤鍒版棤闄愬驚鐜紝浣犳庝箞鏍風(fēng)敤C緙栧啓姝誨驚鐜憿錛?br> 榪欎釜闂鐢ㄥ嚑涓В鍐蟲柟妗堛傛垜棣栭夌殑鏂規(guī)鏄細
while(1)
{
}
涓浜涚▼搴忓憳鏇村枩嬈㈠涓嬫柟妗堬細
for(;;)
{
}
榪欎釜瀹炵幇鏂瑰紡璁╂垜涓洪毦錛屽洜涓鴻繖涓娉曟病鏈夌‘鍒囪〃杈懼埌搴曟庝箞鍥炰簨銆傚鏋滀竴涓簲璇曡呯粰鍑鴻繖涓綔涓烘柟妗堬紝鎴戝皢鐢ㄨ繖涓綔涓轟竴涓満浼氬幓鎺㈢┒浠栦滑榪欐牱鍋氱殑鍩烘湰鍘熺悊銆傚鏋滀粬浠殑鍩烘湰絳旀鏄細"鎴戣鏁欑潃榪欐牱鍋氾紝浣嗕粠娌℃湁鎯沖埌榪囦負浠涔堛?榪欎細緇欐垜鐣欎笅涓涓潖鍗拌薄銆?br>
絎笁涓柟妗堟槸鐢?goto
Loop:
...
goto Loop;
搴旇瘯鑰呭緇欏嚭涓婇潰鐨勬柟妗堬紝榪欒鏄庢垨鑰呬粬鏄竴涓眹緙栬璦紼嬪簭鍛橈紙榪欎篃璁告槸濂戒簨錛夋垨鑰呬粬鏄竴涓兂榪涘叆鏂伴鍩熺殑BASIC/FORTRAN紼嬪簭鍛樸?br>
鏁版嵁澹版槑錛圖ata declarations錛?/strong>
5. 鐢ㄥ彉閲廰緇欏嚭涓嬮潰鐨勫畾涔?br> a) 涓涓暣鍨嬫暟錛圓n integer錛?
b)涓涓寚鍚戞暣鍨嬫暟鐨勬寚閽堬紙 A pointer to an integer錛?
c)涓涓寚鍚戞寚閽堢殑鐨勬寚閽堬紝瀹冩寚鍚戠殑鎸囬拡鏄寚鍚戜竴涓暣鍨嬫暟錛?A pointer to a pointer to an intege錛塺
d)涓涓湁10涓暣鍨嬫暟鐨勬暟緇勶紙 An array of 10 integers錛?
e) 涓涓湁10涓寚閽堢殑鏁扮粍錛岃鎸囬拡鏄寚鍚戜竴涓暣鍨嬫暟鐨勩傦紙An array of 10 pointers to integers錛?
f) 涓涓寚鍚戞湁10涓暣鍨嬫暟鏁扮粍鐨勬寚閽堬紙 A pointer to an array of 10 integers錛?
g) 涓涓寚鍚戝嚱鏁扮殑鎸囬拡錛岃鍑芥暟鏈変竴涓暣鍨嬪弬鏁板茍榪斿洖涓涓暣鍨嬫暟錛圓 pointer to a function that takes an integer as an argument and returns an integer錛?
h) 涓涓湁10涓寚閽堢殑鏁扮粍錛岃鎸囬拡鎸囧悜涓涓嚱鏁幫紝璇ュ嚱鏁版湁涓涓暣鍨嬪弬鏁板茍榪斿洖涓涓暣鍨嬫暟錛?An array of ten pointers to functions that take an integer argument and return an integer 錛?br>
絳旀鏄細
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer
浜轟滑緇忓父澹扮О榪欓噷鏈夊嚑涓棶棰樻槸閭g瑕佺炕涓涓嬩功鎵嶈兘鍥炵瓟鐨勯棶棰橈紝鎴戝悓鎰忚繖縐嶈娉曘傚綋鎴戝啓榪欑瘒鏂囩珷鏃訛紝涓轟簡紜畾璇硶鐨勬紜э紝鎴戠殑紜煡浜嗕竴涓嬩功銆備絾鏄綋鎴戣闈㈣瘯鐨勬椂鍊欙紝鎴戞湡鏈涜闂埌榪欎釜闂錛堟垨鑰呯浉榪戠殑闂錛夈傚洜涓哄湪琚潰璇曠殑榪欐鏃墮棿閲岋紝鎴戠‘瀹氭垜鐭ラ亾榪欎釜闂鐨勭瓟妗堛傚簲璇曡呭鏋滀笉鐭ラ亾鎵鏈夌殑絳旀錛堟垨鑷沖皯澶ч儴鍒嗙瓟妗堬級錛岄偅涔堜篃灝辨病鏈変負榪欐闈㈣瘯鍋氬噯澶囷紝濡傛灉璇ラ潰璇曡呮病鏈変負榪欐闈㈣瘯鍋氬噯澶囷紝閭d箞浠栧張鑳戒負浠涔堝嚭鍑嗗鍛紵
Static
6. 鍏抽敭瀛梥tatic鐨勪綔鐢ㄦ槸浠涔堬紵
榪欎釜綆鍗曠殑闂寰堝皯鏈変漢鑳藉洖絳斿畬鍏ㄣ傚湪C璇█涓紝鍏抽敭瀛梥tatic鏈変笁涓槑鏄劇殑浣滅敤錛?br> 1)鍦ㄥ嚱鏁頒綋錛屼竴涓澹版槑涓洪潤鎬佺殑鍙橀噺鍦ㄨ繖涓鍑芥暟琚皟鐢ㄨ繃紼嬩腑緇存寔鍏跺間笉鍙樸?br> 2) 鍦ㄦā鍧楀唴錛堜絾鍦ㄥ嚱鏁頒綋澶栵級錛屼竴涓澹版槑涓洪潤鎬佺殑鍙橀噺鍙互琚ā鍧楀唴鎵鐢ㄥ嚱鏁拌闂紝浣嗕笉鑳借妯″潡澶栧叾瀹冨嚱鏁拌闂傚畠鏄竴涓湰鍦扮殑鍏ㄥ眬鍙橀噺銆?br> 3) 鍦ㄦā鍧楀唴錛屼竴涓澹版槑涓洪潤鎬佺殑鍑芥暟鍙彲琚繖涓妯″潡鍐呯殑鍏跺畠鍑芥暟璋冪敤銆傞偅灝辨槸錛岃繖涓嚱鏁拌闄愬埗鍦ㄥ0鏄庡畠鐨勬ā鍧楃殑鏈湴鑼冨洿鍐呬嬌鐢ㄣ?br>
澶у鏁板簲璇曡呰兘姝g‘鍥炵瓟絎竴閮ㄥ垎錛屼竴閮ㄥ垎鑳芥紜洖絳旂浜岄儴鍒嗭紝鍚屾槸寰堝皯鐨勪漢鑳芥噦寰楃涓夐儴鍒嗐傝繖鏄竴涓簲璇曡呯殑涓ラ噸鐨勭己鐐癸紝鍥犱負浠栨樉鐒朵笉鎳傚緱鏈湴鍖栨暟鎹拰浠g爜鑼冨洿鐨勫ソ澶勫拰閲嶈鎬с?br>
Const
7錛庡叧閿瓧const鏈変粈涔堝惈鎰忥紵
鎴戝彧瑕佷竴鍚埌琚潰璇曡呰錛?const鎰忓懗鐫甯告暟"錛屾垜灝辯煡閬撴垜姝e湪鍜屼竴涓笟浣欒呮墦浜ら亾銆傚幓騫碊an Saks宸茬粡鍦ㄤ粬鐨勬枃绔犻噷瀹屽叏姒傛嫭浜哻onst鐨勬墍鏈夌敤娉曪紝鍥犳ESP(璇戣咃細Embedded Systems Programming)鐨勬瘡涓浣嶈鑰呭簲璇ラ潪甯哥啛鎮(zhèn)塩onst鑳藉仛浠涔堝拰涓嶈兘鍋氫粈涔?濡傛灉浣犱粠娌℃湁璇誨埌閭g瘒鏂囩珷錛屽彧瑕佽兘璇村嚭const鎰忓懗鐫"鍙"灝卞彲浠ヤ簡銆傚敖綆¤繖涓瓟妗堜笉鏄畬鍏ㄧ殑絳旀錛屼絾鎴戞帴鍙楀畠浣滀負涓涓紜殑絳旀銆傦紙濡傛灉浣犳兂鐭ラ亾鏇磋緇嗙殑絳旀錛屼粩緇嗚涓涓婼aks鐨勬枃绔犲惂銆傦級
濡傛灉搴旇瘯鑰呰兘姝g‘鍥炵瓟榪欎釜闂錛屾垜灝嗛棶浠栦竴涓檮鍔犵殑闂錛?br> 涓嬮潰鐨勫0鏄庨兘鏄粈涔堟剰鎬濓紵
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
/******/
鍓嶄袱涓殑浣滅敤鏄竴鏍鳳紝a鏄竴涓父鏁村瀷鏁般傜涓変釜鎰忓懗鐫a鏄竴涓寚鍚戝父鏁村瀷鏁扮殑鎸囬拡錛堜篃灝辨槸錛屾暣鍨嬫暟鏄笉鍙慨鏀圭殑錛屼絾鎸囬拡鍙互錛夈傜鍥涗釜鎰忔漚鏄竴涓寚鍚戞暣鍨嬫暟鐨勫父鎸囬拡錛堜篃灝辨槸璇達紝鎸囬拡鎸囧悜鐨勬暣鍨嬫暟鏄彲浠ヤ慨鏀圭殑錛屼絾鎸囬拡鏄笉鍙慨鏀圭殑錛夈傛渶鍚庝竴涓剰鍛崇潃a鏄竴涓寚鍚戝父鏁村瀷鏁扮殑甯告寚閽堬紙涔熷氨鏄錛屾寚閽堟寚鍚戠殑鏁村瀷鏁版槸涓嶅彲淇敼鐨勶紝鍚屾椂鎸囬拡涔熸槸涓嶅彲淇敼鐨勶級銆傚鏋滃簲璇曡呰兘姝g‘鍥炵瓟榪欎簺闂錛岄偅涔堜粬灝辯粰鎴戠暀涓嬩簡涓涓ソ鍗拌薄銆傞『甯︽彁涓鍙ワ紝涔熻浣犲彲鑳戒細闂紝鍗充嬌涓嶇敤鍏抽敭瀛?const錛屼篃榪樻槸鑳藉緢瀹規(guī)槗鍐欏嚭鍔熻兘姝g‘鐨勭▼搴忥紝閭d箞鎴戜負浠涔堣繕瑕佸姝ょ湅閲嶅叧閿瓧const鍛紵鎴戜篃濡備笅鐨勫嚑涓嬬悊鐢憋細
1) 鍏抽敭瀛梒onst鐨勪綔鐢ㄦ槸涓虹粰璇諱綘浠g爜鐨勪漢浼犺揪闈炲父鏈夌敤鐨勪俊鎭紝瀹為檯涓婏紝澹版槑涓涓弬鏁頒負甯擱噺鏄負浜嗗憡璇変簡鐢ㄦ埛榪欎釜鍙傛暟鐨勫簲鐢ㄧ洰鐨勩傚鏋滀綘鏇捐姳寰堝鏃墮棿娓呯悊鍏跺畠浜虹暀涓嬬殑鍨冨溇錛屼綘灝變細寰堝揩瀛︿細鎰熻阿榪欑偣澶氫綑鐨勪俊鎭傦紙褰撶劧錛屾噦寰楃敤const鐨勭▼搴忓憳寰堝皯浼氱暀涓嬬殑鍨冨溇璁╁埆浜烘潵娓呯悊鐨勩傦級
2) 閫氳繃緇欎紭鍖栧櫒涓浜涢檮鍔犵殑淇℃伅錛屼嬌鐢ㄥ叧閿瓧const涔熻鑳戒駭鐢熸洿绱у噾鐨勪唬鐮併?br> 3) 鍚堢悊鍦頒嬌鐢ㄥ叧閿瓧const鍙互浣跨紪璇戝櫒寰堣嚜鐒跺湴淇濇姢閭d簺涓嶅笇鏈涜鏀瑰彉鐨勫弬鏁幫紝闃叉鍏惰鏃犳剰鐨勪唬鐮佷慨鏀廣傜畝鑰岃█涔嬶紝榪欐牱鍙互鍑忓皯bug鐨勫嚭鐜般?br>
Volatile
8. 鍏抽敭瀛梫olatile鏈変粈涔堝惈鎰?騫剁粰鍑轟笁涓笉鍚岀殑渚嬪瓙銆?br> 涓涓畾涔変負volatile鐨勫彉閲忔槸璇磋繖鍙橀噺鍙兘浼氳鎰忔兂涓嶅埌鍦版敼鍙橈紝榪欐牱錛岀紪璇戝櫒灝變笉浼氬幓鍋囪榪欎釜鍙橀噺鐨勫間簡銆傜簿紜湴璇村氨鏄紝浼樺寲鍣ㄥ湪鐢ㄥ埌榪欎釜鍙橀噺鏃跺繀欏繪瘡嬈¢兘灝忓績鍦伴噸鏂拌鍙栬繖涓彉閲忕殑鍊鹼紝鑰屼笉鏄嬌鐢ㄤ繚瀛樺湪瀵勫瓨鍣ㄩ噷鐨勫浠姐備笅闈㈡槸volatile鍙橀噺鐨勫嚑涓緥瀛愶細
1) 騫惰璁懼鐨勭‖浠跺瘎瀛樺櫒錛堝錛氱姸鎬佸瘎瀛樺櫒錛?br> 2) 涓涓腑鏂湇鍔″瓙紼嬪簭涓細璁塊棶鍒扮殑闈炶嚜鍔ㄥ彉閲?Non-automatic variables)
3) 澶氱嚎紼嬪簲鐢ㄤ腑琚嚑涓換鍔″叡浜殑鍙橀噺
鍥炵瓟涓嶅嚭榪欎釜闂鐨勪漢鏄笉浼氳闆囦劍鐨勩傛垜璁や負榪欐槸鍖哄垎C紼嬪簭鍛樺拰宓屽叆寮忕郴緇熺▼搴忓憳鐨勬渶鍩烘湰鐨勯棶棰樸傛悶宓屽叆寮忕殑瀹朵紮浠粡甯稿悓紜歡銆佷腑鏂丷TOS絳夌瓑鎵撲氦閬擄紝鎵鏈夎繖浜涢兘瑕佹眰鐢ㄥ埌volatile鍙橀噺銆備笉鎳傚緱volatile鐨勫唴瀹瑰皢浼氬甫鏉ョ伨闅俱?br> 鍋囪琚潰璇曡呮紜湴鍥炵瓟浜嗚繖鏄棶棰橈紙鍡紝鎬鐤戞槸鍚︿細鏄繖鏍鳳級錛屾垜灝嗙◢寰繁絀朵竴涓嬶紝鐪嬩竴涓嬭繖瀹朵紮鏄笉鏄洿姝f噦寰梫olatile瀹屽叏鐨勯噸瑕佹с?br> 1)涓涓弬鏁版棦鍙互鏄痗onst榪樺彲浠ユ槸volatile鍚楋紵瑙i噴涓轟粈涔堛?br> 2); 涓涓寚閽堝彲浠ユ槸volatile 鍚楋紵瑙i噴涓轟粈涔堛?br> 3); 涓嬮潰鐨勫嚱鏁版湁浠涔堥敊璇細
int square(volatile int *ptr)
{
return *ptr * *ptr;
}
涓嬮潰鏄瓟妗堬細
1)鏄殑銆備竴涓緥瀛愭槸鍙鐨勭姸鎬佸瘎瀛樺櫒銆傚畠鏄痸olatile鍥犱負瀹冨彲鑳借鎰忔兂涓嶅埌鍦版敼鍙樸傚畠鏄痗onst鍥犱負紼嬪簭涓嶅簲璇ヨ瘯鍥懼幓淇敼瀹冦?br> 2); 鏄殑銆傚敖綆¤繖騫朵笉寰堝父瑙併備竴涓緥瀛愭槸褰撲竴涓腑鏈嶅姟瀛愮▼搴忎慨璇ヤ竴涓寚鍚戜竴涓猙uffer鐨勬寚閽堟椂銆?br> 3) 榪欐浠g爜鏈夌偣鍙樻併傝繖孌典唬鐮佺殑鐩殑鏄敤鏉ヨ繑鎸囬拡*ptr鎸囧悜鍊肩殑騫蟲柟錛屼絾鏄紝鐢變簬*ptr鎸囧悜涓涓獀olatile鍨嬪弬鏁幫紝緙栬瘧鍣ㄥ皢浜х敓綾諱技涓嬮潰鐨勪唬鐮侊細
int square(volatile int *ptr)
{
int a,b;
a = *ptr;
b = *ptr;
return a * b;
}
鐢變簬*ptr鐨勫煎彲鑳借鎰忔兂涓嶅埌鍦拌鍙橈紝鍥犳a鍜宐鍙兘鏄笉鍚岀殑銆傜粨鏋滐紝榪欐浠g爜鍙兘榪斾笉鏄綘鎵鏈熸湜鐨勫鉤鏂瑰鹼紒姝g‘鐨勪唬鐮佸涓嬶細
long square(volatile int *ptr)
{
int a;
a = *ptr;
return a * a;
}
浣嶆搷浣滐紙Bit manipulation錛?/strong>
9. 宓屽叆寮忕郴緇熸繪槸瑕佺敤鎴峰鍙橀噺鎴栧瘎瀛樺櫒榪涜浣嶆搷浣溿傜粰瀹氫竴涓暣鍨嬪彉閲廰錛屽啓涓ゆ浠g爜錛岀涓涓緗產(chǎn)鐨刡it 3錛岀浜屼釜娓呴櫎a 鐨刡it 3銆傚湪浠ヤ笂涓や釜鎿嶄綔涓紝瑕佷繚鎸佸叾瀹冧綅涓嶅彉銆?br> 瀵硅繖涓棶棰樻湁涓夌鍩烘湰鐨勫弽搴?br> 1)涓嶇煡閬撳浣曚笅鎵嬨傝琚潰鑰呬粠娌″仛榪囦換浣曞祵鍏ュ紡緋葷粺鐨勫伐浣溿?br> 2) 鐢╞it fields銆侭it fields鏄鎵斿埌C璇█姝昏鐨勪笢瑗匡紝瀹冧繚璇佷綘鐨勪唬鐮佸湪涓嶅悓緙栬瘧鍣ㄤ箣闂存槸涓嶅彲縐繪鐨勶紝鍚屾椂涔熶繚璇佷簡鐨勪綘鐨勪唬鐮佹槸涓嶅彲閲嶇敤鐨勩傛垜鏈榪戜笉騫哥湅鍒?Infineon涓哄叾杈冨鏉傜殑閫氫俊鑺墖鍐欑殑椹卞姩紼嬪簭錛屽畠鐢ㄥ埌浜哹it fields鍥犳瀹屽叏瀵規(guī)垜鏃犵敤錛屽洜涓烘垜鐨勭紪璇戝櫒鐢ㄥ叾瀹冪殑鏂瑰紡鏉ュ疄鐜癰it fields鐨勩備粠閬撳痙璁詫細姘歌繙涓嶈璁╀竴涓潪宓屽叆寮忕殑瀹朵紮綺樺疄闄呯‖浠剁殑杈廣?br> 3) 鐢?#defines 鍜?bit masks 鎿嶄綔銆傝繖鏄竴涓湁鏋侀珮鍙Щ妞嶆х殑鏂規(guī)硶錛屾槸搴旇琚敤鍒扮殑鏂規(guī)硶銆傛渶浣崇殑瑙e喅鏂規(guī)濡備笅錛?br>
#define BIT3 (0x1 << 3)
static int a;
void set_bit3(void)
{
a |= BIT3;
}
void clear_bit3(void)
{
a &= ~BIT3;
}
涓浜涗漢鍠滄涓鴻緗拰娓呴櫎鍊艱屽畾涔変竴涓帺鐮佸悓鏃跺畾涔変竴浜涜鏄庡父鏁幫紝榪欎篃鏄彲浠ユ帴鍙楃殑銆傛垜甯屾湜鐪嬪埌鍑犱釜瑕佺偣錛氳鏄庡父鏁般亅=鍜?amp;=~鎿嶄綔銆?br>
璁塊棶鍥哄畾鐨勫唴瀛樹綅緗紙Accessing fixed memory ***s錛?/strong>
10. 宓屽叆寮忕郴緇熺粡甯稿叿鏈夎姹傜▼搴忓憳鍘昏闂煇鐗瑰畾鐨勫唴瀛樹綅緗殑鐗圭偣銆傚湪鏌愬伐紼嬩腑錛岃姹傝緗竴緇濆鍦板潃涓?x67a9鐨勬暣鍨嬪彉閲忕殑鍊間負0xaa66銆傜紪璇戝櫒鏄竴涓函綺圭殑ANSI緙栬瘧鍣ㄣ傚啓浠g爜鍘誨畬鎴愯繖涓浠誨姟銆?br> 榪欎竴闂?gòu)箣璇曚綘鏄惁鐭ラ亾湄撲簡璁块棶涓緇濆鍦板潃鎶婁竴涓暣鍨嬫暟寮哄埗杞崲錛坱ypecast錛変負涓鎸囬拡鏄悎娉曠殑銆傝繖涓闂鐨勫疄鐜版柟寮忛殢鐫涓漢椋庢牸涓嶅悓鑰屼笉鍚屻傚吀鍨嬬殑綾諱技浠g爜濡備笅錛?br> int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa55;
A more obscure approach is:
涓涓緝鏅︽訂鐨勬柟娉曟槸錛?br>
*(int * const)(0x67a9) = 0xaa55;
鍗充嬌浣犵殑鍝佸懗鏇存帴榪戠浜岀鏂規(guī)錛屼絾鎴戝緩璁綘鍦ㄩ潰璇曟椂浣跨敤絎竴縐嶆柟妗堛?br>
涓柇錛圛nterrupts錛?/strong>
11. 涓柇鏄祵鍏ュ紡緋葷粺涓噸瑕佺殑緇勬垚閮ㄥ垎錛岃繖瀵艱嚧浜嗗緢澶氱紪璇戝紑鍙戝晢鎻愪緵涓縐嶆墿灞曗旇鏍囧噯C鏀寔涓柇銆傚叿浠h〃浜嬪疄鏄紝浜х敓浜嗕竴涓柊鐨勫叧閿瓧 __interrupt銆備笅闈㈢殑浠g爜灝變嬌鐢ㄤ簡__interrupt鍏抽敭瀛楀幓瀹氫箟浜嗕竴涓腑鏂湇鍔″瓙紼嬪簭(ISR)錛岃璇勮涓涓嬭繖孌典唬鐮佺殑銆?br>
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf("\nArea = %f", area);
return area;
}
榪欎釜鍑芥暟鏈夊お澶氱殑閿欒浜嗭紝浠ヨ嚦璁╀漢涓嶇煡浠庝綍璇磋搗浜嗭細
1)ISR 涓嶈兘榪斿洖涓涓箋傚鏋滀綘涓嶆噦榪欎釜錛岄偅涔堜綘涓嶄細琚泧鐢ㄧ殑銆?br> 2) ISR 涓嶈兘浼犻掑弬鏁般傚鏋滀綘娌℃湁鐪嬪埌榪欎竴鐐癸紝浣犺闆囩敤鐨勬満浼氱瓑鍚岀涓欏廣?br> 3) 鍦ㄨ澶氱殑澶勭悊鍣?緙栬瘧鍣ㄤ腑錛屾誕鐐逛竴鑸兘鏄笉鍙噸鍏ョ殑銆傛湁浜涘鐞嗗櫒/緙栬瘧鍣ㄩ渶瑕佽棰濆鐨勫瘎瀛樺櫒鍏ユ爤錛屾湁浜涘鐞嗗櫒/緙栬瘧鍣ㄥ氨鏄笉鍏佽鍦↖SR涓仛嫻偣榪愮畻銆傛澶栵紝ISR搴旇鏄煭鑰屾湁鏁堢巼鐨勶紝鍦↖SR涓仛嫻偣榪愮畻鏄笉鏄庢櫤鐨勩?br> 4) 涓庣涓夌偣涓鑴夌浉鎵匡紝printf()緇忓父鏈夐噸鍏ュ拰鎬ц兘涓婄殑闂銆傚鏋滀綘涓㈡帀浜嗙涓夊拰絎洓鐐癸紝鎴戜笉浼氬お涓洪毦浣犵殑銆備笉鐢ㄨ錛屽鏋滀綘鑳藉緱鍒板悗涓ょ偣錛岄偅涔堜綘鐨勮闆囩敤鍓嶆櫙瓚婃潵瓚婂厜鏄庝簡銆?br>
浠g爜渚嬪瓙錛圕ode examples錛?/strong>
12 . 涓嬮潰鐨勪唬鐮佽緭鍑烘槸浠涔堬紝涓轟粈涔堬紵
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") : puts("<= 6");
}
榪欎釜闂?gòu)箣璇曚綘鏄惁鎳傚緱C璇█涓殑鏁存暟鑷姩杞崲鍘熷垯錛屾垜鍙戠幇鏈変簺寮鍙戣呮噦寰楁瀬灝戣繖浜涗笢瑗褲備笉綆″浣曪紝榪欐棤絎﹀彿鏁村瀷闂鐨勭瓟妗堟槸杈撳嚭鏄?">6"銆傚師鍥犳槸褰撹〃杈懼紡涓瓨鍦ㄦ湁絎﹀彿綾誨瀷鍜屾棤絎﹀彿綾誨瀷鏃舵墍鏈夌殑鎿嶄綔鏁伴兘鑷姩杞崲涓烘棤絎﹀彿綾誨瀷銆傚洜姝?20鍙樻垚浜嗕竴涓潪甯稿ぇ鐨勬鏁存暟錛屾墍浠ヨ琛ㄨ揪寮忚綆楀嚭鐨勭粨鏋滃ぇ浜?銆傝繖涓鐐瑰浜庡簲褰撻綣佺敤鍒版棤絎﹀彿鏁版嵁綾誨瀷鐨勫祵鍏ュ紡緋葷粺鏉ヨ鏄赴甯擱噸瑕佺殑銆傚鏋滀綘絳旈敊浜嗚繖涓棶棰橈紝浣犱篃灝卞埌浜嗗緱涓嶅埌榪欎喚宸ヤ綔鐨勮竟緙樸?br>
13. 璇勪環(huán)涓嬮潰鐨勪唬鐮佺墖鏂細
unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
/*1's complement of zero */
瀵逛簬涓涓猧nt鍨嬩笉鏄?6浣嶇殑澶勭悊鍣ㄤ負璇達紝涓婇潰鐨勪唬鐮佹槸涓嶆紜殑銆傚簲緙栧啓濡備笅錛?br>
unsigned int compzero = ~0;
榪欎竴闂鐪熸鑳芥彮闇插嚭搴旇瘯鑰呮槸鍚︽噦寰楀鐞嗗櫒瀛楅暱鐨勯噸瑕佹с傚湪鎴戠殑緇忛獙閲岋紝濂界殑宓屽叆寮忕▼搴忓憳闈炲父鍑嗙‘鍦版槑鐧界‖浠剁殑緇嗚妭鍜屽畠鐨勫眬闄愶紝鐒惰孭C鏈虹▼搴忓線寰鎶婄‖浠朵綔涓轟竴涓棤娉曢伩鍏嶇殑鐑︽伡銆?br> 鍒頒簡榪欎釜闃舵錛屽簲璇曡呮垨鑰呭畬鍏ㄥ瀭澶翠撫姘斾簡鎴栬呬俊蹇冩弧婊″織鍦ㄥ繀寰椼傚鏋滄樉鐒跺簲璇曡呬笉鏄緢濂斤紝閭d箞榪欎釜嫻嬭瘯灝卞湪榪欓噷緇撴潫浜嗐備絾濡傛灉鏄劇劧搴旇瘯鑰呭仛寰椾笉閿欙紝閭d箞鎴戝氨鎵斿嚭涓嬮潰鐨勮拷鍔犻棶棰橈紝榪欎簺闂鏄瘮杈冮毦鐨勶紝鎴戞兂浠呬粎闈炲父浼樼鐨勫簲璇曡呰兘鍋氬緱涓嶉敊銆傛彁鍑鴻繖浜涢棶棰橈紝鎴戝笇鏈涙洿澶氱湅鍒板簲璇曡呭簲浠橀棶棰樼殑鏂規(guī)硶錛岃屼笉鏄瓟妗堛備笉綆″浣曪紝浣犲氨褰撴槸榪欎釜濞變箰鍚?..
鍔ㄦ佸唴瀛樺垎閰嶏紙Dynamic memory al***錛?/strong>
14. 灝界涓嶅儚闈炲祵鍏ュ紡璁$畻鏈洪偅涔堝父瑙侊紝宓屽叆寮忕郴緇熻繕鏄湁浠庡爢錛坔eap錛変腑鍔ㄦ佸垎閰嶅唴瀛樼殑榪囩▼鐨勩傞偅涔堝祵鍏ュ紡緋葷粺涓紝鍔ㄦ佸垎閰嶅唴瀛樺彲鑳藉彂鐢熺殑闂鏄粈涔堬紵
榪欓噷錛屾垜鏈熸湜搴旇瘯鑰呰兘鎻愬埌鍐呭瓨紕庣墖錛岀鐗囨敹闆嗙殑闂錛屽彉閲忕殑鎸佽鏃墮棿絳夌瓑銆傝繖涓富棰樺凡緇忓湪ESP鏉傚織涓騫挎硾鍦拌璁鴻繃浜嗭紙涓昏鏄?P.J. Plauger, 浠栫殑瑙i噴榪滆繙瓚呰繃鎴戣繖閲岃兘鎻愬埌鐨勪換浣曡В閲婏級錛屾墍鏈夊洖榪囧ご鐪嬩竴涓嬭繖浜涙潅蹇楀惂錛佽搴旇瘯鑰呰繘鍏ヤ竴縐嶈櫄鍋囩殑瀹夊叏鎰熻鍚庯紝鎴戞嬁鍑鴻繖涔堜竴涓皬鑺傜洰錛?br> 涓嬮潰鐨勪唬鐮佺墖孌電殑杈撳嚭鏄粈涔堬紝涓轟粈涔堬紵
char *ptr;
if ((ptr = (char *)malloc(0)) == NULL)
puts("Got a null pointer");
else
puts("Got a valid pointer");
榪欐槸涓涓湁瓚g殑闂銆傛渶榪戝湪鎴戠殑涓涓悓浜嬩笉緇忔剰鎶?鍊間紶緇欎簡鍑芥暟malloc錛屽緱鍒頒簡涓涓悎娉曠殑鎸囬拡涔嬪悗錛屾垜鎵嶆兂鍒拌繖涓棶棰樸傝繖灝辨槸涓婇潰鐨勪唬鐮侊紝璇ヤ唬鐮佺殑杈撳嚭鏄?Got a valid pointer"銆傛垜鐢ㄨ繖涓潵寮濮嬭璁鴻繖鏍風(fēng)殑涓闂錛岀湅鐪嬭闈㈣瘯鑰呮槸鍚︽兂鍒板簱渚嬬▼榪欐牱鍋氭槸姝g‘銆傚緱鍒版紜殑絳旀鍥虹劧閲嶈錛屼絾瑙e喅闂鐨勬柟娉曞拰浣犲仛鍐沖畾鐨勫熀鏈師鐞嗘洿閲嶈浜涖?br>
Typedef
15 Typedef 鍦–璇█涓綣佺敤浠ュ0鏄庝竴涓凡緇忓瓨鍦ㄧ殑鏁版嵁綾誨瀷鐨勫悓涔夊瓧銆備篃鍙互鐢ㄩ澶勭悊鍣ㄥ仛綾諱技鐨勪簨銆備緥濡傦紝鎬濊冧竴涓嬩笅闈㈢殑渚嬪瓙錛?br>
#define dPS struct s *
typedef struct s * tPS;
浠ヤ笂涓ょ鎯呭喌鐨勬剰鍥鵑兘鏄瀹氫箟dPS 鍜?tPS 浣滀負涓涓寚鍚戠粨鏋剆鎸囬拡銆傚摢縐嶆柟娉曟洿濂藉憿錛燂紙濡傛灉鏈夌殑璇濓級涓轟粈涔堬紵
榪欐槸涓涓潪甯稿井濡欑殑闂錛屼換浣曚漢絳斿榪欎釜闂錛堟褰撶殑鍘熷洜錛夋槸搴斿綋琚伃鍠滅殑銆傜瓟妗堟槸錛歵ypedef鏇村ソ銆傛濊冧笅闈㈢殑渚嬪瓙錛?br>
dPS p1,p2;
tPS p3,p4;
絎竴涓墿灞曚負
struct s * p1, p2;
.
涓婇潰鐨勪唬鐮佸畾涔塸1涓轟竴涓寚鍚戠粨鏋勭殑鎸囷紝p2涓轟竴涓疄闄呯殑緇撴瀯錛岃繖涔熻涓嶆槸浣犳兂瑕佺殑銆傜浜屼釜渚嬪瓙姝g‘鍦板畾涔変簡p3 鍜宲4 涓や釜鎸囬拡銆?br>
鏅︽訂鐨勮娉?/strong>
16 . C璇█鍚屾剰涓浜涗護浜洪渿鎯婄殑緇撴瀯,涓嬮潰鐨勭粨鏋勬槸鍚堟硶鐨勫悧錛屽鏋滄槸瀹冨仛浜涗粈涔堬紵
int a = 5, b = 7, c;
c = a+++b;
榪欎釜闂灝嗗仛涓鴻繖涓祴楠岀殑涓涓剦蹇殑緇撳熬銆備笉綆′綘鐩鎬笉鐩鎬俊錛屼笂闈㈢殑渚嬪瓙鏄畬鍏ㄥ悎涔庤娉曠殑銆傞棶棰樻槸緙栬瘧鍣ㄥ浣曞鐞嗗畠錛熸按騫充笉楂樼殑緙栬瘧浣滆呭疄闄呬笂浼氫簤璁鴻繖涓棶棰橈紝鏍規(guī)嵁鏈澶勭悊鍘熷垯錛岀紪璇戝櫒搴斿綋鑳藉鐞嗗敖鍙兘鎵鏈夊悎娉曠殑鐢ㄦ硶銆傚洜姝わ紝涓婇潰鐨勪唬鐮佽澶勭悊鎴愶細
c = a++ + b;
鍥犳, 榪欐浠g爜鎸佽鍚巃 = 6, b = 7, c = 12銆?br> 濡傛灉浣犵煡閬撶瓟妗堬紝鎴栫寽鍑烘紜瓟妗堬紝鍋氬緱濂姐傚鏋滀綘涓嶇煡閬撶瓟妗堬紝鎴戜篃涓嶆妸榪欎釜褰撲綔闂銆傛垜鍙戠幇榪欎釜闂鐨勬渶澶уソ澶勬槸榪欐槸涓涓叧浜庝唬鐮佺紪鍐欓鏍鹼紝浠g爜鐨勫彲璇繪э紝浠g爜鐨勫彲淇敼鎬х殑濂界殑璇濋銆?br>
濂戒簡錛屼紮璁′滑錛屼綘鐜板湪宸茬粡鍋氬畬鎵鏈夌殑嫻嬭瘯浜嗐傝繖灝辨槸鎴戝嚭鐨凜璇█嫻嬭瘯棰橈紝鎴戞鐫鎰夊揩鐨勫績鎯呭啓瀹屽畠錛屽笇鏈涗綘浠ュ悓鏍風(fēng)殑蹇冩儏璇誨畬瀹冦傚鏋滄槸璁や負榪欐槸涓涓ソ鐨勬祴璇曪紝閭d箞灝介噺閮界敤鍒頒綘鐨勬壘宸ヤ綔鐨勮繃紼嬩腑鍘誨惂銆傚ぉ鐭ラ亾涔熻榪囦釜涓涓ゅ勾錛屾垜灝變笉鍋氱幇鍦ㄧ殑宸ヤ綔錛屼篃闇瑕佹壘涓涓?br>
]]>
鎾斁鍣ㄤ富瑕佺敱鏍稿績妗嗘灦妯″潡錛坈ommon宸ョ▼錛夊拰瑙g爜鍣ㄥ垎紱誨櫒鎻掍歡緇勬垚銆?br>TCPMP鐨勬彃浠墮潪甯稿錛屻乴ibmad鎴戜滑鑱斿悎鍑犱釜鏈甯哥敤鐨勬彃浠訛紙ffmpeg銆乻plitter錛夋潵璇存槑錛屽叾涓璱nterface鎻掍歡瀹炵幇TCPMP鐨勭晫闈紝鐢變簬浠栧拰濯掍綋鎾斁娌℃湁浠涔堝叧緋伙紝榪欓儴鍒嗗彲浠ュ畬鍏ㄨ鏇挎崲鎺夛紝鏇挎崲鎴愯嚜宸辯殑鐣岄潰銆?br>ffmpeg宸ョ▼鏄郴緇熶富瑕佺殑闊寵棰戣В鐮佹ā鍧楋紝ffmpeg鏄竴涓泦褰曞埗銆佽漿鎹€侀煶/瑙嗛緙栫爜瑙g爜鍔熻兘涓轟竴浣撶殑瀹屾暣鐨勫紑婧愯В鍐蟲柟妗堛侳Fmpeg鐨勫紑鍙戞槸鍩轟簬Linux鎿嶄綔緋葷粺錛屼絾鏄彲浠ュ湪澶у鏁版搷浣滅郴緇熶腑緙栬瘧鍜屼嬌鐢ㄣ俧fmpeg鏀寔MPEG銆丏ivX銆丮PEG4銆丄C3銆丏V銆丗LV絳?0澶氱緙栫爜錛孉VI銆丮PEG銆丱GG銆丮atroska銆丄SF絳?0澶氱瑙g爜銆傚緢澶氬紑婧愭挱鏀懼櫒閮界敤鍒頒簡ffmpeg銆備絾鏄痜fmpeg紼嬪簭瑙g爜鏁堢巼涓嶆槸寰堥珮錛岀郴緇熶粎浠呬嬌鐢ㄤ簡FFmpeg鐨勯儴鍒嗚В鐮佸姛鑳姐?br>ffmpeg涓葷洰褰曚笅涓昏鏈塴ibavcodec銆乴ibavformat鍜宭ibavutil絳夊瓙鐩綍銆傚叾涓璴ibavcodec鐢ㄤ簬瀛樻斁鍚勪釜encode/decode妯″潡錛宭ibavformat鐢ㄤ簬瀛樻斁muxer/demuxer妯″潡錛宭ibavutil鐢ㄤ簬瀛樻斁鍐呭瓨鎿嶄綔絳夊父鐢ㄦā鍧椼傛湰緋葷粺鐨勫獟浣撴枃浠跺垎紱誨櫒鏈夊崟鐙殑splitter妯″潡瀹屾垚鎵浠ヤ笉闇瑕乴ibavformat瀛愮洰褰曘俧fmpeg鐩綍涓媗ibavcodec銆乴ibavutil淇濈暀瀛愮洰褰曘?/p>
{
int Version; //鐗堟湰淇℃伅
uint32_t ProgramId;
const tchar_t* ProgramName; //搴旂敤紼嬪簭鍚嶇О
const tchar_t* ProgramVersion; //紼嬪簭鐗堟湰鍙鳳紝瀛楃涓?br> const tchar_t* CmdLine; //紼嬪簭鍛戒護琛屼俊鎭?br> void* Wnd; //瑙嗛娓叉煋紿楀彛鍙ユ焺
void* NodeLock; //鍔熻兘妯″潡璁塊棶涓寸晫鍖轟簰鏂ュ彉閲?br> array Node; //鍔熻兘妯″潡鏁版嵁瀵硅薄鏁扮粍
array NodeClass; //鍔熻兘妯″潡瀹氫箟瀵硅薄鏁扮粍錛屾寜鐓х郴緇熼昏緫鍏崇郴緇勭粐
array NodeClassPri; //鍔熻兘妯″潡瀹氫箟瀵硅薄鏁扮粍錛屾寜鐓х郴緇熼昏緫鍏崇郴鍜屾ā鍧椾紭鍏堢駭鎺掑垪
array NodeModule; //澶栭儴鎻掍歡妯″潡鏁扮粍
int LoadModuleNo; //褰撳墠姝e湪瑁呰澆鐨勫閮ㄦ彃浠跺簭鍙?br> void* LoadModule;
array StrTable[2]; //瀛楃涓茶祫婧愭暟緇勶紝瀛楃涓插垎涓?br> //緇欏簳灞備嬌鐢ㄧ殑鏍囧噯瀛楃涓茶祫婧愬拰
//緇欑晫闈嬌鐢ㄧ殑鏄劇ず瀛楃涓茶祫婧愶紝涓ょ璧勬簮鐢ㄤ袱涓暟緇勮〃紺?br> array StrBuffer;
array StrModule; //鏈嬌鐢?br> void* StrLock; //瀛楃涓叉暟緇勮闂復(fù)鐣屽尯浜掓枼鍙橀噺
uint32_t Lang; //褰撳墠浣跨敤璇█鏍囧織
int CodePage; //褰撳墠浣跨敤浠g爜欏墊爣蹇?br> struct pcm_soft* PCM; //PCM闊抽淇″彿杞崲妯″潡
struct blitpack* Blit; //瑙嗛淇″彿娓叉煋妯″潡
struct node* Platform; //寰楀埌騫沖彴鐩稿叧淇℃伅
struct node* Advanced; //寰楀埌鎾斁妯″潡楂樼駭淇℃伅
struct node* Player; //鎾斁鎺у埗妯″潡
notify Error; //淇℃伅閿欒鍥炶皟鍑芥暟
//灞忓箷鏃嬭漿淇℃伅錛屽湪鏌愪簺緋葷粺涓睆騫曞彲浠ユ棆杞?0搴︽垨180搴?br> int (*HwOrientation)(void*);
void *HwOrientationContext;
bool_t TryDynamic; //鏈嬌鐢?br> int SettingsPage; //鏈嬌鐢?br> size_t StartUpMemory; //鍙互浣跨敤鐨勬湁鏁堝唴瀛樻暟
bool_t InHibernate; //鏄惁榪涘叆浼戠湢鐘舵?br> bool_t WaitDisable; //鏈嬌鐢?br> int FtrId; //鏈嬌鐢?br> bool_t LowMemory; //鍙互浣跨敤鐨勬湁鏁堝唴瀛樻暟鏄惁灝忎簬緋葷粺瑕佹眰鐨勬渶浣庤姹?br> //鍔ㄦ佷唬鐮佺敓鎴愪腑闂寸姸鎬佸強鏁版嵁
bool_t CodeFailed;
bool_t CodeMoveBack;
bool_t CodeDelaySlot;
void* CodeLock;
void* CodeInstBegin;
void* CodeInstEnd;
int NextCond;
bool_t NextSet;
bool_t NextByte;
bool_t NextHalf;
bool_t NextSign;
uint32_t* FlushCache; //鏈嬌鐢?br> void* CharConvertUTF8; //鏈嬌鐢?br> void* CharConvertCustom; //鏈嬌鐢?br> int CustomCodePage; //鏈嬌鐢?br> void* CharConvertAscii; //鏈嬌鐢?br> void* Application;
void* Logger; //鏈嬌鐢?br> bool_t KeepDisplay; //鏄惁淇濇寔鑳屽厜闀夸寒
int DisableOutOfMemory; //鏈嬌鐢?/p>
鏍稿績妯″潡涓婁笅鏂囨寚閽堝彲浠ラ氳繃鍏ㄥ眬鍑芥暟鑾峰緱context* Context();
鍒濆鍖栦笂涓嬫枃瀵硅薄鐨勫叏灞鍑芥暟鏄痓ool_t Context_Init(const tchar_t* Name,const tchar_t* Version,int Id,const tchar_t* CmdLine,void* Application);鍏朵腑Name鍙傛暟涓哄簲鐢ㄧ▼搴忓悕縐幫紝Version涓虹増鏈俊鎭瓧絎︿覆銆?br>閲婃斁涓婁笅鏂囧璞$殑鍏ㄥ眬鍑芥暟鏄痸oid Context_Done();銆?br>void Context_Wnd(void*);鍑芥暟灝嗚棰戞挱鏀劇獥鍙e彞鏌勫垵濮嬪寲緇欒澶囦笂涓嬫枃銆?/p>
#define CF_GLOBAL 0x01000000
#define CF_SETTINGS 0x02000000
#define CF_ABSTRACT 0x08000000
鎶借薄鑺傜偣娌℃湁瀵瑰簲鐨勫璞″疄渚嬶紝綾諱技C++鐨勬娊璞″熀綾伙紝涓轟簡鎸夌収閫昏緫鍏崇郴緇勭粐緋葷粺緇撴瀯鑰屽瓨鍦紝渚嬪NODE灝辨槸鎶借薄鑺傜偣銆傚叏灞鑺傜偣鍏ㄥ眬鍙湁涓涓璞$殑瀹炰緥錛屽鎾斁鎺у埗妯″潡PLAYER_ID銆傝緗妭鐐硅〃紺哄拰緋葷粺鎾斁璁劇疆鐩稿叧錛屾瘮濡傚0闊沖潎琛″櫒妯″潡EQUALIZER_ID錛岄鑹叉帶鍒舵ā鍧桟OLOR_ID銆傚疄鑺傜偣涓庢娊璞¤妭鐐逛笉鍚岋紝鎸囧彲浠ョ敓鎴愬璞″疄渚嬬殑鑺傜偣錛屽疄鑺傜偣娌℃湁鐗規(guī)畩鏍囪瘑錛屼竴鑸互鏁版嵁瀵硅薄鍗犵敤鍐呭瓨澶у皬琛ㄧず鏄惁鏄竴涓疄鑺傜偣錛屽垱寤鴻妭鐐規(guī)椂瑕佹牴鎹淇℃伅鍒嗛厤鍐呭瓨鍗曞厓錛屽疄鑺傜偣涔熷彲浠ユ湁瀛愯妭鐐癸紝渚嬪錛歁MS_ID鐨勭埗鑺傜偣鏄疕TTP_ID銆傚叏灞鑺傜偣錛岃緗妭鐐瑰拰瀹炶妭鐐瑰彲浠ョ浉浜掔粍鍚堬紝姣斿鎾斁鎺у埗鑺傜偣鍚屾椂鏄叏灞鑺傜偣錛岃緗妭鐐瑰拰瀹炶妭鐐廣傝妭鐐瑰悕縐板悗甯ID鐨勫氨鏄疄鑺傜偣錛屽惁鍒欏氨鏄娊璞¤妭鐐廣?/p>
鈹?nbsp; 鈹?nbsp; 鈹溾攢EQUALIZER_ID 錛堝0闊沖潎琛″櫒妯″潡錛?br> 鈹?nbsp; 鈹?nbsp; 鈹溾攢VBUFFER_ID 錛堣棰戠紦鍐叉ā鍧楋級
鈹?nbsp; 鈹?nbsp; 鈹溾攢DMO 錛圖irectX Media Object錛?br> 鈹?nbsp; 鈹?nbsp; 鈹?nbsp; 鈹溾攢WMV_ID
鈹?nbsp; 鈹?nbsp; 鈹?nbsp; 鈹溾攢WMS_ID
鈹?nbsp; 鈹?nbsp; 鈹?nbsp; 鈹溾攢WMVA_ID
鈹?nbsp; 鈹?nbsp; 鈹?nbsp; 鈹溾攢WMA_ID
鈹?nbsp; 鈹?nbsp; 鈹?nbsp; 鈹斺攢WMAV_ID
鈹?nbsp; 鈹?nbsp; 鈹溾攢FFMPEG VIDEO 錛團FMpeg 瑙g爜妯″潡錛?br> 鈹?nbsp; 鈹?nbsp; 鈹斺攢LIBMAD_ID 錛圠ibmad Mp3瑙g爜妯″潡錛?br> 鈹?nbsp; 鈹溾攢OUT 錛堜俊鍙鋒覆鏌撴ā鍧楋級
鈹?nbsp; 鈹?nbsp; 鈹溾攢AOUT 錛堥煶棰戜俊鍙鋒覆鏌擄級
鈹?nbsp; 鈹?nbsp; 鈹?nbsp; 鈹溾攢NULLAUDIO_ID
鈹?nbsp; 鈹?nbsp; 鈹?nbsp; 鈹斺攢WAVEOUT_ID
鈹?nbsp; 鈹?nbsp; 鈹斺攢VOUT 錛堣棰戜俊鍙鋒覆鏌擄級
鈹?nbsp; 鈹?nbsp; 鈹溾攢NULLVIDEO_ID
鈹?nbsp; 鈹?nbsp; 鈹斺攢OVERLAY
鈹?nbsp; 鈹溾攢IDCT 錛堢鏁d綑寮﹁В鐮佹ā鍧楋級
鈹?nbsp; 鈹?nbsp; 鈹斺攢SOFTIDCT_ID
鈹?nbsp; 鈹斺攢CODECIDCT錛堢鏁d綑寮﹁В鐮佹ā鍧楋紝鍑芥暟姣擨DCT瑕佸皯錛?br> 鈹?nbsp; 鈹斺攢MPEG1_ID
鈹溾攢MEDIA 錛堝獟浣撴枃浠舵牸寮忕紪鐮佽В鏋愭ā鍧楋級
鈹?nbsp; 鈹溾攢FORMAT 錛堟牸寮忚В鏋愭ā鍧楋級
鈹?nbsp; 鈹?nbsp; 鈹斺攢FORMATBASE
鈹?nbsp; 鈹?nbsp; 鈹溾攢RAWAUDIO
鈹?nbsp; 鈹?nbsp; 鈹?nbsp; 鈹斺攢MP3_ID
鈹?nbsp; 鈹?nbsp; 鈹溾攢RAWIMAGE
鈹?nbsp; 鈹?nbsp; 鈹溾攢ASF_ID
鈹?nbsp; 鈹?nbsp; 鈹溾攢AVI_ID
鈹?nbsp; 鈹?nbsp; 鈹溾攢MP4_ID
鈹?nbsp; 鈹?nbsp; 鈹溾攢MPG_ID
鈹?nbsp; 鈹?nbsp; 鈹溾攢NSV_ID
鈹?nbsp; 鈹?nbsp; 鈹斺攢WAV_ID
鈹?nbsp; 鈹溾攢PLAYLIST 錛堟挱鏀懼垪琛ㄦā鍧楋級
鈹?nbsp; 鈹?nbsp; 鈹溾攢ASX_ID
鈹?nbsp; 鈹?nbsp; 鈹溾攢M3U_ID
鈹?nbsp; 鈹?nbsp; 鈹斺攢PLS_ID
鈹?nbsp; 鈹斺攢STREAMPROCESS 錛堟暟鎹祦澶勭悊妯″潡錛?br> 鈹溾攢STREAM 錛堟暟鎹緭鍏ユā鍧楋級
鈹?nbsp; 鈹溾攢MEMSTREAM_ID 錛堝唴瀛樻暟鎹祦妯″潡錛?br> 鈹?nbsp; 鈹溾攢FILE_ID 錛堟枃浠禝O妯″潡錛?br> 鈹?nbsp; 鈹斺攢HTTP_ID 錛堢綉緇滄暟鎹幏鍙栨ā鍧楋級
鈹溾攢TIMER 錛堝畾鏃跺櫒妯″潡錛?br> 鈹?nbsp; 鈹斺攢SYSTIMER_ID
鈹溾攢ASSOCIATION_ID 錛堟枃浠舵墿灞曞悕鑷姩鍏寵仈妯″潡錛?br> 鈹溾攢ADVANCED_ID 錛堥珮綰ц緗ā鍧楋級
鈹溾攢COLOR_ID 錛堥鑹叉帶鍒舵ā鍧楋級
鈹溾攢PLATFORM_ID 錛堝鉤鍙頒俊鎭ā鍧楋級
鈹溾攢XSCALEDRIVER_ID 錛圛ntel XScale CPU 淇℃伅妯″潡錛?br> 鈹溾攢PLAYER_ID 錛堟挱鏀炬帶鍒舵ā鍧楋級
鈹斺攢PLAYER_BUFFER_ID 錛堟挱鏀劇紦鍐叉ā鍧楋級
鑺傜偣鏍?wèi)鐘毒l撴瀯鐢辮嫢騫蹭釜闈欐佸畾涔夊璞?nodedef)瀹炰緥瀹炵幇錛?br> typedef struct nodedef
{
int Flags;
int Class;
int ParentClass;
int Priority;
nodecreate Create;
nodedelete Delete;
} nodedef;
Flags琛ㄧず褰撳墠鑺傜偣鐨勭被鍨嬶細鎶借薄銆佸疄鑺傜偣銆佸叏灞銆佽緗?br> Class琛ㄧず褰撳墠鑺傜偣鐨勬爣璇嗭紝濡侻EDIA_CLASS鎴朅SF_ID絳夌瓑銆?br> ParentClass琛ㄧず褰撳墠鑺傜偣鐨勭埗鑺傜偣鏍囪瘑錛屽SYSTIMER_ID瀵硅薄鐨勭埗鑺傜偣鏄疶IMER_CLASS銆?br> Priority琛ㄧず褰撳墠鑺傜偣浼樺厛綰с?br> Create鍜孌elete鏄袱涓嚱鏁版寚閽堬紝琛ㄧず璇ヨ妭鐐圭殑鍒涘緩鍑芥暟鍜岄攢姣佸嚱鏁般?br> 濡傛挱鏀炬帶鍒舵ā鍧楃殑緇撴瀯瀹氫箟鏄?br> static const nodedef Player =
{
sizeof(player_base)|CF_GLOBAL|CF_SETTINGS,
PLAYER_ID,
NODE_CLASS,
PRI_MAXIMUM+600,
(nodecreate)Create,
(nodedelete)Delete,
};
緇濆ぇ澶氭暟鑺傜偣閮芥湁涓涓搴旂殑鏁版嵁瀵硅薄錛岃褰曡鑺傜偣鐨勬暟鎹拰鏂規(guī)硶錛屾瘡涓涓瓙鑺傜偣瀵硅薄閮芥槸浠ョ埗鑺傜偣瀵硅薄浣滀負璇ヨ妭鐐逛竴涓厓绱狅紝綾諱技C++鐨勫皝瑁呯戶鎵挎満鍒躲傚鏋滃瓙鑺傜偣鐨勭埗鑺傜偣娌℃湁鏁版嵁瀵硅薄錛岃鑺傜偣鍙互浠巒ode鑺傜偣鐩存帴緇ф壙銆傛瘡涓涓妭鐐歸兘鍙互鐪嬫垚Node鑺傜偣鐨勭洿鎺ユ垨闂存帴瀛愯妭鐐癸紝鎵浠ユ墍鏈夎妭鐐瑰ご浠ヤ竴涓浉鍚岀殑node緇撴瀯寮澶達紝瀛愯妭鐐瑰彲鑳借繕鏈夎嚜宸辯殑灞炴э紝鍦ㄧ戶鎵跨埗瀵硅薄鍚庡氨鏄瓙鑺傜偣鑷繁鐨勫厓绱犮?br> typedef struct node
{
int Class;
nodeenum Enum;
nodeget Get;
nodeset Set;
} node;
Class琛ㄧず璇ュ璞$殑鏍囪瘑錛屽PLAYER_ID銆?br> Enum鏄竴涓嚱鏁版寚閽堬紝鎸囧悜涓涓嚱鏁扮敤浜庢灇涓懼綋鍓嶈妭鐐圭殑灞炴с?br> Get鏄竴涓嚱鏁版寚閽堬紝寰楀埌褰撳墠鑺傜偣鏌愪竴灞炴у箋?br> Set鏄竴涓嚱鏁版寚閽堬紝璁劇疆褰撳墠鑺傜偣鐨勬煇涓灞炴ф暟鍊箋?br>
鑺傜偣鐨勫睘鎬у兼暟鎹壒鎬у湪涓涓猻tatic const datatable xxxParams[] = {……};鐨勯潤鎬佹暟緇勯噷瀹氫箟銆?br> typedef struct datatable
{
int No;
int Type;
int Flags;
int Format1;
int Format2;
} datatable;
No琛ㄧず灞炴х殑鏍囪瘑錛屽鎾斁鎺у埗妯″潡鐨?define PLAYER_PLAY 0x32 灝辮〃紺烘帶鍒舵挱鏀懼櫒鎾斁鎴栨殏鍋溿?br> Type琛ㄧず灞炴х殑鏁版嵁綾誨瀷錛屽彲鐢ㄥ煎湪node.h涓畾涔夈?br> Flags鏄睘鎬ф暟鎹殑鏍囧織錛岃〃紺鴻鏁版嵁鏄笉鏄彧璇繪暟鎹紝鏄惁鏈夋渶澶ф渶灝忓肩瓑絳夛紝鍙敤鍊煎湪node.h涓畾涔夛紝濡傛灉璇ユ爣蹇楀寘鍚獶F_SETUP鍚屾椂涓嶅寘鍚獶F_NOSAVE鍜孌F_RDONLY灞炴э紝璇ュ睘鎬т細琚褰曞湪娉ㄥ唽琛ㄤ腑錛屼笅嬈″惎鍔ㄦ椂鐢ㄦ敞鍐岃〃鐨勬暟鎹垵濮嬪寲璇ュ睘鎬с?br> Format1鍜孎ormat2鏄彲閫夋爣蹇椾笌Flags閰嶅悎浣跨敤錛屾瘮濡傚鏋淔lags琛ㄧず璇ュ睘鎬у瓨鍦ㄦ渶澶ф渶灝忓鹼紝Format1鍜孎ormat2鍙互鍒嗗埆琛ㄧず鏈灝忓拰鏈澶ф暟鍊箋?br>
鍦ㄥ湪緋葷粺涓婁笅鏂囧璞′腑鏈変袱涓厓绱犺褰曡妭鐐逛俊鎭痑rray Node;鍜宎rray NodeClass;錛宎rray鏄暟緇勬暟鎹被鍨嬶紝Node鏄妭鐐規(guī)暟鎹璞$殑鏁扮粍錛孨odeClass鑺傜偣瀵硅薄鐨勬暟緇勶紝鎸夌収緋葷粺閫昏緫鍏崇郴緇勭粐銆?br> 鍒涘緩鑺傜偣鏃朵紶鍏odedef瀵硅薄鍒拌妭鐐瑰垱寤哄嚱鏁幫紝鍑芥暟浼氭牴鎹畁odedef淇℃伅鐢熸垚瀵瑰簲nodeclass瀵硅薄娣誨姞鍒癗odeClass鏁扮粍錛屽悓鏃舵牴鎹畁odedef淇℃伅鍒嗛厤鏁版嵁瀵硅薄鐨勫唴瀛樼┖闂淬傚湪璇ヨ妭鐐圭殑Create鍑芥暟閲岄潰鍐嶅垵濮嬪寲璇ヨ妭鐐圭殑鏁版嵁瀵硅薄銆?/p>
player* myplayer = NULL;
if(p) myplayer = (player*)(p->Player);
鎺у埗鎾斁鍙傛暟浣跨敤Set(void* This,int No,const void* Data,int Size);鍑芥暟錛岀涓涓弬鏁版槸鎾斁妯″潡鎸囬拡錛岀浜屼釜鍙傛暟鏄帶鍒朵唬鐮侊紝鍗寵榪涜浠涔堟搷浣滐紝絎笁涓弬鏁版槸闇瑕佽祴鍊肩粰鎺у埗浠g爜鐨勬暟鍊鹼紝鏈鍚庝竴涓弬鏁版槸鎵璧嬫暟鍊肩殑鍗犵敤鍐呭瓨鐨勫ぇ灝忋?br>渚嬪寮濮嬫挱鏀劇殑浠g爜鏄細
myplayer->Set(myplayer,PLAYER_PLAY,1,sizeof(int));
PLAYER_PLAY涓烘帶鍒朵唬鐮侊紝琛ㄧず褰撳墠鎺у埗鐨勬槸鎾斁鏆傚仠鍔熻兘錛屾暟鍊間負1琛ㄧず鎾斁涓?琛ㄧず鏆傚仠銆?br>寰楀埌鏌愪竴鎺у埗灞炴т嬌鐢℅et(void* This,int No,void* Data,int Size);鍑芥暟錛屽弬鏁板惈涔夊拰Set鍑芥暟鐩稿悓銆?br>鎺у埗浠g爜鏄竴緇勫畯錛屽畾涔夊湪player.h鏂囦歡涓傛瘮杈冮噸瑕佺殑鎺у埗鍙傛暟鏈?br>// play or pause (bool_t)
#define PLAYER_PLAY 0x32
// position in fraction (fraction)
#define PLAYER_PERCENT 0x25
// position in time (tick_t)
#define PLAYER_POSITION 0x28
// current format (format*)
#define PLAYER_FORMAT 0x2B
// current file in playlist (int)
#define PLAYER_LIST_CURRENT 0x2F
// current file index (suffled) in playlist (int)
#define PLAYER_LIST_CURRIDX 0xA2
// fullscreen mode (bool_t)
#define PLAYER_FULLSCREEN 0x3E
// stop
#define PLAYER_STOP 0xB2
// skin viewport rectangle (rect)
#define PLAYER_SKIN_VIEWPORT 0x3C
鎾斁鎺у埗妯″潡鎵鏈夊彲鐢ㄥ弬鏁拌static const datatable PlayerParams[]緇撴瀯銆?/p>
絎竴涓弬鏁頒負鎾斁妯″潡鎸囬拡錛岀浜屼釜鍙傛暟鏄坊鍔犲埌鎾斁妯″潡鏂囦歡闃熷垪鐨勫簭鍙鳳紝濡傛灉鏄嬌鏂囦歡鎴愪負絎竴涓枃浠惰鍙傛暟璁句負0錛岀涓変釜鍙傛暟鏄獟浣撴枃浠剁殑鐩綍鍜屽悕縐幫紝絎洓涓弬鏁頒負濯掍綋鏂囦歡鏍囬錛岃鍙傛暟鍙互蹇界暐銆?/p>
MP3_0001=audio/mpeg
MP3_0002=mp1:A;mp2:A;mp3:A;mpa:A
MP3_0200=acodec/0x0055
綰綍浜哅P3鏂囦歡鍒嗙鍣ㄥ搴旂殑鏂囦歡綾誨瀷銆佹墿灞曞悕鍜屾枃浠剁壒寰佺爜銆?br>瑕佸緱鍒版爣鍑嗗瓧絎︿覆浣跨敤鍑芥暟LangStrDef錛岀涓涓弬鏁拌〃紺哄瓧絎︾被鍒紝絎簩涓弬鏁拌〃紺哄瓧絎D銆傜晫闈㈢浉鍏崇殑鏄壒孌婂瓧絎﹂泦鐨勫瓧絎︿覆錛屼嬌鐢ㄥ嚱鏁癓angStr錛岀涓涓弬鏁拌〃紺哄瓧絎︾被鍒紝絎簩涓弬鏁拌〃紺哄瓧絎D銆傚叧浜庡瓧絎︿覆璧勬簮鏂囦歡緇撴瀯鍚箟灝嗗湪浠ュ悗鐨勬枃妗d腑璇存槑銆?a >http://blog.csdn.net/navi_dx/archive/2007/11/14/1885780.aspx
]]>
鍦ㄨ創(chuàng)浠g爜鍓嶏紝鎴戝厛鍋氫釜澹版槑錛氫唬鐮佸湪windows騫沖彴涓嬭繍琛屻傚仛UI鐨勬湅鍙嬬粡甯哥敤鍒癉rawText()榪欎釜API錛屽畠閲岄潰鏈変釜鍙傛暟鏄叧浜庢枃瀛楀榻愭柟寮忕殑. 鎴戜滑鍐欐帶浠惰緭鍑轟俊鎭椂錛岄兘鑰冭檻澧炲姞榪欎箞綾誨瀷鐨勫彉閲忔潵鎺у埗鏂囧瓧淇℃伅杈撳嚭錛屾渶鍏稿瀷鐨勫氨鏄寜閽備竴鑸儏鍐典笅錛屾垜浠棤闇媯嫻嬭鍙橀噺錛岀洿鎺ュ紩鐢ㄥ氨濂姐備絾鏈夋椂鍊欎負浜嗚鐣岄潰鏇翠漢鎬у寲錛屾垜浠渶瑕佹嫻嬭鍙橀噺錛屽茍鍋氫簺璋冩暣銆傚ソ錛岀幇鍦ㄧ湅榪欐浠g爜錛?br> 瀹冩牴鎹榻愬睘鎬ф槸鍚﹀寘鍚?DT_LEFT錛岃屽仛涓浜涘伐浣?br>void OnPaint()
{
銆傘傘傘傘傘傘?br> 銆傘傘傘傘傘傘?br>
if( m_uAlign & DT_LEFT ) //浠g爜 孌?1
DoA();
else
DoB();
if( m_uAlign & DT_LEFT == DT_LEFT ) //浠g爜 孌?nbsp;2
DoA();
else
DoB();
if( (m_uAlign & DT_LEFT ) == DT_LEFT ) //浠g爜 孌?nbsp;3
DoA();
else
DoB();
銆傘傘傘傘傘傘?br>}
涓婇潰涓変釜浠g爜孌電殑鎵ц榪囩▼涓猴細1錛氭案榪滄墽琛?DoB() 鍑芥暟浣擄紱
2錛氬鏋?m_uAlign 鏈鏈綅鏄浂 錛屽垯鎵ц DoB()鍑芥暟浣? 鍚﹀垯鍒欐墽琛?DoA()鍑芥暟浣擄紱
| Feature | MFC | WTL |
| Stand-alone library | Yes | No (built on ATL) |
| AppWizard support | Yes | Yes |
| ClassWizard support | Yes | No |
| Officially supported by Microsoft | Yes | No (Supported by volunteers inside MS) |
| Support for OLE Documents | Yes | No |
| Support for Views | Yes | Yes |
| Support for Documents | Yes | No |
| Basic Win32 & Common Control Wrappers | Yes | Yes |
| Advanced Common Control Wrappers (Flat scrollbar, IP Address, Pager Control, etc.) | No | Yes |
| Command Bar support (including bitmapped context menus) | No (MFC does provide dialog bars) | Yes |
| CString | Yes | Yes |
| GDI wrappers | Yes | Yes |
| Helper classes (CRect, Cpoint, etc.) | Yes | Yes |
| Property Sheets/Wizards | Yes | Yes |
| SDI, MDI support | Yes | Yes |
| Multi-SDI support | No | Yes |
| MRU Support | Yes | Yes |
| Docking Windows/Bars | Yes | No |
| Splitters | Yes | Yes |
| DDX | Yes | Yes (not as extensive as MFC) |
| Printing/Print Preview | Yes | Yes |
| Scrollable Views | Yes | Yes |
| Custom Draw/Owner Draw Wrapper | No | Yes |
| Message/Command Routing | Yes | Yes |
| Common Dialogs | Yes | Yes |
| HTML Views | Yes | Yes |
| Single Instance Applications | No | No |
| UI Updating | Yes | Yes |
| Template-based | No | Yes |
| Size of a statically linked do-nothing SDI application with toolbar, status bar, and menu | 228KB + MSVCRT.DLL (288KB) | 24k (with /OPT:NOWIN98) (+ MSVCRT.DLL if you use CString) |
| Size of a dynamically linked do-nothing SDI application with toolbar, status bar, and menu | 24KB + MFC42.DLL (972KB) + MSVCRT.DLL (288KB) | N/A |
| Runtime Dependencies | CRT (+ MFC42.DLL, if dynamically linked) | None (CRT if you use CString) |
錛夛紝鎵浠ヤ粖騫翠笉鍑戦偅浠界儹闂癸紝鑰佸疄鍦ㄥ鍛嗙潃銆?br>