锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美.www,欧美三级电影网,亚洲国产精品久久精品怡红院http://m.shnenglu.com/lapcca/category/13742.html涓撴敞浜庣綉緇滃崗璁?緋葷粺搴曞眰,鏈嶅姟鍣ㄨ蔣浠?/description>zh-cnTue, 06 Nov 2012 19:11:00 GMTTue, 06 Nov 2012 19:11:00 GMT60Linux涓媘akefile鏁欑▼http://m.shnenglu.com/lapcca/archive/2012/06/06/177838.html闃肯闃肯Wed, 06 Jun 2012 14:57:00 GMThttp://m.shnenglu.com/lapcca/archive/2012/06/06/177838.htmlhttp://m.shnenglu.com/lapcca/comments/177838.htmlhttp://m.shnenglu.com/lapcca/archive/2012/06/06/177838.html#Feedback3http://m.shnenglu.com/lapcca/comments/commentRss/177838.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/177838.html闃呰鍏ㄦ枃

闃肯 2012-06-06 22:57 鍙戣〃璇勮
]]>
c++ 涓叧浜巌nt錛寀nsigned int , short鐨勮法騫沖彴縐繪http://m.shnenglu.com/lapcca/archive/2011/04/15/144302.html闃肯闃肯Fri, 15 Apr 2011 06:02:00 GMThttp://m.shnenglu.com/lapcca/archive/2011/04/15/144302.htmlhttp://m.shnenglu.com/lapcca/comments/144302.htmlhttp://m.shnenglu.com/lapcca/archive/2011/04/15/144302.html#Feedback4http://m.shnenglu.com/lapcca/comments/commentRss/144302.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/144302.html__int16銆乢_int32榪欑鏁版嵁綾誨瀷鍦ㄦ墍鏈夊鉤鍙頒笅閮藉垎閰嶇浉鍚岀殑瀛楄妭銆傛墍浠ュ湪縐繪涓婁笉瀛樺湪闂銆?br />鎵璋撶殑涓嶅彲縐繪鏄寚錛氬湪涓涓鉤鍙頒笂緙栧啓鐨勪唬鐮佹棤娉曟嬁鍒板彟涓涓鉤鍙頒笂榪愯鏃訛紝涓嶈兘杈懼埌鏈熸湜鐨勮繍琛岀粨鏋?/span>銆?br />渚嬪錛氬湪32涓哄鉤鍙頒笂錛堟墍璋?2浣嶅鉤鍙版槸鎸囬氱敤瀵勫瓨鍣ㄧ殑鏁版嵁瀹藉害鏄?2錛夌紪鍐欎唬鐮侊紝int 綾誨瀷鍒嗛厤4涓瓧鑺傦紝鑰屽湪16浣嶅鉤鍙版槸鍒欏垎閰?涓瓧鑺傦紝閭d箞鍦?6浣嶄笂緙栬瘧鍑烘潵鐨別xe錛?br />鍏朵腑鏄負(fù)int鍒嗛厤2瀛楄妭錛岃屽湪32浣嶅鉤鍙頒笂榪愯鏃訛紝浼?xì)鎸夌?涓瓧鑺傛潵瑙f瀽錛屾樉鐒朵細(xì)鍑洪敊璇殑錛侊紒

鑰屽浜庨潪int琛岋紝鐩墠涓烘錛屾墍鏈夌殑綾誨瀷鍒嗛厤鐨勫瓧鑺傛暟閮芥槸鍏煎鐨勶紝鍗充笉鍚屽鉤鍙板浜庡悓涓涓被鍨嬪垎閰嶇浉鍚岀殑瀛楄妭鏁幫紒錛?br />
寤鴻錛氬湪浠g爜涓敖閲忛伩鍏嶄嬌鐢╥nt綾誨瀷錛屾牴鎹笉鍚岀殑闇瑕佸彲浠ョ敤short,long,unsigned int 絳変唬鏇褲?br />
涓嬮潰鏄悇涓被鍨嬩竴瑙堣〃銆愯漿銆?br />

64浣嶆寚鐨勬槸cpu閫氱敤瀵勫瓨鍣ㄧ殑鏁版嵁瀹藉害鏄?4浣嶇殑銆?/p>

鏁版嵁綾誨瀷鍚嶇О瀛楄妭鏁?/strong>鍒悕鍙栧艱寖鍥?/font>
int*signed,signed int鐢?a target="_blank">鎿嶄綔緋葷粺鍐沖畾錛屽嵆涓庢搷浣滅郴緇熺殑錛傚瓧闀匡紓鏈夊叧
unsigned int*unsigned鐢辨搷浣滅郴緇熷喅瀹氾紝鍗充笌鎿嶄綔緋葷粺鐨勶紓瀛楅暱錛傛湁鍏?/font>
__int81char,signed char鈥?28 鍒?127
__int162short,short int,signed short int鈥?2,768 鍒?32,767
__int324signed,signed int鈥?,147,483,648 鍒?2,147,483,647
__int648鏃?/font>鈥?,223,372,036,854,775,808 鍒?9,223,372,036,854,775,807
bool1鏃?/font>false 鎴?true
char1signed char鈥?28 鍒?127
unsigned char1鏃?/font>0 鍒?255
short2short int,signed short int鈥?2,768 鍒?32,767
unsigned short2unsigned short int0 鍒?65,535
long4long int,signed long int鈥?,147,483,648 鍒?2,147,483,647
long long8none (but equivalent to __int64)鈥?,223,372,036,854,775,808 鍒?9,223,372,036,854,775,807
unsigned long4unsigned long int0 鍒?4,294,967,295
enum*鏃?/font>鐢辨搷浣滅郴緇熷喅瀹氾紝鍗充笌鎿嶄綔緋葷粺鐨勶紓瀛楅暱錛傛湁鍏?/font>
float4鏃?/font>3.4E +/- 38 (7 digits)
double8鏃?/font>1.7E +/- 308 (15 digits)
long double8鏃?/font>1.7E +/- 308 (15 digits)
wchar_t2__wchar_t0 鍒?65,535
綾誨瀷鏍囪瘑絎?/td>綾誨瀷璇存槑闀垮害
錛堝瓧鑺傦級(jí)
鑼冨洿澶囨敞
char瀛楃鍨?/td>1-128 ~ 127-27 ~ (27 -1)
unsigned char鏃犵瀛楃鍨?/td>10 ~ 2550 ~ (28 -1)
short int鐭暣鍨?/td>2-32768 ~ 327672-15 ~ (215 - 1)
unsigned short int鏃犵鐭暣鍨?/td>20 ~ 655350 ~ (216 - 1)
int鏁村瀷4-2147483648 ~ 2147483647-231 ~ (231 - 1)
unsigned int鏃犵鏁村瀷40 ~ 42949672950 ~ (232-1)
float瀹炲瀷錛堝崟綺懼害錛?/td>41.18*10-38 ~ 3.40*10387浣嶆湁鏁堜綅
double瀹炲瀷錛堝弻綺懼害錛?/td>82.23*10-308 ~ 1.79*1030815浣嶆湁鏁堜綅
long double瀹炲瀷錛堥暱鍙岀簿搴︼級(jí)103.37*10-4932 ~ 1.18*10493219浣嶆湁鏁堜綅




闃肯 2011-04-15 14:02 鍙戣〃璇勮
]]>
C++涓殑鍥涚寮哄埗綾誨瀷杞崲鐨勫尯鍒?[杞琞http://m.shnenglu.com/lapcca/archive/2010/11/30/135081.html闃肯闃肯Tue, 30 Nov 2010 07:37:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/11/30/135081.htmlhttp://m.shnenglu.com/lapcca/comments/135081.htmlhttp://m.shnenglu.com/lapcca/archive/2010/11/30/135081.html#Feedback3http://m.shnenglu.com/lapcca/comments/commentRss/135081.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/135081.html浣跨敤鏍囧噯C++鐨勭被鍨嬭漿鎹㈢錛歴tatic_cast銆乨ynamic_cast銆乺einterpret_cast銆佸拰const_cast銆?/p>

1 static_cast

鐢ㄦ硶錛歴tatic_cast < type-id > ( expression )聽聽聽聽

璇ヨ繍綆楃鎶奺xpression杞崲涓簍ype-id綾誨瀷錛屼絾娌℃湁榪愯鏃剁被鍨嬫鏌ユ潵淇濊瘉杞崲鐨勫畨鍏ㄦс傚畠涓昏鏈夊涓嬪嚑縐嶇敤娉曪細(xì)

鈶犵敤浜庣被灞傛緇撴瀯涓熀綾誨拰瀛愮被涔嬮棿鎸囬拡鎴栧紩鐢ㄧ殑杞崲銆?/p>

聽 榪涜涓婅杞崲錛堟妸瀛愮被鐨勬寚閽堟垨寮曠敤杞崲鎴愬熀綾昏〃紺猴級(jí)鏄畨鍏ㄧ殑錛?/p>

聽 榪涜涓嬭杞崲錛堟妸鍩虹被鎸囬拡鎴栧紩鐢ㄨ漿鎹㈡垚瀛愮被琛ㄧず錛夋椂錛岀敱浜庢病鏈夊姩鎬佺被鍨嬫鏌ワ紝鎵浠ユ槸涓嶅畨鍏ㄧ殑銆?/p>

鈶$敤浜庡熀鏈暟鎹被鍨嬩箣闂寸殑杞崲錛屽鎶奿nt杞崲鎴恈har錛屾妸int杞崲鎴恊num銆傝繖縐嶈漿鎹㈢殑瀹夊叏鎬т篃瑕佸紑鍙戜漢鍛樻潵淇濊瘉銆?/p>

鈶㈡妸絀烘寚閽堣漿鎹㈡垚鐩爣綾誨瀷鐨勭┖鎸囬拡銆?/p>

鈶f妸浠諱綍綾誨瀷鐨勮〃杈懼紡杞崲鎴恦oid綾誨瀷銆?/p>

娉ㄦ剰錛歴tatic_cast涓嶈兘杞崲鎺塭xpression鐨刢onst銆乿olitale銆佹垨鑰卂_unaligned灞炴с?/p>

2 dynamic_cast

鐢ㄦ硶錛歞ynamic_cast < type-id > ( expression )

璇ヨ繍綆楃鎶奺xpression杞崲鎴恡ype-id綾誨瀷鐨勫璞°俆ype-id蹇呴』鏄被鐨勬寚閽堛佺被鐨勫紩鐢ㄦ垨鑰卾oid *錛?/p>

濡傛灉type-id鏄被鎸囬拡綾誨瀷錛岄偅涔坋xpression涔熷繀欏繪槸涓涓寚閽堬紝濡傛灉type-id鏄竴涓紩鐢紝閭d箞expression涔熷繀欏繪槸涓涓紩鐢ㄣ?/p>

dynamic_cast涓昏鐢ㄤ簬綾誨眰嬈¢棿鐨勪笂琛岃漿鎹㈠拰涓嬭杞崲錛岃繕鍙互鐢ㄤ簬綾諱箣闂寸殑浜ゅ弶杞崲銆?/p>

鍦ㄧ被灞傛闂磋繘琛屼笂琛岃漿鎹㈡椂錛宒ynamic_cast鍜宻tatic_cast鐨勬晥鏋滄槸涓鏍風(fēng)殑錛?/p>

鍦ㄨ繘琛屼笅琛岃漿鎹㈡椂錛宒ynamic_cast鍏鋒湁綾誨瀷媯(gè)鏌ョ殑鍔熻兘錛屾瘮static_cast鏇村畨鍏ㄣ?/p>

class B{

public:

聽聽聽聽聽聽 int m_iNum;

聽聽聽聽聽聽 virtual void foo();

};

class D:public B{

聽聽聽 public:

聽聽聽聽聽聽 char *m_szName[100];

};

void func(B *pb){

聽聽聽 D *pd1 = static_cast<D *>(pb);

聽聽聽 D *pd2 = dynamic_cast<D *>(pb);

}

鍦ㄤ笂闈㈢殑浠g爜孌典腑錛屽鏋減b鎸囧悜涓涓狣綾誨瀷鐨勫璞★紝pd1鍜宲d2鏄竴鏍風(fēng)殑錛屽茍涓斿榪欎袱涓寚閽堟墽琛孌綾誨瀷鐨勪換浣曟搷浣滈兘鏄畨鍏ㄧ殑錛?/p>

浣嗘槸錛屽鏋減b鎸囧悜鐨勬槸涓涓狟綾誨瀷鐨勫璞★紝閭d箞pd1灝嗘槸涓涓寚鍚戣瀵硅薄鐨勬寚閽堬紝瀵瑰畠榪涜D綾誨瀷鐨勬搷浣滃皢鏄笉瀹夊叏鐨勶紙濡傝闂甿_szName錛夛紝

鑰宲d2灝嗘槸涓涓┖鎸囬拡銆?/p>

鍙﹀瑕佹敞鎰忥細(xì)B瑕佹湁铏氬嚱鏁幫紝鍚﹀垯浼?xì)缂栬瘧鍑洪敊锛泂tatic_cast鍒欐病鏈夎繖涓檺鍒躲?/p>

榪欐槸鐢變簬榪愯鏃剁被鍨嬫鏌ラ渶瑕佽繍琛屾椂綾誨瀷淇℃伅錛岃岃繖涓俊鎭瓨鍌ㄥ湪綾葷殑铏氬嚱鏁拌〃錛?/p>

鍏充簬铏氬嚱鏁拌〃鐨勬蹇碉紝璇︾粏鍙<Inside c++ object model>錛変腑錛屽彧鏈夊畾涔変簡铏氬嚱鏁扮殑綾繪墠鏈夎櫄鍑芥暟琛紝

娌℃湁瀹氫箟铏氬嚱鏁扮殑綾繪槸娌℃湁铏氬嚱鏁拌〃鐨勩?/p>

鍙﹀錛宒ynamic_cast榪樻敮鎸佷氦鍙夎漿鎹紙cross cast錛夈傚涓嬩唬鐮佹墍紺恒?/p>

class A{

public:

聽聽聽聽聽聽聽 int m_iNum;

聽聽聽聽聽聽聽 virtual void f(){}

};

class B:public A{

};

class D:public A{

};

void foo(){

聽聽聽 B *pb = new B;

聽聽聽 pb->m_iNum = 100;

聽聽聽 D *pd1 = static_cast<D *>(pb);聽聽聽 //compile error

聽聽聽 D *pd2 = dynamic_cast<D *>(pb); //pd2 is NULL

聽聽聽 delete pb;

}

鍦ㄥ嚱鏁癴oo涓紝浣跨敤static_cast榪涜杞崲鏄笉琚厑璁哥殑錛屽皢鍦ㄧ紪璇戞椂鍑洪敊錛涜屼嬌鐢?dynamic_cast鐨勮漿鎹㈠垯鏄厑璁哥殑錛岀粨鏋滄槸絀烘寚閽堛?/p>

3 reinterpret_cast

鐢ㄦ硶錛歳einterpret_cast<type-id> (expression)

type-id蹇呴』鏄竴涓寚閽堛佸紩鐢ㄣ佺畻鏈被鍨嬨佸嚱鏁版寚閽堟垨鑰呮垚鍛樻寚閽堛?/p>

瀹冨彲浠ユ妸涓涓寚閽堣漿鎹㈡垚涓涓暣鏁幫紝涔熷彲浠ユ妸涓涓暣鏁拌漿鎹㈡垚涓涓寚閽堬紙鍏堟妸涓涓寚閽堣漿鎹㈡垚涓涓暣鏁幫紝

鍦ㄦ妸璇ユ暣鏁拌漿鎹㈡垚鍘熺被鍨嬬殑鎸囬拡錛岃繕鍙互寰楀埌鍘熷厛鐨勬寚閽堝鹼級(jí)銆?/p>

璇ヨ繍綆楃鐨勭敤娉曟瘮杈冨銆?/p>

(static_cast .涓? reinterpret_cast姣旇緝錛岃涓嬮潰 )

4 const_cast

鐢ㄦ硶錛歝onst_cast<type_id> (expression)

璇ヨ繍綆楃鐢ㄦ潵淇敼綾誨瀷鐨刢onst鎴杤olatile灞炴с傞櫎浜哻onst 鎴杤olatile淇グ涔嬪錛?type_id鍜宔xpression鐨勭被鍨嬫槸涓鏍風(fēng)殑銆?/p>

甯擱噺鎸囬拡琚漿鍖栨垚闈炲父閲忔寚閽堬紝騫朵笖浠嶇劧鎸囧悜鍘熸潵鐨勫璞★紱

甯擱噺寮曠敤琚漿鎹㈡垚闈炲父閲忓紩鐢紝騫朵笖浠嶇劧鎸囧悜鍘熸潵鐨勫璞★紱甯擱噺瀵硅薄琚漿鎹㈡垚闈炲父閲忓璞°?/p>

Voiatile鍜宑onst綾昏瘯銆備婦濡備笅涓渚嬶細(xì)

class B{

public:

聽聽聽聽 int m_iNum;

}

void foo(){

const B b1;

b1.m_iNum = 100;聽聽聽聽聽聽聽聽聽聽聽 //comile error

B b2 = const_cast<B>(b1);

b2. m_iNum = 200;聽聽聽聽聽聽聽聽聽聽 //fine

}

涓婇潰鐨勪唬鐮佺紪璇戞椂浼?xì)鎶ラ敊锛屽洜湄?fù)b1鏄竴涓父閲忓璞★紝涓嶈兘瀵瑰畠榪涜鏀瑰彉錛?/p>

浣跨敤const_cast鎶婂畠杞崲鎴愪竴涓父閲忓璞★紝灝卞彲浠ュ瀹冪殑鏁版嵁鎴愬憳浠繪剰鏀瑰彉銆傛敞鎰忥細(xì)b1鍜宐2鏄袱涓笉鍚岀殑瀵硅薄銆?/p>

== ===========================================

== dynamic_cast .vs. static_cast

== ===========================================

class B { ... };

class D : public B { ... };

void f(B* pb)

{

D* pd1 = dynamic_cast<D*>(pb);

D* pd2 = static_cast<D*>(pb);

}

If pb really points to an object of type D, then pd1 and pd2 will get the same value. They will also get the same value if pb == 0.

If pb points to an object of type B and not to the complete D class, then dynamic_cast will know enough to return zero. However, static_cast relies on the programmer鈥檚 assertion that pb points to an object of type D and simply returns a pointer to that supposed D object.

鍗砫ynamic_cast鍙敤浜庣戶鎵夸綋緋諱腑鐨勫悜涓嬭漿鍨嬶紝鍗沖皢鍩虹被鎸囬拡杞崲涓烘淳鐢熺被鎸囬拡錛屾瘮static_cast鏇翠弗鏍兼洿瀹夊叏銆俤ynamic_cast鍦ㄦ墽琛屾晥鐜囦笂姣攕tatic_cast瑕佸樊涓浜涳紝浣唖tatic_cast鍦ㄦ洿瀹戒笂鑼冨洿鍐呭彲浠ュ畬鎴愭槧灝勶紝榪欑涓嶅姞闄愬埗鐨勬槧灝勪即闅忕潃涓嶅畨鍏ㄦс俿tatic_cast瑕嗙洊鐨勫彉鎹㈢被鍨嬮櫎綾誨眰嬈$殑闈欐佸鑸互澶栵紝榪樺寘鎷棤鏄犲皠鍙樻崲銆佺獎(jiǎng)鍖栧彉鎹?榪欑鍙樻崲浼?xì)瀵艰嚧瀵硅薄鍒囩?涓㈠け淇℃伅)銆佺敤VOID*鐨勫己鍒跺彉鎹€侀殣寮忕被鍨嬪彉鎹㈢瓑...

== ===========================================

== static_cast .vs. reinterpret_cast

== ================================================

reinterpret_cast鏄負(fù)浜嗘槧灝勫埌涓涓畬鍏ㄤ笉鍚岀被鍨嬬殑鎰忔濓紝榪欎釜鍏抽敭璇嶅湪鎴戜滑闇瑕佹妸綾誨瀷鏄犲皠鍥炲師鏈夌被鍨嬫椂鐢ㄥ埌瀹冦傛垜浠槧灝勫埌鐨勭被鍨嬩粎浠呮槸涓轟簡鏁呭紕鐜勮櫄鍜屽叾浠栫洰鐨勶紝榪欐槸鎵鏈夋槧灝勪腑鏈鍗遍櫓鐨勩?榪欏彞璇濇槸C++緙栫▼鎬濇兂涓殑鍘熻瘽)

static_cast 鍜?reinterpret_cast 鎿嶄綔絎︿慨鏀逛簡鎿嶄綔鏁扮被鍨嬨傚畠浠笉鏄簰閫嗙殑錛?static_cast 鍦ㄧ紪璇戞椂浣跨敤綾誨瀷淇℃伅鎵ц杞崲錛屽湪杞崲鎵ц蹇呰鐨勬嫻?璇稿鎸囬拡瓚婄晫璁$畻, 綾誨瀷媯(gè)鏌?. 鍏舵搷浣滄暟鐩稿鏄畨鍏ㄧ殑銆傚彟涓鏂歸潰錛況einterpret_cast 浠呬粎鏄噸鏂拌В閲婁簡緇欏嚭鐨勫璞$殑姣旂壒妯″瀷鑰屾病鏈夎繘琛屼簩榪涘埗杞崲錛?渚嬪瓙濡備笅錛?/p>

int n=9; double d=static_cast < double > (n);

涓婇潰鐨勪緥瀛愪腑, 鎴戜滑灝嗕竴涓彉閲忎粠 int 杞崲鍒?double銆?榪欎簺綾誨瀷鐨勪簩榪涘埗琛ㄨ揪寮忔槸涓嶅悓鐨勩?瑕佸皢鏁存暟 9 杞崲鍒?鍙岀簿搴︽暣鏁?9錛宻tatic_cast 闇瑕佹紜湴涓哄弻綺懼害鏁存暟 d 琛ヨ凍姣旂壒浣嶃傚叾緇撴灉涓?9.0銆傝宺einterpret_cast 鐨勮涓哄嵈涓嶅悓:

int n=9;

double d=reinterpret_cast<double & > (n);

榪欐, 緇撴灉鏈夋墍涓嶅悓. 鍦ㄨ繘琛岃綆椾互鍚? d 鍖呭惈鏃犵敤鍊? 榪欐槸鍥犱負(fù) reinterpret_cast 浠呬粎鏄鍒?n 鐨勬瘮鐗逛綅鍒?d, 娌℃湁榪涜蹇呰鐨勫垎鏋?

鍥犳, 浣犻渶瑕佽皚鎱庝嬌鐢?reinterpret_cast.



闃肯 2010-11-30 15:37 鍙戣〃璇勮
]]>
c++ 鏋氫婦緗戦〉http://m.shnenglu.com/lapcca/archive/2010/11/22/134277.html闃肯闃肯Mon, 22 Nov 2010 07:34:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/11/22/134277.htmlhttp://m.shnenglu.com/lapcca/comments/134277.htmlhttp://m.shnenglu.com/lapcca/archive/2010/11/22/134277.html#Feedback1http://m.shnenglu.com/lapcca/comments/commentRss/134277.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/134277.html闃呰鍏ㄦ枃

闃肯 2010-11-22 15:34 鍙戣〃璇勮
]]>
[鏀惰棌]QQ_dll Functionhttp://m.shnenglu.com/lapcca/archive/2010/11/03/132297.html闃肯闃肯Wed, 03 Nov 2010 07:26:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/11/03/132297.htmlhttp://m.shnenglu.com/lapcca/comments/132297.htmlhttp://m.shnenglu.com/lapcca/archive/2010/11/03/132297.html#Feedback5http://m.shnenglu.com/lapcca/comments/commentRss/132297.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/132297.html闃呰鍏ㄦ枃

闃肯 2010-11-03 15:26 鍙戣〃璇勮
]]>
[鍒嗕韓鏀惰棌]IP鍗忚鏃忓崗璁ご緇撴瀯http://m.shnenglu.com/lapcca/archive/2010/11/03/132295.html闃肯闃肯Wed, 03 Nov 2010 07:23:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/11/03/132295.htmlhttp://m.shnenglu.com/lapcca/comments/132295.htmlhttp://m.shnenglu.com/lapcca/archive/2010/11/03/132295.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/132295.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/132295.html//Jurassic 2003.3.6 created.
/*++
TCP Header Format
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽 0聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 1聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 2聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 3聽聽聽
聽聽聽 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1聽
聽聽 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
聽聽 |聽聽聽聽聽聽聽聽聽 Source Port聽聽聽聽聽聽聽聽聽 |聽聽聽聽聽聽 Destination Port聽聽聽聽聽聽聽 |
聽聽 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
聽聽 |聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Sequence Number聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 |
聽聽 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
聽聽 |聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Acknowledgment Number聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 |
聽聽 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
聽聽 |聽 Data |聽聽聽聽聽聽聽聽聽聽 |U|A|P|R|S|F|聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 |
聽聽 | Offset| Reserved聽 |R|C|S|S|Y|I|聽聽聽聽聽聽聽聽聽聽聽 Window聽聽聽聽聽聽聽聽聽聽聽聽 |
聽聽 |聽聽聽聽聽聽 |聽聽聽聽聽聽聽聽聽聽 |G|K|H|T|N|N|聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 |
聽聽 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
聽聽 |聽聽聽聽聽聽聽聽聽聽 Checksum聽聽聽聽聽聽聽聽聽聽聽 |聽聽聽聽聽聽聽聽 Urgent Pointer聽聽聽聽聽聽聽 |
聽聽 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
聽聽 |聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Options聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 |聽聽聽 Padding聽聽聽 |
聽聽 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
聽聽 |聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 data聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 |
聽聽 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽

attached:瀹屾暣闄勪歡


闃肯 2010-11-03 15:23 鍙戣〃璇勮
]]>
atoi,atof瀹炵幇http://m.shnenglu.com/lapcca/archive/2010/11/03/132274.html闃肯闃肯Wed, 03 Nov 2010 03:28:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/11/03/132274.htmlhttp://m.shnenglu.com/lapcca/comments/132274.htmlhttp://m.shnenglu.com/lapcca/archive/2010/11/03/132274.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/132274.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/132274.html
/* ********************************************************************** */
// 聽int聽a2i(const聽char聽*s)聽鍑芥暟鍘熷艦聽
// 鍔熻兘:聽鎶妔鎵鎸囧悜鐨勫瓧絎︿覆杞崲鎴恑nt綾誨瀷;
// 榪斿洖鍊鹼細(xì)瀛楃涓茬殑杞崲鍊箋?br /> //
// 聽double聽a2f(const聽char聽*s)聽鍑芥暟鍘熷艦聽
// 鍔熻兘:聽鎶妔鎵鎸囧悜鐨勫瓧絎︿覆杞崲鎴恉ouble綾誨瀷;
// 榪斿洖鍊鹼細(xì)瀛楃涓茬殑杞崲鍊箋?/span>
/* ********************************************************************** */

int 聽a2i( const char * s)
{

聽聽聽聽
int 聽sign = 1 ,num = 0 ;聽
聽聽聽聽
if ( * s == ' - ' )
聽聽聽聽聽聽聽聽sign
=- 1 ;
聽聽聽聽
else if ( * s == ' + ' )
聽聽聽聽聽聽聽聽sign
= 1 ;
聽聽聽聽s
++ ;

聽聽聽聽
while (( * s) != ' \0 ' )
聽聽聽聽
{
聽聽聽聽聽聽聽聽num
= num * 10 + ( * s - ' 0 ' );
聽聽聽聽聽聽聽聽s
++ ;
聽聽聽聽}
聽聽聽聽
聽聽聽聽
return 聽num * sign;
}


double 聽a2f( const char * s)
{
聽聽聽聽
bool 聽bDot = false ;
聽聽聽聽
double 聽result = 0 ;
聽聽聽聽
int 聽sign = 1 ;
聽聽聽聽
if 聽( * s == ' - ' )
聽聽聽聽
{
聽聽聽聽聽聽聽聽sign
=- 1 ;
聽聽聽聽}

聽聽聽聽
else if ( * s == ' + ' )
聽聽聽聽
{
聽聽聽聽聽聽聽聽sign
= 1 ;
聽聽聽聽}

聽聽聽聽s
++ ;
聽聽聽聽
聽聽聽聽
double 聽temp = 1 ;

聽聽聽聽
while 聽(( * s) != ' \0 ' )
聽聽聽聽
{
聽聽聽聽聽聽聽聽
if ( * s == ' . ' )
聽聽聽聽聽聽聽聽
{bDot = true ;s ++ ;}


聽聽聽聽聽聽聽聽
if 聽( ! bDot)
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽result
= result * 10 + ( * s - ' 0 ' );
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
else
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽temp
*= 10 ;
聽聽聽聽聽聽聽聽聽聽聽聽result
= result + ( * s - ' 0 ' ) / temp;
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽s
++ ;
聽聽聽聽}


聽聽聽聽
return 聽sign * result;

}



闃肯 2010-11-03 11:28 鍙戣〃璇勮
]]>
c++ web Kit綆浠?/title><link>http://m.shnenglu.com/lapcca/archive/2010/10/25/131176.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Mon, 25 Oct 2010 03:57:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/10/25/131176.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/131176.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/10/25/131176.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/131176.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/131176.html</trackback:ping><description><![CDATA[<h3> <span>Wt錛氱畝浠?/span> </h3> <p>Wt(闊沖悓'witty')鏄竴涓狢++搴擄紝鐢ㄤ互寮鍙戜氦浜掓eb搴旂敤銆?/p> <p>Wt鐨凙PI<b>浠idget涓轟腑蹇?/b>錛屽皢妗岄潰GUI APIs鐨勮壇濂芥祴璇曟ā寮忓紩鍏eb寮鍙戙?Wt涓哄紑鍙戣呮彁渚涗簡鍑犱箮鎵鏈塛eb瀹炵幇緇嗚妭鐨勬娊璞★紝鍏朵腑鍖呮嫭浜嬩歡澶勭悊銆佸浘鍍忔敮鎸併佷紭闆呴檷綰э紙鎴栨笎榪涘寮猴級(jí)銆佸強(qiáng)鑹ソ鐨刄RL澶勭悊銆?/p> <p>涓庡叾浠栬澶氬熀浜庨〉闈㈢殑寮鍙戞鏋剁浉姣旓紝W(xué)t鍙互鍒涘緩鐘舵佸寲鐨勫簲鐢紝鍚屾椂瀹炵幇浜嗛珮搴︾殑浜や簰鎬у拰鍙闂э紱鍏朵氦浜掓т綋鐜板湪Wt鍙互緇煎悎浣跨敤鍚勭鎶鏈紝濡侫jax絳夛紱鍏跺彲璁塊棶鎬т綋鐜板湪Wt鍙互浣垮簲鐢ㄥ湪蹇呰鐨勬椂鍊欐敮鎸佺函HTML嫻忚鍣紱榪欎簺鐗規(guī)х殑鑾峰緱鍏呭垎鍒╃敤浜嗚嚜鍔ㄧ殑<b>浼橀泤闄嶇駭鎴栨笎榪涘寮?/b>銆?/p> <p>Wt搴撹繕鑷甫浜嗗簲鐢ㄦ湇鍔″櫒紼嬪簭錛屽彲閰嶇疆涓虹嫭绔嬬殑Web鏈嶅姟鍣紝褰撶劧涔熷厑璁?dāng)R氳繃FastCGI榪炲悓鍏朵粬Web鏈嶅姟鍣ㄨ繘琛屾暣鍚堛?/p> <h4>浜や簰鎬с佸畨鍏ㄦс佸彲璁塊棶鎬?/h4> <p>鍩轟簬欏甸潰鐨勫紑鍙戞鏋訛紙濡侾HP銆丣SP/JSF銆丷uby on Rails絳夛級(jí)娌℃湁瀹炵幇搴曞眰鍩虹鎶鏈殑鎶借薄錛岃繖浜涙妧鏈寘鎷琀TML/XHTML銆丣avaScript銆丆SS銆丄jax銆丗orms銆丏HTML 銆丼VG/VML/Canvas絳夈傛樉鐒?dòng)灱屽熮Z簬欏甸潰鐨勫紑鍙戞鏋跺繀欏昏姹傚紑鍙戣呴殢鏃剁啛鎮(zhèn)夊拰鎺屾彙榪欎簺鍩烘湰鎶鏈紝鍚屾椂褰撴祻瑙堝櫒涓嶆敮鎸佹椂錛岃繕瑕佷負(fù)搴旂敤鐨勪紭闆呴檷綰ц礋璐c傚彟澶栵紝濡傛灉搴旂敤閲囧彇鏃╂湡HTML欏甸潰涓轟腑蹇冪殑璁捐妯″紡錛屽紑鍙戣呬笉浠呰瀹炵幇鎺у埗鍣ㄤ互鍛婅瘔鐢ㄦ埛濡備綍浠庝竴涓〉闈㈣煩杞埌鍙︿竴涓〉闈紝鑰屼笖榪樿鍦ㄩ噰鐢ㄤ竴浜涢珮綰jax鎶鏈椂鎵嬪伐璁捐鍜岀淮鎶ゅ鎴風(fēng)涓庢湇鍔″櫒绔殑閫氳銆?/p> <p>鍙︿竴鏂歸潰錛屽氨綆楁槸綰補(bǔ)鐨凙jax妗嗘灦錛屼篃瑕佹眰寮鍙戣呴氳繃綣佹潅鐨凧avaScript緙栫▼鏉ュ鐞嗘祻瑙堝櫒鐨勬紓琛屼負(fù)鍜屽鎴風(fēng)涓庢湇鍔″櫒绔棿鐨勫畨鍏ㄩ氳錛岃繖浜涘鐞嗕換浣曚漢閮戒笉鑳借煩榪囧幓涓嶄笌鐞嗕細(xì)銆傚悓鏃訛紝榪欎簺搴旂敤閫氬父涓嶈兘絎﹀悎鍙闂х殑鍘熷垯錛屼篃涓嶈兘寰堝ソ琚悳绱㈡満鍣ㄤ漢绱㈠紩鍒般?/p> <p>瀹夊叏鏂歸潰錛岀敓鎴怘TML鎴栧~鍏匟TML妯$増寰堝鏄撳鑷村畨鍏ㄩ棶棰橈紝濡?a >璺ㄧ珯鑴氭湰錛圶SS錛?</a>鍜?a > 璺ㄧ珯璇鋒眰浼狅紙CSRF錛?/a>錛沊SS闂涓鑸敱錛堢枏蹇斤級(jí)鍏佽宓屽叆JavaScript浠g爜寮曡搗錛?CSRF闂涓鑸敱錛堢浉淇★級(jí)Cookies錛堝彲錛変綔涓鴻璇佹墜孌靛紩璧楓備綔涓哄紑鍙戣咃紝榪欎簺瀹夊叏闂灝嗘槸寰堥毦閬垮厤鐨勶紝鍥犱負(fù)鎴戜滑鏈夋椂闇瑕佸厑璁哥敤鎴鋒彃鍏ヨ嚜宸辯殑JavaScript 浠g爜鏉ュ疄鐜版煇浜涘姛鑳斤紝浣嗗紑鍙戞鏋舵湰韜嵈娌℃彁渚涚粰鎴戜滑榪囨護(hù)鏈哄埗銆?/p> <p>鐩稿弽錛屼嬌鐢╓t鏉ラ儴緗瞁eb搴旂敤鍙互瀹屽叏鐢–++鏉ュ紑鍙戯紝W(xué)t鑷姩浜х敓鎵蹇呴』鐨?HTML/XHTML銆丆SS銆丣avascript銆丆GI銆丼VG/VML/Canvas鍜孉jax浠g爜錛涗笌姝ゅ悓鏃訛紝浠g爜鐨勫畨鍏ㄦу拰嫻忚鍣ㄥ吋瀹規(guī)х瓑闂閮藉皢杞氦緇橶t銆備緥濡傦紝鍦ㄥ彲鑳界殑鎯呭喌涓嬶紝 Wt灝嗘渶澶ч檺搴︾殑浣跨敤JavaScript鍜孉jax錛屼絾鍦ˋjax鍔熻兘鍙楅檺鏃訛紝W(xué)t涔熻兘淇濊瘉緋葷粺鍔熻兘榪愯姝e父銆傚叾鍘熺悊鏄疻t灝嗗厛鍚敤綰疕TML/CGI搴旂敤錛岄殢鍚庡湪鍙兘鐨勬儏鍐典笅娓愯繘澧炲己鑷矨jax搴旂敤銆傚彟澶栵紝W(xué)t鎻愪緵浜嗗唴緗殑瀹夊叏鎬ц冭檻銆?/p> <h4>鍏稿瀷搴旂敤涓鵑殔錛?/h4> <ul> <li>鐢變簬Wt C++ Web搴旂敤鏈嶅姟鍣ㄥ崰鐢ㄨ緝?yōu)畯鐨勭墿鐞喗I洪棿錛屾晠鑰屽彲浠ヤ負(fù)<b>宓屽叆寮忕郴緇?/b> 鎻愪緵鍩轟簬Web鐨凣UIs錛?/li> <li>Wt鍙互涓洪渶瑕?b>鏁村悎鐜版湁C++搴?/b>鐨勫簲鐢ㄦ彁渚涘熀浜嶹eb鐨凣UIs, 榪欎簺 搴旂敤鍙兘鍖呮嫭縐戝涓婄殑鎴栧伐紼嬩笂鐨勫簲鐢紱</li> <li>Wt鍙互鍒涘緩浠?b>鐜版湁C++妗岄潰搴旂敤</b>鍒癢eb鐨勬湁鏁堟笭閬擄紱</li> <li>Wt榪樺彲浠ュ簲鐢ㄤ簬涓浜?b>楂樻ц兘銆佸鏉傜殑</b>Web搴旂敤錛岃繖鏍風(fēng)殑搴旂敤 涓鑸叿鏈夐珮搴﹀畾鍒躲佸厖鍒嗗埄鐢ˋjax鐨勭壒鐐癸紝鍚屾椂鍏鋒湁瀹屽叏鐨勫彲璁塊棶鎬у拰杈冮珮鐨?鎼滅儲(chǔ)寮曟搸浼樺寲(SEO)闇姹?/li> </ul> <h4>浣跨敤Wt鐨勫叾浠栧ソ澶?/h4> <ul> <li>鍙互浣跨敤鎴戜滑鐔熸?zhèn)夌殑妗岄潰GUI妯″紡寮鍙慦eb搴旂敤錛?/li> <li>Wt涓烘垜浠彁渚涗簡騫塊様鐨剋idgets闆嗭紝榪欎簺widgets鍙互鍦ㄧ幆澧冧笉鏀寔 JavaScript鐨勬儏鍐典笅鐓у父宸ヤ綔錛堝綋鐒?dòng)灱屽鏋滄敮鎸佸垯鏁堟灉鏇翠交I級(jí)錛?/li> <li>鍦╓t涓鎴風(fēng)涓庢湇鍔″櫒绔殑楠岃瘉鍜屼簨浠跺鐞嗛噰鐢ㄥ悓涓瑙勮寖錛?/li> <li>Wt鍏佽寮鍙戣呴夋嫨XHTML鍜孋SS鏉ヨ繘琛屽竷灞鍜屾牱寮忕紪杈戯紱</li> <li>Wt鍙敓鎴愭爣鍑嗙殑銆佸吋瀹圭殑HTML鎴朮HTML浠g爜錛?/li> <li>Wt閲囩敤鍐呰仈VML銆佸唴鑱擲VG銆丠TML 5 鐢誨竷鎴朠NG鍙敓鎴愬簲鐢ㄤ簬Web鐨勫彲縐繪鐨勩?鍙嶉敮榻跨殑鍥懼儚錛屽綋鐒惰繖浜涘浘鍍忚繕鍙互杞繪澗娓叉煋涓篜DF鏍煎紡錛?/li> <li> </li> <li>Wt鍙互閬垮厤甯歌鐨勫畨鍏ㄩ棶棰橈紝鍥犱負(fù)Wt鎷ユ湁瀵硅〃紺哄眰鐨勫畬鍏ㄦ帶鍒訛紝騫惰兘澶熶富鍔?榪囨護(hù)鎺?i>澶勪簬媧誨姩鐘舵佺殑</i>鏍囩鍜屽睘鎬э紱Wt鍚屾椂瀹炵幇浜嗕笟鍔¢昏緫鐨勯殣钘忥紝騫?閫氳繃鐘舵佸寲鐨勮璁$畝鍖栦簡璁よ瘉鏈哄埗錛?/li> <li>鍩轟簬Wt鐨勫簲鐢ㄧ殑杞藉叆鏃墮棿鏋佺煭涓斿崰鐢ㄥ甫瀹戒篃寰堜綆錛岀┒鍏跺師鍥犳槸Wt涓繖浜涚壒鐐?浠呭彈闄愪簬欏甸潰鏄劇ず鐨勫鏉傜▼搴︼紝鑰屼笉鏄簲鐢ㄧ▼搴忚嚜韜殑灝哄錛沇t榪樺疄鐜頒簡鎵鏈夌殑 甯哥敤鎶宸у拰鏂規(guī)硶錛屼互浼樺寲搴旂敤鐨勫揩閫熷弽搴旓紝W(xué)t鍑犱箮鍋氬埌浜嗛拡瀵規(guī)墍鏈夋祻瑙堝櫒鐨勪紭鍖栵紱</li> <li>Wt鎻愪緵浜嗘湇鍔″櫒绔垵濮嬬殑浜嬩歡澶勭悊錛屽嵆<i>鏈嶅姟鍣ㄦ帹</i>鎴?i>Comet</i>錛?榪欓儴鍒咥PI浣跨敤綆鍗曘佺ǔ瀹氫笖鍦ㄦ墍鏈夋祻瑙堝櫒涓婂潎鑳藉疄鐜幫紱</li> <li>Wt鍦ㄦ湇鍔″櫒閮ㄧ講涓婏紝鏃㈠彲浠ヤ嬌鐢ㄥ唴緗殑httpd錛屽張鍙互浣跨敤FastCGI/ISAPI錛?褰撶劧鍓嶈呭疄鏂借搗鏉ユ洿綆渚挎槗琛屻?/li> </ul><img src ="http://m.shnenglu.com/lapcca/aggbug/131176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-10-25 11:57 <a href="http://m.shnenglu.com/lapcca/archive/2010/10/25/131176.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>PE鏂囦歡澶寸殑緇撴瀯鍥?/title><link>http://m.shnenglu.com/lapcca/archive/2010/09/30/128122.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Thu, 30 Sep 2010 04:23:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/09/30/128122.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/128122.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/09/30/128122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/128122.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/128122.html</trackback:ping><description><![CDATA[<img src="http://m.shnenglu.com/images/cppblog_com/lapcca/13342/o_PE%e6%96%87%e4%bb%b6%e5%a4%b4%e7%bb%93%e6%9e%84%e5%9b%be1.jpg" />聽<br /><br />鏈榪戝涔?fàn)PE鏂囦歡錛屻婅蔣浠跺姞瀵嗘妧鏈唴騫曘嬬涓绔犳湁璇︾粏鐨勮瑙?br />涓嶈繃鐪嬩簡鍗婂ぉ鎼炵殑澶村埌鏅曚簡錛岀粨鏋勫お澶氾紝鏈鍚庤嚜宸辨煡鐪媁INNT.H澶存枃浠?br />鎶奝E澶翠腑鐨勭粨鏋勭敾浜嗕竴寮犲浘錛屽湪鐪嬩功瀛︿範(fàn)鐨勬椂鍊欒竟鐪嬩功杈圭湅鍥懼涔?fàn)鐞嗚В杈冨揩锛?br />鏈変粈涔堥敊璇楂樻墜鎸囨錛岃阿璋紒<br />鍏舵寮虹儓寤鴻澶у鐪嬨婅蔣浠跺姞瀵嗘妧鏈唴騫曘嬬涓绔犻厤鍚堟湰鍥撅紝鏁堟灉涓嶉敊鍝︼紒<br />闄勪笂鑷繁鍐欑殑涓涓狿E鏂囦歡鏌ョ湅鍣紝綆鍗曘傞噷闈㈢敤浜嗕竴浜涖婅蔣浠跺姞瀵嗘妧鏈唴騫曘?br />鍏夌洏涓殑浠g爜錛岀敤MFC鍐欑殑錛?br />閿欒鍦ㄦ墍闅懼厤錛屾伋璇峰ぇ瀹舵寚姝o紒<br /><br /><br /><a href="/Files/lapcca/PE鏂囦歡鏌ョ湅鍣?rar">PE鏂囦歡鏌ョ湅鍣ㄦ簮鐮?/a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />杞嚜錛?a >http://bbs.pediy.com/showthread.php?t=62693&highlight=rar</a><img src ="http://m.shnenglu.com/lapcca/aggbug/128122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-09-30 12:23 <a href="http://m.shnenglu.com/lapcca/archive/2010/09/30/128122.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>DLL鍦ㄥ簲鐢ㄧ▼搴忛棿鍏變韓鏁版嵁http://m.shnenglu.com/lapcca/archive/2010/09/17/126860.html闃肯闃肯Fri, 17 Sep 2010 05:38:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/09/17/126860.htmlhttp://m.shnenglu.com/lapcca/comments/126860.htmlhttp://m.shnenglu.com/lapcca/archive/2010/09/17/126860.html#Feedback1http://m.shnenglu.com/lapcca/comments/commentRss/126860.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/126860.html

#pragma聽data_seg( " .mydata " )
POINT聽pPoint
= { 0 , 0 } ; // must聽initialize
#pragma聽data_seg()
#pragma聽comment(linker,
" /SECTION:.mydata,RWS " )


闃肯 2010-09-17 13:38 鍙戣〃璇勮
]]>
鍒╃敤鏂壒鏋?Stirling)鍏紡姹傝Вn!http://m.shnenglu.com/lapcca/archive/2010/09/13/126499.html闃肯闃肯Mon, 13 Sep 2010 03:52:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/09/13/126499.htmlhttp://m.shnenglu.com/lapcca/comments/126499.htmlhttp://m.shnenglu.com/lapcca/archive/2010/09/13/126499.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/126499.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/126499.html 聽聽



闃肯 2010-09-13 11:52 鍙戣〃璇勮
]]>
BMP鏂囦歡澶存牸寮?bmp鏂囦歡浜岃繘鍒惰В鏋?/title><link>http://m.shnenglu.com/lapcca/archive/2010/09/09/126229.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Thu, 09 Sep 2010 04:10:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/09/09/126229.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/126229.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/09/09/126229.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/126229.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/126229.html</trackback:ping><description><![CDATA[<p> <span>BMP</span> <span>鏂囦歡澶存牸寮?/span> <span> <span>bmp</span> </span> <span>鏂囦歡浜岃繘鍒惰В鏋?/span> <span>,bmp</span> <span>鏂囦歡瑙f瀽</span> <span>,bmp</span> <span>瀛樺偍鏍煎紡</span> <span> </span> </p> <p> <span>涓嬮潰鐨勮〃鏍兼槸鎴戞暣鐞嗙殑</span> <span>BMP</span> <span>鏂囦歡澶寸殑鏍煎紡銆?/span> </p> <p> <span>鏂逛究澶у鏌ヨ銆?/span> </p> <p>聽</p> <p> <span>Bmp</span> <span>鐨勬枃浠跺ご鏄?/span> <span>54 , </span> <span>浠ヤ笅閮芥槸</span> <span>24 bit,</span> </p> <p> <span>濡傛灉</span> <span> </span> <span>鍥懼儚澶у皬鏄?/span> <span>720 * 480 ,</span> <span>閭d箞鏂囦歡澶у皬鏄?/span> <span>: 54 + 720 * 480 *3 </span> <span>寰堝ソ鐞嗚В</span> <span>,</span> </p> <p> <span>濡傛灉</span> <span> </span> <span>鍥懼儚澶у皬鏄?/span> <span> <span>333 * 333</span> </span> <span>閭d箞鏂囦歡澶у皬灝變笉鏄?/span> <span>: 54 + 333 * 333 *3 </span> <span>浜?/span> <span>,</span> <span>濂囨箞</span> <span>?,<br /><br />聽聽聽鎬葷畻寮曞嚭楂樹漢浜嗭紝鎴戝氨鍏竷絳旀鍚э細(xì)聽<br /><span>聽聽聽濡傛灉</span><span></span><span>鍥懼儚澶у皬鏄?/span><span>聽<span>1*7聽 </span></span><span>閭d箞鏂囦歡澶у皬灝辨槸</span><span>: 54聽+聽1*7*3 + 7*n聽</span><span>浜?/span><span>,<br /></span><span>聽聽聽濡傛灉</span><span></span><span>鍥懼儚澶у皬鏄?/span><span>聽<span>3*5聽 </span></span><span>閭d箞鏂囦歡澶у皬灝辨槸</span><span>: 54聽+聽3*5*3 +聽5*n聽</span><span>浜?/span><span>,<br /></span><span>聽聽聽濡傛灉</span><span></span><span>鍥懼儚澶у皬鏄?/span><span>聽11<span>*77聽 </span></span><span>閭d箞鏂囦歡澶у皬灝辨槸</span><span>: 54聽+聽11*77*3 +聽77*n聽</span><span>浜?/span><span>,<br /></span>聽聽聽鎬諱箣鏄鏋渨idth * high * 3聽 + high * n聽錛侊紳 4鐨勫嶆暟錛?閭d箞鏂囦歡澶у皬灝辨槸 54聽+聽聽width * high * 3 + high*n聽 浜嗐?br /><br />聽聽聽n鐨勫彇鍊艱寖鍥存槸 0 锝烇綖3聽聽聽鐩村埌綆椾笅鏉ワ紝size鏄?鐨勫嶆暟銆?br /><br /><img src="http://m.shnenglu.com/images/cppblog_com/lapcca/13342/o_bmp.jpg" /><br /><br /><br />杞嚜錛?a >http://www.cnitblog.com/dvb-dvb/archive/2009/07/06/59865.aspx</a></span> </p><img src ="http://m.shnenglu.com/lapcca/aggbug/126229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-09-09 12:10 <a href="http://m.shnenglu.com/lapcca/archive/2010/09/09/126229.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Application Compatibility - Session 0 Isolationhttp://m.shnenglu.com/lapcca/archive/2010/09/08/126152.html闃肯闃肯Wed, 08 Sep 2010 06:03:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/09/08/126152.htmlhttp://m.shnenglu.com/lapcca/comments/126152.htmlhttp://m.shnenglu.com/lapcca/archive/2010/09/08/126152.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/126152.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/126152.html

In Windows XP, Windows Server 2003, and earlier versions of the Windows operating system, all services run in the same session as the first user who logs on to the console.聽 This session is called Session 0. Running services and user applications together in Session 0 poses a security risk because services run at elevated privilege and therefore are targets for malicious agents who are looking for a means to elevate their own privilege level.

The Microsoft Windows Vista operating system mitigates this security risk by isolating services in Session 0 and making Session 0 non-interactive.聽 In Windows Vista (and Windows Longhorn Server), only system processes and services run in Session 0.聽 The user logs on to Session 1.聽 On聽Windows Longhorn Server,聽subsequent users log on to subsequent sessions (Session 2, Session 3 etc).聽 This means that services never run in the same session as users' applications and are therefore protected from attacks that originate in application code.

Specific examples of affected driver classes include:

  • Printer drivers, which are loaded by the spooler service
  • All drivers authored with the User Mode Driver Framework (UMDF), because these drivers are hosted by a process in Session 0

Application classes affected by this feature:

  • Services that create a UI
  • A service that tries to use window message functions such as SendMessage and PostMessage to communicate with an application
  • Applications creating globally named objects

Sessions in Windows XP / 2003
OK - so we've already mentioned that Session 0 poses a security risk because services run at elevated privilege.聽 The first user on the console also runs in Session 0 - which provides the most common attack vector used to target unsuspecting users.

Sessions in Windows Vista
In Windows Vista, Session 0 is created for services and user-mode drivers.聽 Session 1 is created for the first user who logs in.聽 Applications for this user run in Session 1.

  • Each time a user logs in, a session is created for that user
  • Each session contains a collection of windows stations
  • The only supported interactive window station is WinSta0, so each session gets one of these
  • WinSta0 contains the keyboard, mouse, and display device
  • Each window station can contain multiple desktops, which have logical display surfaces and can be used to manage windows
  • Messages can only be sent between processes that are on the same desktop (the hook procedure of a process can also only receive messages intended for windows created on the same desktop)
  • Only one desktop at a time is active
  • There are several default desktops 鈥?default, WinLogon (secure), and screen-saver

OK - so what聽could this actually look like in a real world scenario?聽 Consider the following example - if a service belonging to an application generates a UI element in Session 0聽- for example a dialog box waiting for the user to click "OK" or "Cancel", the application is now waiting on the service, and the UI is not displayed in the user session.聽 From the user perspective, the application appears to be hung, when in actual fact it is performing quite normally, and patiently waiting for a user response that the user cannot see!

As you can imagine - this presents a problem for users, administrators and developers.聽 However, there are some quick mitigating factors to consider.

  • If the application's service uses a UI, a built-in mitigation in Windows Vista allows the user to interact with the Session 0 UI in a special desktop.聽 This will make the UI specific to the application available and not the entire Session 0 desktop.
  • If the application creates globally named objects, then use the Windows XP compatibility mode to ensure that the application will continue to work with the Session 0 services.

When testing applications for compatibility with Windows Vista, consider the following test scenarios:

  • Test and verify the application on Windows XP in a Terminal Server mode or a Fast User Switching (FUS) mode. 聽If the application works properly on Windows XP in these scenarios, then it is very likely to work under Windows Vista.
  • Verify that the application functions properly after applying the Window XP compatibility mode, which contains mitigation for some of the Session 0 issues.
  • Test the driver in Windows Vista to ensure that it runs properly. 聽If that is not possible, test the driver in Windows XP with FUS enabled and multiple users logged on. 聽If the driver works correctly for second and subsequent logged-on users, it is not likely to be affected by the Session 0 changes in Windows Vista.聽 The only issues that this test does not detect are those related to the absence of the video driver in Session 0 in Windows Vista.

Finally, you can leverage the following Windows聽Vista capability solutions:

  • Use client or server mechanisms such as remote procedure call (RPC) or named pipes to communicate between services and applications.
  • Use the WTSSendMessage function to create a simple message box on the user's desktop. 聽This allows the service to give the user a notification and request a simple response.
  • For more complex UI, use the CreateProcessAsUser function to create a process in the user's session.
  • Explicitly choose either the Local\ or Global\ namespace for any named objects, such as events or mapped memory, which the service makes available.

And that will do it for a quick look at how Session 0 isolation affects Application Compatibility in Windows Vista.聽 The links below contain more information on some of the concepts discussed above.聽 Until next time ...



闃肯 2010-09-08 14:03 鍙戣〃璇勮
]]>
瀛︿範(fàn)linux/unix緙栫▼鏂規(guī)硶鐨勫緩璁?瀛︿範(fàn)Linux鐨勫洓涓楠?/title><link>http://m.shnenglu.com/lapcca/archive/2010/08/31/125386.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Tue, 31 Aug 2010 03:49:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/08/31/125386.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/125386.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/08/31/125386.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/125386.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/125386.html</trackback:ping><description><![CDATA[<p> <img src="http://m.shnenglu.com/images/cppblog_com/lapcca/13342/o_41__600x100_linux_logo.jpg" /> <br /> <font face="Courier New">鍋囪浣犳槸璁$畻鏈虹鐝嚭韜紝璁$畻鏈虹郴鐨勫熀鏈紼嬪鏁版嵁緇撴瀯銆佹搷浣滅郴緇熴佷綋緋葷粨鏋勩佺紪璇戝師鐞嗐佽綆楁満緗戠粶浣犲叏淇繃<br />鎴戞兂澶ф鍙互鍒嗕負(fù)4涓樁孌碉紝姘村鉤浠庝綆鍒伴珮<br />浠庡畨瑁呬嬌鐢?>linux甯哥敤鍛戒護(hù)=>linux緋葷粺緙栫▼=>鍐呮牳寮鍙戦槄璇誨唴鏍告簮鐮?br />鍏朵腑瀛︿範(fàn)linux甯哥敤鍛戒護(hù)鏃跺氨瑕佸浼?xì)鑷忿q紪璇戝唴鏍革紝浼樺寲緋葷粺錛岃皟鏁村弬鏁?br />瀹夎鍜屽父鐢ㄥ懡浠や功澶浜嗭紝鎵炬湰紼嶅井璇︾粏鐐圭殑灝眔k錛屽叾闂撮渶瑕佸浼?xì)姝e垯琛ㄨ緫旨?br />緋葷粺緙栫▼鎺ㄨ崘銆婇珮綰nix鐜緙栫▼銆嬶紝榛戣瘽鍙獳PUE<br />榪樻湁銆妘nix緗戠粶緙栫▼銆?br />榪欐椂鍊欏ぇ姒傝繕闇瑕佺湅璧勬枡鐞嗚Вelf鏂囦歡鏍煎紡錛岃繛鎺ュ櫒鍜屽姞杞藉櫒錛宑mu鐨勪竴鏈暀鏉愪腑鏂囧悕涓恒婃繁鍏ョ悊瑙h綆楁満緋葷粺銆嬫瘮杈冨ソ<br />鍐呮牳寮鍙戦槄璇誨唴鏍告簮鐮侀樁孌碉紝浠庡啓椹卞姩鍏ユ墜閫愭笎娣卞叆linux鍐呮牳寮鍙?br />鍙傝冧功濡備笅銆妉inux device drivers銆嬶紝榛戣瘽鍙玪dd<br />銆妉inux kernel development銆嬶紝榛戣瘽鍙玪kd<br />銆妘nderstading the linux kernel銆嬶紝榛戣瘽鍙玼tlk<br />銆妉inux婧愮爜鎯呮櫙鍒嗘瀽銆?br />榪欏洓鏈功涓烘悶鍐呮牳鐨勫繀璇諱功綾?br />鏈鍚庯紝絎笁闃舵鍜岀鍥涢樁孌墊渶閲嶅姩鎵嬶紝絀鴻█鏃犵泭錛屽厜鐪嬩功涔熶笉緗╋紝涓嶅姩鎵嬮偅浜涗笢瑗跨悊瑙d笉浜?br /><br /><strong><font color="#666633" size="4">瀛︿範(fàn)linux/unix緙栫▼鏂規(guī)硶鐨勫緩璁?/font></strong><br />寤鴻瀛︿範(fàn)璺緞錛?br />銆銆棣栧厛鍏堝瀛︾紪杈戝櫒錛寁im, emacs浠涔堢殑閮借銆?br />鐒跺悗瀛ake file鏂囦歡錛屽彧瑕佺煡閬撲竴鐐瑰氨琛岋紝榪欐牱灝卞彲浠ュ噯澶囩紪紼嬪簭浜嗐?br />銆銆鐒跺悗鐪嬬湅銆奀紼嬪簭璁捐璇█銆婯&R錛岃繖鏍峰憿錛屽熀鏈笂灝卞彲浠ヨ繘琛屼竴鑸殑緙栫▼浜嗭紝欏轟究鎵炬湰鏁版嵁緇撴瀯鐨勪功鏉ョ湅銆?br />銆銆濡傛灉鎯沖涔?fàn)UNIX/LINUX鐨勭紪紼嬶紝銆夾PUE銆嬬粷瀵圭粡鍏哥殑鏁欐潗錛屽姞娣變竴涓嬪姛搴曪紝瀛︿範(fàn)銆奤NP銆嬬殑絎簩鍗楓傝繖鏍峰熀鏈笂緋葷粺鏂歸潰鐨勫氨鍙互鎺屾彙浜嗐?br />銆銆鐒跺悗鍐嶇湅Douglus E. Comer鐨勩婄敤TCP/IP榪涜緗戦檯浜掕繛銆嬬涓鍗鳳紝瀛︿範(fàn)涓涓嬬綉緇滅殑鐭ヨ瘑錛屽啀鐪嬨奤NP銆嬬殑絎竴鍗鳳紝涓嶄粎瀛︿範(fàn)緗戠粶緙栫▼錛岃屼笖瀵圭郴緇熺紪紼嬬殑涓浜涘父鐢ㄧ殑鎶宸у氨寰堢啛鎮(zhèn)変簡錛屽鏋滅戶緇綉緇滅紪紼嬶紝寤鴻鐪嬨奣CP/IP榪涜緗戦檯浜掕繛銆嬬殑絎笁鍗鳳紝閲岄潰鏈夊緢澶氬叧浜庡簲鐢ㄥ崗璁畉elnet銆乫tp絳夊崗璁殑緙栫▼銆?br />濡傛灉鎯沖啓璁懼椹卞姩紼嬪簭錛岄鍏堟?zhèn)ㄧ殑绯痪l熺紪紼嬬殑鎺ュ彛姣斿鏂囦歡銆両PC絳夊繀欏昏鐔熺煡浜嗭紝鍐嶅涔?fàn)銆奓DD銆?銆?br />銆銆瀵逛簬鍑犳湰緇忓吀鏁欐潗鐨勮瘎浠鳳細(xì)<br />銆銆銆奣he C Programing Language銆婯&R 緇忓吀鐨凜璇█紼嬪簭璁捐鏁欐潗錛屼綔鑰呮槸C璇█鐨勫彂鏄庤咃紝鏁欐潗鍐呭娣卞叆嫻呭嚭銆傝櫧鐒舵湁鐐硅侊紝浣嗘槸蹇呭鐨勪竴鏈墜鍐岋紝鐜板湪鏈夋椂鍊欐垜榪樺父緲葷炕銆傜瘒騫呮瘮杈冨皬錛屼絾鏄瘡鐪嬩竴閬嶏紝灝辨湁涓閬嶇殑鏀惰幏銆傚彟澶栦篃鍙敤璋旦寮虹殑銆奀璇█紼嬪簭璁捐銆嬩唬鏇褲?br />銆銆銆夾dvanced Programing in Unix Envirement銆?W.Richard Stevens錛氫篃鏄潪甯哥粡鍏哥殑涔︼紙搴熻瘽錛孲tevens鐨勪功鍝湁涓嶇粡鍏哥殑錛侊級(jí)錛岃櫧鐒跺垵瀛﹁呭氨鍙互鐪嬶紝浣嗘槸浜嬪疄涓婂畠鏄奤nix Network Programing銆嬬殑涓鏈緟鍔╄祫鏂欍傚浗鍐呯殑緲昏瘧鐨勩奤NIX鐜楂樼駭緙栫▼銆嬬殑姘村鉤涓嶆庝箞鏍鳳紝鐜板湪鏈夊獎(jiǎng)鍗扮増錛岀洿鎺ヨ鑻辨枃姣旇涓枃鏉ュ緱瀹規(guī)槗銆?br />銆銆銆奤nix Network Programing銆媁.Richard Stevens錛氱涓鍗瘋BSD Socket緗戠粶緙栫▼鎺ュ彛鍜屽彟澶栦竴縐嶇綉緇滅紪紼嬫帴鍙g殑錛屼笉榪囩幇鍦ㄤ竴鑸兘鐢˙SD Socket錛屾墍浠ヨ繖鏈功鍙鐪嬪ぇ綰︿竴鍗婂灝卞彲浠ヤ簡銆傜浜屽嵎娌℃湁璁捐鍒扮綉緇滅殑涓滆タ錛屼富瑕佽榪涚▼闂撮氳鍜孭osix綰跨▼銆傛墍浠ョ湅浜嗐夾PUE銆嬩互鍚庯紝灝卞彲浠ョ湅瀹冧簡錛屽熀鏈笂緋葷粺鐨勪笢瑗垮氨鐢便夾PUE銆嬪拰銆奤NP銆媣ol2姒傛嫭浜嗐傜湅榪囥奤NP銆嬩互鍚庯紝鎮(zhèn)ㄥ氨浼?xì)鐭ラ亾绯痪l熺紪紼嬬殑緇濆ぇ閮ㄥ垎緙栫▼鎶宸э紝鍗充嬌鍗蜂竴鏄緗戠粶緙栫▼鐨勩傚浗鍐呮槸娓呭崕緲昏瘧寰椼奤nix緗戠粶緙栫▼銆嬶紝緲昏瘧鑰呭緱鍔熷簳涔熸瘮杈冮珮錛岀炕璇戝湴姣旇緝濂姐傛墍浠ュ緩璁繕鏄湅涓枃鐗堛?br />銆銆銆奣CP/IP紲ヨВ銆嬩竴鍏變笁鍗鳳紝鍗蜂竴璁插崗璁紝鍗蜂簩璁插疄鐜幫紝鍗蜂笁璁茬紪紼嬪簲鐢ㄣ傛垜娌℃湁鎬庝箞鐪嬭繃銆傦紝浣嗘槸鎹涔熷緢緇忓吀鐨勶紝鍥犱負(fù)鎴戞病鏈夋椂闂寸湅鍗蜂簩錛屾墍浠ヤ笉渚胯瘎浠楓?br />銆銆銆婄敤TCP/IP榪涜緗戦檯浜掕繛銆婦ouglus.E.Comer 涓鍏變笁鍗鳳紝鍗蜂竴璁插師鐞嗭紝鍗蜂簩璁插疄鐜幫紝鍗蜂笁璁查珮綰у崗璁傛劅瑙変笂榪欎竴濂楄姣擲tevens鐨勯偅涓濂楄濂斤紝灝辮繛Stevens涔熶笉寰椾笉鎵胯瀹冪殑絎竴鍗烽潪甯哥粡鍏搞備簨瀹炰笂錛岀涓鍗峰嵆浣夸綘娌℃湁涓鐐圭綉緇滅殑鐭ヨ瘑錛岀湅瀹屼互鍚庝篃浼?xì)瀵咕|戠粶鐨勬潵榫欏幓鑴変簡濡傛寚鎺屻傜涓鍗蜂腑榪樻湁寰堝涔?fàn)棰樹篃璁捐寰椌l忓吀鍜屽疄鐢紝鍥犱負(fù)浣滆呮湰韜氨鏄竴浣嶆暀甯堬紝騫朵笖鍗蜂竴鏄浗澶栫爺絀剁敓鐨勬暀鏉愩備範(fàn)棰樺茍娌℃湁絳旀錛岀暀緇欒鑰呮濊冿紝鍥犱負(fù)闂寰楃瓟妗堝彲浠ヨ浣犳垚涓轟竴涓腑綰х殑Hacker錛岃繖浜涢棶棰樼殑絳旀鍙互璞ouglus绱㈠彇錛屼笉榪囧彧鏈変粬鍙粰鏁欏笀鍗蜂簩鎴戞病鏈夋庝箞鐪嬶紝鍗蜂笁鍙互浣滀負(fù)鍙傝冩墜鍐岋紝鍏朵腑鍦頒緥瀛愪篃寰堢粡鍏搞傚鏋滄?zhèn)ㄧ湅杩嘠term鐨勬簮浠g爜錛屽氨浼?xì)鐭ラ亾Qterm鐨則elnet 瀹炵幇閮ㄥ垎澶у鏁板氨鏄粠榪欐湰涔︾殑婧愪唬鐮佽繃鏉ョ殑銆傚浜庣綉緇滃師鐞嗙殑涔︼紝鎴戞帹鑽愬畠錛岃屼笉鏄疭tevens鐨勩奣CP/IP紲ヨВ銆嬨?br />銆銆銆奜perating System - Design and Implement銆嬭繖涓槸璁叉搷浣滅郴緇熺殑涔︼紝鐢∕inix鍋氱殑渚嬪瓙銆備綔鑰呮瘝璇笉鏄嫳鏂囷紝鎵浠ヨ嫳鏂囩湅璧鋒潵姣旇緝鏅︽訂銆傚浗鍐呯炕璇戠殑鏄婃搷浣滅郴緇熻璁′笌瀹炵幇銆嬶紝鎴戞病鐪嬭繃涓枃鐗堬紝鍥犱負(fù)緲昏瘧鑰呮槸灝ゆ檵鍏冿紝浠栫炕璇戠殑銆夾PUE銆嬪凡緇忚鎴戝け鏈涘ご欏朵簡銆傝浜嗚繖鏈功錛屽鎿嶄綔緋葷粺鐨勫簳灞傛庝箞宸ヤ綔鐨勫氨浼?br />鏈変竴涓竻鏅扮殑璁よ瘑銆?br />銆銆銆奓inux Device Driver銆?e 錛屼負(fù)鏁頒笉澶氱殑鍏充簬Linux璁懼椹卞姩紼嬪簭鐨勫ソ涔︺備笉榪囧唴瀹規(guī)湁浜涙潅涔憋紝濡傛灉鎮(zhèn)ㄦ病鏈変竴浜涘啓椹卞姩鐨勭粡楠岋紝鍒濇鐪嬩細(xì)鏈変簺鎽鎬笉鐫鍗楀寳銆傚浗鍐呯炕璇戠殑鏄奓inux璁懼椹卞姩紼嬪簭銆嬬浜岀増錛岀涓鐗堬紝絎簩鐗堢殑璇戣呮垜閮芥湁寰堟繁鐨勬帴瑙︼紝涓嶈繃鎬諱綋涓婃潵璇達(dá)紝铏界劧絎簩鐗堢炕璇戠殑鏈変簺涓嶅敖浜烘剰錛屼絾鏄浉姣旂涓鐗堟潵璇村凡緇忚秴鍑轟簡涓澶ф埅銆傝璇昏繖涓鏈功錛岃嚦灝戝簲璇ュ厛鎵句竴浜涖婅綆楁満鍘熺悊銆嬨婅綆楁満浣撶郴緇撴瀯銆嬬殑涔︽潵椹┈铏庤檸璇昏錛岃嚦灝戝簲璇ュ紜歡鍜岃綆楁満鐨勫伐浣滆繃紼嬫湁涓浜涗簡瑙c?br /></font>聽聽聽聽聽聽聽</p><img src ="http://m.shnenglu.com/lapcca/aggbug/125386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-08-31 11:49 <a href="http://m.shnenglu.com/lapcca/archive/2010/08/31/125386.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍩烘湰鎿嶄綔鐨勪綅榪愮畻瀹炵幇http://m.shnenglu.com/lapcca/archive/2010/08/27/124948.html闃肯闃肯Fri, 27 Aug 2010 08:26:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/08/27/124948.htmlhttp://m.shnenglu.com/lapcca/comments/124948.htmlhttp://m.shnenglu.com/lapcca/archive/2010/08/27/124948.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/124948.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/124948.html闃呰鍏ㄦ枃

闃肯 2010-08-27 16:26 鍙戣〃璇勮
]]>
瀹氫綅IAT騫惰緭鍑哄鍏ュ嚱鏁板悕縐板拰瀵瑰簲鐨勫嚱鏁板湴鍧http://m.shnenglu.com/lapcca/archive/2010/08/23/124404.html闃肯闃肯Mon, 23 Aug 2010 05:22:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/08/23/124404.htmlhttp://m.shnenglu.com/lapcca/comments/124404.htmlhttp://m.shnenglu.com/lapcca/archive/2010/08/23/124404.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/124404.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/124404.html 聽1 #include聽 < stdio.h >
聽2 #include聽 < windows.h >
聽3
聽4 void 聽main()
聽5 {
聽6 // 鍙栧緱涓繪ā鍧楃殑妯″潡鍙ユ焺錛堝嵆榪涚▼妯″潡鍩哄湴鍧錛?/span>
聽7 HMODULE聽hMod聽 = 聽GetModuleHandle(NULL);
聽8
聽9 // 鎶婅繘紼嬪熀鍧璧嬬粰pDosHeader,鍗寵搗濮嬪熀鍧灝辨槸PE鐨処MAGE_DOS_HEADER
10 IMAGE_DOS_HEADER * 聽pDosHeader聽 = 聽(IMAGE_DOS_HEADER * )hMod;
11
12 // 瀹氫綅鍒癙E聽HEADER
13 // 鍩哄潃hMod鍔犱笂IMAGE_DOS_HEADER緇撴瀯鐨別_lfanew鎴愬憳鍒拌揪IMAGE_NT_HEADERS
14 // NT鏂囦歡澶寸殑鍓?瀛楄妭鏄枃浠剁鍚?"PE00"聽瀛楃涓?,鐒跺悗鏄?0瀛楄妭鐨処MAGE_FILE_HEADER緇撴瀯
15 // 鍗沖埌杈綢MAGE_OPTIONAL_HEADER緇撴瀯鐨勫湴鍧,鑾峰彇浜嗕竴涓寚鍚慖MAGE_OPTIONAL_HEADER緇撴瀯浣撶殑鎸囬拡
16 IMAGE_OPTIONAL_HEADER聽 * 聽pOptHeader聽 =
17 (IMAGE_OPTIONAL_HEADER聽 * )((BYTE * )hMod聽 + 聽pDosHeader -> e_lfanew聽 + 24 );
18
19 // 瀹氫綅鍒板鍏ヨ〃
20 // 閫氳繃IMAGE_OPTIONAL_HEADER緇撴瀯涓殑DataDirectory緇撴瀯鏁扮粍涓殑絎簩涓垚鍛樹腑鐨?br /> 21 // VirturalAddress瀛楁瀹氫綅鍒癐MAGE_IMPORT_DESCRIPTOR緇撴瀯鐨勮搗濮嬪湴鍧
22 // 鍗寵幏寰楀鍏ヨ〃涓涓涓狪MAGE_IMPORT_DESCRIPTOR緇撴瀯鐨勬寚閽?瀵煎叆琛ㄩ鍦板潃)
23 IMAGE_IMPORT_DESCRIPTOR * 聽pImportDesc聽 = 聽(IMAGE_IMPORT_DESCRIPTOR * )
24 ((BYTE * )hMod聽 + 聽pOptHeader -> DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
25
26 while (pImportDesc -> FirstThunk)
27 {
28 // 閬嶅巻緇撴瀯鐨凮riginalFirstThunk瀛楁鎵鎸囧悜鐨処MAGE_IMPORT_BY_NAME緇撴瀯寰楀埌瀵煎嚭鍑芥暟鍚?br /> 29 // 閬嶅巻IMAGE_IMPORT_DESCRIPTOR緇撴瀯鐨凢irstThunk鏁扮粍寰楀埌姣忎釜鍑芥暟鐨勫湴鍧
30
31 // 瀵煎嚭妯″潡鐨勫悕縐?/span>
32 char * 聽pszDllName聽 = 聽( char * )((BYTE * )hMod聽 + pImportDesc -> Name);
33 printf( " \n妯″潡鍚嶇О錛?s聽\n " ,聽pszDllName);
34
35 // 聽涓涓狪MAGE_THUNK_DATA灝辨槸涓涓弻瀛楋紝瀹冩寚瀹氫簡涓涓鍏ュ嚱鏁?/span>
36 IMAGE_THUNK_DATA * 聽pThunk聽 = 聽(IMAGE_THUNK_DATA * )
37 ((BYTE * )hMod聽 + 聽pImportDesc -> OriginalFirstThunk);
38 int 聽n聽 = 0 ;
39 while (pThunk -> u1.Function)
40 {
41 // 聽鍙栧緱鍑芥暟鍚嶇О銆俬int/name琛ㄥ墠涓や釜瀛楄妭鏄嚱鏁扮殑搴忓彿錛屽悗4涓瓧鑺傛槸鍑芥暟鍚嶇О瀛楃涓茬殑鍦板潃
42 char * 聽pszFunName聽 = 聽( char * )
43 ((BYTE * )hMod聽 + 聽(DWORD)pThunk -> u1.AddressOfData聽 + 2 );
44 // 聽鍙栧緱鍑芥暟鍦板潃銆侷AT琛ㄥ氨鏄竴涓狣WORD綾誨瀷鐨勬暟緇勶紝姣忎釜鎴愬憳璁板綍涓涓嚱鏁扮殑鍦板潃
45 PDWORD聽lpAddr聽 = 聽(DWORD * )((BYTE * )hMod聽 + 聽pImportDesc -> FirstThunk)聽 + 聽n;
46
47 // 聽鎵撳嵃鍑哄嚱鏁板悕縐板拰鍦板潃
48 printf( " 聽聽聽浠庢妯″潡瀵煎叆鐨勫嚱鏁幫細(xì)%-25s錛?/span> " ,聽pszFunName);
49 printf( " 鍑芥暟鍦板潃錛?X聽\n " ,聽lpAddr);
50 n ++ ;聽pThunk ++ ;
51 }

52
53 pImportDesc ++ ;
54 }

55 MessageBox(NULL, " Test " , " Test " , 0 );
56 }


闃肯 2010-08-23 13:22 鍙戣〃璇勮
]]>
Hook API 綆鍗曠ず渚?/title><link>http://m.shnenglu.com/lapcca/archive/2010/08/23/124400.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Mon, 23 Aug 2010 05:15:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/08/23/124400.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/124400.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/08/23/124400.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/124400.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/124400.html</trackback:ping><description><![CDATA[<p>聽</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <span style="COLOR: #008080">聽聽1</span> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">#include聽</span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">windows.h</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽聽2</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" />#include聽</span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">stdio.h</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽聽3</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽聽4</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽鎸傞挬鎸囧畾妯″潡hMod瀵筂essageBoxA鐨勮皟鐢?/span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽聽5</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">BOOL聽SetHook(HMODULE聽hMod);<br /></span> <span style="COLOR: #008080">聽聽6</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽瀹氫箟MessageBoxA鍑芥暟鍘熷瀷</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽聽7</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">typedef聽</span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000">聽(WINAPI聽</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">PFNMESSAGEBOX)(HWND,聽LPCSTR,聽LPCSTR,聽UINT聽uType);<br /></span> <span style="COLOR: #008080">聽聽8</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽淇濆瓨MessageBoxA鍑芥暟鐨勭湡瀹炲湴鍧</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽聽9</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">PROC聽g_orgProc聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽(PROC)MessageBoxA;<br /></span> <span style="COLOR: #008080">聽10</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽11</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽12</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" />BOOL聽EnableDebugPrivilege()聽<br /></span> <span style="COLOR: #008080">聽13</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_281_795_Open_Image" onclick="this.style.display='none'; Codehighlighter1_281_795_Open_Text.style.display='none'; Codehighlighter1_281_795_Closed_Image.style.display='inline'; Codehighlighter1_281_795_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_281_795_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_281_795_Closed_Text.style.display='none'; Codehighlighter1_281_795_Open_Image.style.display='inline'; Codehighlighter1_281_795_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span> <span id="Codehighlighter1_281_795_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_281_795_Open_Text"> <span style="COLOR: #000000">{聽<br /></span> <span style="COLOR: #008080">聽14</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />BOOL聽fOk聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽FALSE;聽<br /></span> <span style="COLOR: #008080">聽15</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />HANDLE聽hToken;聽<br /></span> <span style="COLOR: #008080">聽16</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽17</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">聽(OpenProcessToken(GetCurrentProcess(),聽<br /></span> <span style="COLOR: #008080">聽18</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />聽聽聽聽聽聽聽TOKEN_ADJUST_PRIVILEGES,聽</span> <span style="COLOR: #000000">&</span> <span style="COLOR: #000000">hToken))聽<br /></span> <span style="COLOR: #008080">聽19</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_406_756_Open_Image" onclick="this.style.display='none'; Codehighlighter1_406_756_Open_Text.style.display='none'; Codehighlighter1_406_756_Closed_Image.style.display='inline'; Codehighlighter1_406_756_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_406_756_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_406_756_Closed_Text.style.display='none'; Codehighlighter1_406_756_Open_Image.style.display='inline'; Codehighlighter1_406_756_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_406_756_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_406_756_Open_Text"> <span style="COLOR: #000000">{聽<br /></span> <span style="COLOR: #008080">聽20</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />聽聽聽聽聽聽聽TOKEN_PRIVILEGES聽tp;<br /></span> <span style="COLOR: #008080">聽21</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />聽聽聽聽聽聽聽tp.PrivilegeCount聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">;聽<br /></span> <span style="COLOR: #008080">聽22</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />聽聽聽聽聽聽聽LookupPrivilegeValue(NULL,聽SE_DEBUG_NAME,聽</span> <span style="COLOR: #000000">&</span> <span style="COLOR: #000000">tp.Privileges[</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">].Luid);聽<br /></span> <span style="COLOR: #008080">聽23</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />聽聽聽聽聽聽聽tp.Privileges[</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">].Attributes聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽SE_PRIVILEGE_ENABLED;聽<br /></span> <span style="COLOR: #008080">聽24</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />聽聽聽聽聽聽聽AdjustTokenPrivileges(hToken,聽FALSE,聽</span> <span style="COLOR: #000000">&</span> <span style="COLOR: #000000">tp,聽</span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(tp),聽NULL,聽NULL);聽<br /></span> <span style="COLOR: #008080">聽25</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />聽聽聽聽聽聽聽fOk聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽(GetLastError()聽</span> <span style="COLOR: #000000">==</span> <span style="COLOR: #000000">聽ERROR_SUCCESS);聽<br /></span> <span style="COLOR: #008080">聽26</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />聽聽聽聽聽聽聽CloseHandle(hToken);聽<br /></span> <span style="COLOR: #008080">聽27</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000">聽<br /></span> <span style="COLOR: #008080">聽28</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">聽fOk;聽</span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">鎻愬崌鎴愬姛榪斿洖TRUE錛屽け璐ヨ繑鍥濬ALSE聽</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽29</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span> <span style="COLOR: #000000">}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽30</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽31</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000">聽main()<br /></span> <span style="COLOR: #008080">聽32</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_810_984_Open_Image" onclick="this.style.display='none'; Codehighlighter1_810_984_Open_Text.style.display='none'; Codehighlighter1_810_984_Closed_Image.style.display='inline'; Codehighlighter1_810_984_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_810_984_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_810_984_Closed_Text.style.display='none'; Codehighlighter1_810_984_Open_Image.style.display='inline'; Codehighlighter1_810_984_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span> <span id="Codehighlighter1_810_984_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_810_984_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽33</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">(EnableDebugPrivilege())<br /></span> <span style="COLOR: #008080">聽34</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_839_981_Open_Image" onclick="this.style.display='none'; Codehighlighter1_839_981_Open_Text.style.display='none'; Codehighlighter1_839_981_Closed_Image.style.display='inline'; Codehighlighter1_839_981_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_839_981_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_839_981_Closed_Text.style.display='none'; Codehighlighter1_839_981_Open_Image.style.display='inline'; Codehighlighter1_839_981_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_839_981_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_839_981_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽35</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽璋冪敤鍘烝PI鍑芥暟</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽36</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">::MessageBox(NULL,聽</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">鍘熷嚱鏁?/span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">,聽</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">Hook聽Api</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">,聽</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /></span> <span style="COLOR: #008080">聽37</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽鎸傞挬鍚庡啀璋冪敤</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽38</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">SetHook(::GetModuleHandle(NULL));<br /></span> <span style="COLOR: #008080">聽39</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />::MessageBox(NULL,聽</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">鍘熷嚱鏁?/span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">,聽</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">Hook聽Api</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">,聽</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /></span> <span style="COLOR: #008080">聽40</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽41</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽42</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽43</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽44</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽鐢ㄤ簬鏇挎崲MessageBoxA鐨勮嚜瀹氫箟鍑芥暟</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽45</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000">聽WINAPI聽MyMessageBoxA(HWND聽hWnd,聽LPCSTR聽lpText,聽LPCSTR聽lpCaption,聽UINT聽uType)<br /></span> <span style="COLOR: #008080">聽46</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_1093_1179_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1093_1179_Open_Text.style.display='none'; Codehighlighter1_1093_1179_Closed_Image.style.display='inline'; Codehighlighter1_1093_1179_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_1093_1179_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1093_1179_Closed_Text.style.display='none'; Codehighlighter1_1093_1179_Open_Image.style.display='inline'; Codehighlighter1_1093_1179_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span> <span id="Codehighlighter1_1093_1179_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_1093_1179_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽47</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">聽((PFNMESSAGEBOX)g_orgProc)(hWnd,聽</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">Hook聽API聽Sucess!</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">,聽</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">OK</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">,聽uType);<br /></span> <span style="COLOR: #008080">聽48</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">;<br /></span> <span style="COLOR: #008080">聽49</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽50</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽51</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/None.gif" align="top" />BOOL聽SetHook(HMODULE聽hMod)<br /></span> <span style="COLOR: #008080">聽52</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_1209_2470_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1209_2470_Open_Text.style.display='none'; Codehighlighter1_1209_2470_Closed_Image.style.display='inline'; Codehighlighter1_1209_2470_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_1209_2470_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1209_2470_Closed_Text.style.display='none'; Codehighlighter1_1209_2470_Open_Image.style.display='inline'; Codehighlighter1_1209_2470_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span> <span id="Codehighlighter1_1209_2470_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_1209_2470_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽53</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />IMAGE_DOS_HEADER</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">聽pDosHeader聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽(IMAGE_DOS_HEADER</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)hMod;<br /></span> <span style="COLOR: #008080">聽54</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />IMAGE_OPTIONAL_HEADER聽</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">聽pOptHeader聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽55</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />(IMAGE_OPTIONAL_HEADER聽</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)((BYTE</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)hMod聽</span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000">聽pDosHeader</span> <span style="COLOR: #000000">-></span> <span style="COLOR: #000000">e_lfanew聽</span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">24</span> <span style="COLOR: #000000">);<br /></span> <span style="COLOR: #008080">聽56</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽57</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />IMAGE_IMPORT_DESCRIPTOR</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">聽pImportDesc聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽(IMAGE_IMPORT_DESCRIPTOR</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)<br /></span> <span style="COLOR: #008080">聽58</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />((BYTE</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)hMod聽</span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000">聽pOptHeader</span> <span style="COLOR: #000000">-></span> <span style="COLOR: #000000">DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);<br /></span> <span style="COLOR: #008080">聽59</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽60</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽鍦ㄥ鍏ヨ〃涓煡鎵緐ser32.dll妯″潡銆傚洜涓篗essageBoxA鍑芥暟浠巙ser32.dll妯″潡瀵煎嚭</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽61</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">while</span> <span style="COLOR: #000000">(pImportDesc</span> <span style="COLOR: #000000">-></span> <span style="COLOR: #000000">FirstThunk)<br /></span> <span style="COLOR: #008080">聽62</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_1613_1747_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1613_1747_Open_Text.style.display='none'; Codehighlighter1_1613_1747_Closed_Image.style.display='inline'; Codehighlighter1_1613_1747_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_1613_1747_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1613_1747_Closed_Text.style.display='none'; Codehighlighter1_1613_1747_Open_Image.style.display='inline'; Codehighlighter1_1613_1747_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_1613_1747_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_1613_1747_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽63</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">聽pszDllName聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽(</span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)((BYTE</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)hMod聽</span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000">聽pImportDesc</span> <span style="COLOR: #000000">-></span> <span style="COLOR: #000000">Name);<br /></span> <span style="COLOR: #008080">聽64</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">(lstrcmpiA(pszDllName,聽</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">user32.dll</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">)聽</span> <span style="COLOR: #000000">==</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">)<br /></span> <span style="COLOR: #008080">聽65</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_1721_1730_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1721_1730_Open_Text.style.display='none'; Codehighlighter1_1721_1730_Closed_Image.style.display='inline'; Codehighlighter1_1721_1730_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_1721_1730_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1721_1730_Closed_Text.style.display='none'; Codehighlighter1_1721_1730_Open_Image.style.display='inline'; Codehighlighter1_1721_1730_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_1721_1730_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_1721_1730_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽66</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">break</span> <span style="COLOR: #000000">;<br /></span> <span style="COLOR: #008080">聽67</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽68</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />pImportDesc</span> <span style="COLOR: #000000">++</span> <span style="COLOR: #000000">;<br /></span> <span style="COLOR: #008080">聽69</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽70</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽71</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">(pImportDesc</span> <span style="COLOR: #000000">-></span> <span style="COLOR: #000000">FirstThunk)<br /></span> <span style="COLOR: #008080">聽72</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_1778_2454_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1778_2454_Open_Text.style.display='none'; Codehighlighter1_1778_2454_Closed_Image.style.display='inline'; Codehighlighter1_1778_2454_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_1778_2454_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1778_2454_Closed_Text.style.display='none'; Codehighlighter1_1778_2454_Open_Image.style.display='inline'; Codehighlighter1_1778_2454_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_1778_2454_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_1778_2454_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽73</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽74</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽涓涓狪MAGE_THUNK_DATA灝辨槸涓涓弻瀛楋紝瀹冩寚瀹氫簡涓涓鍏ュ嚱鏁?br /></span> <span style="COLOR: #008080">聽75</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽璋冨叆鍦板潃琛ㄥ叾瀹炴槸IMAGE_THUNK_DATA緇撴瀯鐨勬暟緇勶紝涔熷氨鏄疍WORD鏁扮粍</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽76</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">IMAGE_THUNK_DATA</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">聽pThunk聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽(IMAGE_THUNK_DATA</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)<br /></span> <span style="COLOR: #008080">聽77</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />((BYTE</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)hMod聽</span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000">聽pImportDesc</span> <span style="COLOR: #000000">-></span> <span style="COLOR: #000000">FirstThunk);<br /></span> <span style="COLOR: #008080">聽78</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">while</span> <span style="COLOR: #000000">(pThunk</span> <span style="COLOR: #000000">-></span> <span style="COLOR: #000000">u1.Function)<br /></span> <span style="COLOR: #008080">聽79</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_1979_2452_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1979_2452_Open_Text.style.display='none'; Codehighlighter1_1979_2452_Closed_Image.style.display='inline'; Codehighlighter1_1979_2452_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_1979_2452_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1979_2452_Closed_Text.style.display='none'; Codehighlighter1_1979_2452_Open_Image.style.display='inline'; Codehighlighter1_1979_2452_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_1979_2452_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_1979_2452_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽80</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽lpAddr鎸囧悜鐨勫唴瀛樹繚瀛樹簡鍑芥暟鐨勫湴鍧</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽81</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">DWORD</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">聽lpAddr聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽(DWORD</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)</span> <span style="COLOR: #000000">&</span> <span style="COLOR: #000000">(pThunk</span> <span style="COLOR: #000000">-></span> <span style="COLOR: #000000">u1.Function);<br /></span> <span style="COLOR: #008080">聽82</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">(</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">lpAddr聽</span> <span style="COLOR: #000000">==</span> <span style="COLOR: #000000">聽(DWORD)g_orgProc)<br /></span> <span style="COLOR: #008080">聽83</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_2084_2440_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2084_2440_Open_Text.style.display='none'; Codehighlighter1_2084_2440_Closed_Image.style.display='inline'; Codehighlighter1_2084_2440_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_2084_2440_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2084_2440_Closed_Text.style.display='none'; Codehighlighter1_2084_2440_Open_Image.style.display='inline'; Codehighlighter1_2084_2440_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_2084_2440_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_2084_2440_Open_Text"> <span style="COLOR: #000000">{聽<br /></span> <span style="COLOR: #008080">聽84</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />DWORD聽oldProc;<br /></span> <span style="COLOR: #008080">聽85</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />BOOL聽VirSu</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">VirtualProtect(lpAddr,</span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(DWORD),PAGE_READWRITE,</span> <span style="COLOR: #000000">&</span> <span style="COLOR: #000000">oldProc);<br /></span> <span style="COLOR: #008080">聽86</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">(VirSu</span> <span style="COLOR: #000000">==</span> <span style="COLOR: #000000">TRUE)<br /></span> <span style="COLOR: #008080">聽87</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_2191_2383_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2191_2383_Open_Text.style.display='none'; Codehighlighter1_2191_2383_Closed_Image.style.display='inline'; Codehighlighter1_2191_2383_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_2191_2383_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2191_2383_Closed_Text.style.display='none'; Codehighlighter1_2191_2383_Open_Image.style.display='inline'; Codehighlighter1_2191_2383_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_2191_2383_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_2191_2383_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽88</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">聽淇敼IAT琛ㄩ」錛屼嬌鍏舵寚鍚戞垜浠嚜瀹氫箟鐨勫嚱鏁幫紝鐩稿綋浜庘?lpAddr聽=聽(DWORD)MyMessageBoxA;鈥?/span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #008080">聽89</span> <span style="COLOR: #008000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">DWORD</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">聽lpNewProc聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽(DWORD</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)MyMessageBoxA;<br /></span> <span style="COLOR: #008080">聽90</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />::WriteProcessMemory(::GetCurrentProcess(),聽<br /></span> <span style="COLOR: #008080">聽91</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />lpAddr,聽</span> <span style="COLOR: #000000">&</span> <span style="COLOR: #000000">lpNewProc,聽</span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(DWORD),聽NULL);<br /></span> <span style="COLOR: #008080">聽92</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽93</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">else</span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽94</span> <span style="COLOR: #000000"> <img id="Codehighlighter1_2390_2425_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2390_2425_Open_Text.style.display='none'; Codehighlighter1_2390_2425_Closed_Image.style.display='inline'; Codehighlighter1_2390_2425_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /> <img id="Codehighlighter1_2390_2425_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2390_2425_Closed_Text.style.display='none'; Codehighlighter1_2390_2425_Open_Image.style.display='inline'; Codehighlighter1_2390_2425_Open_Text.style.display='inline';" src="http://m.shnenglu.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span> <span id="Codehighlighter1_2390_2425_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://m.shnenglu.com/images/dot.gif" /> </span> <span id="Codehighlighter1_2390_2425_Open_Text"> <span style="COLOR: #000000">{<br /></span> <span style="COLOR: #008080">聽95</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />MessageBox(NULL,</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">Error!</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">a</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /></span> <span style="COLOR: #008080">聽96</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽97</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">聽TRUE;<br /></span> <span style="COLOR: #008080">聽98</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">聽99</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />pThunk</span> <span style="COLOR: #000000">++</span> <span style="COLOR: #000000">;<br /></span> <span style="COLOR: #008080">100</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">101</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #008080">102</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">聽FALSE;<br /></span> <span style="COLOR: #008080">103</span> <span style="COLOR: #000000"> <img src="http://m.shnenglu.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p>聽</p> <p> </p> <p>鏈変釜閮侀椃鐨勯棶棰橈紝鍦?003sp1涓嬶紝涓嶇鏄彁鍗囪繘紼嬫潈闄愯繕鏄慨鏀瑰唴瀛樺寘鍚睘鎬ч兘鎴愬姛錛乨ebug鐗堟湰鑳芥垚鍔燂紒release灝變粬濞樼殑姝諱笉鎴愬姛錛侀儊闂鋒錛岄亶瀵婚珮鎵嬫棤鐫钀斤紝鏆傛椂絳夌潃鍏堛傘傘?/p><img src ="http://m.shnenglu.com/lapcca/aggbug/124400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-08-23 13:15 <a href="http://m.shnenglu.com/lapcca/archive/2010/08/23/124400.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>GINA.dll 鍚勫嚱鏁頒粙緇?/title><link>http://m.shnenglu.com/lapcca/archive/2010/06/18/118184.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Fri, 18 Jun 2010 09:58:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/06/18/118184.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/118184.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/06/18/118184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/118184.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/118184.html</trackback:ping><description><![CDATA[棣栧厛浠嬬粛涓涓媁inlogon銆俉indows 2000/NT鏈変笁縐嶇郴緇熺姸鎬侊細(xì)娌℃湁鐢ㄦ埛鐧誨綍鐘舵併佺敤鎴鋒垚鍔熺櫥褰曠姸鎬佷互鍙?qiáng)宸ヤ綔绔欓攣瀹氱姸鎬併俉inlogon鏄疻indows 2000/NT鎿嶄綔緋葷粺鎻愪緵浜や簰寮忕櫥褰曟敮鎸佺殑緇勪歡銆俉inlogon鏈変笁涓粍鎴愰儴鍒嗭細(xì)鍙墽琛屾枃浠秝inlogon.exe錛屾彁渚涘浘褰㈢晫闈㈣璇佸姛鑳界殑鍔ㄦ佸簱 Gina Dll錛屼互鍙?qiáng)涓浜涚綉緇滄湇鍔℃彁渚涘姩鎬佸簱Network Provider Dll銆?<br /><br />聽聽 <br /><br /><clk></clk>winlogon.exe澶勭悊涓浜涗笅灞傚鍑虹殑鎺ュ彛鍑芥暟錛岃岃璇佺瓥鐣ユ槸鍦℅ina Dll涓槸<nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">鐙珛</nobr>璁?璁$殑銆傚湪緋葷粺鍚姩鏃訛紝Gina Dll琚玾inlogon.exe瑁呰澆銆侻icrosoft鎻愪緵浜嗕竴涓粯璁ょ殑Gina Dll鈥斺擶innt\system32\msgina.dll錛屾彁渚涗簡鏍囧噯鐨勭敤鎴峰悕銆佸瘑鐮佽璇佹ā寮忋侴ina Dll鏄彲鏇挎崲鐨勶紝鐢ㄦ埛鍙互璁捐鑷繁鐨凣ina Dll錛屼互鎻愪緵鍏朵粬濡傛櫤鑳藉崱銆佽緗戣啘銆佹寚綰規(guī)垨鍏朵粬涓浜涜璇佹満鍒躲?<br />寮鍙戣嚜瀹氫箟鐨凣ina Dll銆傚繀欏誨疄鐜板茍瀵煎嚭涓巜inlogon.exe浜や簰鐨?8涓爣鍑嗗嚱鏁版帴鍙o細(xì) <br />l BOOL WINAPI WlxNegotiate(DWORD dwWinLogonVersion, PDWORD pdwDllVersion) <br />// Winlogon.exe璋冪敤鐨刧ina dll涓殑絎竴涓嚱鏁?<br />// 浣縢ina dll紜鏄惁鏀寔褰撳墠鐗堟湰鐨刉inlogon.exe <br />// 浼犻掔粰winlogon.exe闇瑕侀偅涓増鏈殑鎺ュ彛鍑芥暟 <br />l BOOL WINAPI WlxInitialize(LPWSTR lpWinsta, <br />HANDLE hWlx, <br />PVOID pvReserved, <br />PVOID pWinlogonFunctions, <br />PVOID * pWlxContext <br />) <br />// 鍒濆鍖栵紝winlogon.exe鍚慻ina dll浼犻掗渶瑕佺増鏈殑鎺ュ彛鍑芥暟鍒嗛厤琛?<br />l BOOL WINAPI WlxActivateUserShell(PVOID pWlxContext, <br />PWSTR pszDesktopName, <br />PWSTR pszMprLogonScript, <br />PVOID pEnvironment) <br />// 鐢ㄦ埛鐧婚檰鎴愬姛鍚庯紝W(xué)inlogon.exe璋冪敤璇ュ嚱鏁板惎鍔ㄧ敤鎴峰澹崇▼搴?<br />l VOID WINAPI WlxDisplayLockedNotice(PVOID pWlxContext) <br />// 褰撶郴緇熷浜庨攣瀹氱姸鎬佹椂錛學(xué)inlogon.exe璋冪敤璇ュ嚱鏁?<br />// 鏄劇ず涓浜涗俊鎭紝濡傞攣瀹氳呫侀攣瀹氭椂闂寸瓑 <br />l VOID WINAPI WlxDisplaySASNotice(PVOID pWlxContext) <br />// 褰撴病鏈変換浣曠敤鎴風(fēng)櫥闄嗘椂錛學(xué)inlogon.exe璋冪敤璇ュ嚱鏁版樉紺轟竴浜涙彁紺轟俊鎭?<br />// 鍙互鏍規(guī)嵁鐢ㄦ埛鐨勫姩浣滄ā鎷烻AS浜嬩歡鐨勫彂閫?<br />l BOOL WINAPI WlxDisplayStatusMessage(PVOID pWlxContext, <br />HDESK hDesktop, <br />DWORD dwOptions, <br />PWSTR pTitle, <br />PWSTR pMessage) <br />// 褰揼ina dll瑕佹樉紺轟竴浜涗俊鎭椂錛學(xué)inlogon.exe璋冪敤璇ュ嚱鏁?<br />// 鐩存帴榪斿洖TRUE琛ㄧず淇℃伅宸茬粡鏄劇ず <br />l BOOL WINAPI WlxGetStatusMessage(PVOID pWlxContext, <br />DWORD *pdwOptions, <br />PWSTR pMessage, <br />DWORD dwBufferSize) <br />// Winlogon.exe璋冪敤璇ュ嚱鏁板緱鍒癵ina dll鏄劇ず鐨勭姸鎬佷俊鎭?<br />// 鐩存帴榪斿洖TRUE琛ㄧず淇℃伅宸茬粡鎺ユ敹 <br />l BOOL WINAPI WlxIsLockOk(PVOID pWlxContext) <br />// 鍦ㄨ瘯鍥鵑攣瀹氬伐浣滅珯涔嬪墠Winlogon.exe璋冪敤璇ュ嚱鏁幫紝鍒ゆ柇鏄惁鍙互閿佸畾 <br />// 鐩存帴榪斿洖FALSE琛ㄧず涓嶈兘閿佸畾 <br />l BOOL WINAPI WlxIsLogoffOk(PVOID pWlxContext) <br />// 鍦ㄨ瘯鍥炬敞閿鏃禬inlogon.exe璋冪敤璇ュ嚱鏁幫紝鍒ゆ柇鑳藉惁娉ㄩ攢 <br />// 鐩存帴榪斿洖FALSE琛ㄧず涓嶈兘娉ㄩ攢 <br />l int WINAPI WlxLoggedOnSAS(PVOID pWlxContext, <br />DWORD dwSasType, <br />PVOID pReserved) <br />// 褰撶郴緇熷浜庣櫥闄嗘垚鍔燂紝娌℃湁閿佸畾鐨勭姸鎬佷笅 <br />// Winlogon鎺ユ敹鍒癝AS浜嬩歡錛屼簬鏄皟鐢ㄨ鍑芥暟 <br />// 鐜板睆钄芥墍鏈変簨浠訛紝鐩存帴榪斿洖 <br />l int WINAPI WlxLoggedOutSAS(PVOID pWlxContext, <br />DWORD dwSasType, <br />PLUID pAuthenticationId, <br />PSID pLogonSid, <br />PDWORD pdwOptions, <br />PHANDLE phToken, <br />PWLX_MPR_NOTIFY_INFO pMprNotifyInfo, <br />PVOID * pProfile) <br />// 鍦ㄦ病鏈変換浣曚竴涓敤鎴風(fēng)櫥闄嗙殑鎯呭喌涓嬶紝W(xué)inlogon.exe鎺ユ敹鍒癝AS浜嬩歡璋?/鐢ㄨ鍑芥暟 <br />l VOID WINAPI WlxLogoff(PVOID pWlxContext) <br />// Winlogon.exe璋冪敤璇ュ嚱鏁幫紝閫氱煡gina dll鐢ㄦ埛娉ㄩ攢鎿嶄綔 <br />// 鍏佽gina dll鍋氬嚭鐩稿簲鐨勫鐞?<br />l BOOL WINAPI WlxNetworkProviderLoad(PVOID pWlxContext, <br />PWLX_MPR_NOTIFY_INFO pNprNotifyInfo) <br />// Winlogon.exe璋冪敤璇ュ嚱鏁版敹闆嗘湁鏁堢殑璁よ瘉淇℃伅 <br />// 榪斿洖TRUE琛ㄧず鐢ㄦ埛琚瘑鍒?<br />l BOOL WINAPI WlxRemoveStatusMessage(PVOID pWlxContext) <br />// Winlogon.exe璋冪敤璇ュ嚱鏁幫紝鍛婅瘔gina dll鍋滄鏄劇ず鐘舵佷俊鎭?<br />// 鐩存帴榪斿洖TRUE琛ㄧず淇℃伅宸茬粡鍒犻櫎 <br />l BOOL WINAPI WlxScreenSaverNotify(PVOID pWlxContext, BOOL *pSecure) <br />// 鍦ㄥ睆淇濈▼搴忓惎鍔ㄥ墠涓鐬琖inlogon.exe璋冪敤璇ュ嚱鏁幫紝鍏佽gina dll鍚屽睆 <br />//淇濈▼搴忎氦浜?<br />// 榪斿洖FALSE琛ㄧず灞忎繚紼嬪簭涓嶈兘鍚姩 <br />l VOID WINAPI WlxShutdown(PVOID pWlxContext, DWORD ShutdownType) <br />// 鍦ㄧ郴緇熷叧闂箣鍓嶏紝W(xué)inlogon.exe璋冪敤璇ュ嚱鏁?<br />// 鍏佽gina dll澶勭悊涓浜涚郴緇熷叧闂墠鐨勫鐞?<br />l BOOL WINAPI WlxStartApplication(PVOID pWlxContext, <br />PWSTR pszDesktopName, <br />PVOID pEnvironment, <br />PWSTR pszCmdLine) <br />// 褰撶郴緇熻姹傚湪鐢ㄦ埛涓婁笅鏂囦腑鍚姩紼嬪簭錛學(xué)inlogon.exe璋冪敤璇ュ嚱鏁?<br />// 榪欑鎯呭喌鍙戠敓鍦細(xì)嫻忚鍣ㄩ潪姝e父鍏抽棴闇瑕侀噸鍚垨闇瑕佸惎鍔ㄦ墿灞曠殑浠誨姟// 綆$悊鍣?<br />// 璇ユ帴鍙ina dll鍙互閫夋嫨鎬у疄鐜?<br />l int WINAPI WlxWkstaLockedSAS(PVOID pWlxContext, DWORD dwSasType) <br />// 鍦ㄩ攣瀹氱姸鎬佷笅錛學(xué)inlogon.exe鎺ユ敹鍒癝AS浜嬩歡璋冪敤璇ュ嚱鏁?<br /><br />鍏朵腑WlxNegotiate鏄痺inlogon.exe璋冪敤鐨勭涓涓帴鍙e嚱鏁幫紝榪涜蹇呰鐨勭増鏈垽鏂紝闅忓悗璋冪敤鐨勬槸WlxInitialize錛屼富瑕佸畬鎴?winlogon.exe鐗瑰畾鐗堟湰鐨勫嚱鏁板垎媧捐〃鍚慓ina Dll鐨勪紶閫掋傛渶涓昏鐨勬槸WlxLoggedOnSAS鍑芥暟錛岃繖涓嚱鏁頒富瑕佺殑鍔熻兘鏄紝褰搘inlogon鍦ㄧ櫥褰曟垚鍔熺姸鎬佷笅錛屾帴鏀跺埌SAS浜嬩歡錛屼簬鏄皟鐢ㄨ繖 涓嚱鏁拌繘琛孲AS浜嬩歡鐨勮瘑鍒互鍙?qiáng)杩涜鍚勪簨錃g鐨勭浉搴斿鐞嗐?<br /><clk></clk>鐢變簬鐜板湪鍙渶灞忚斀鎸変笅Ctrl+Alt+Del鏃剁郴緇熶笉鍐嶅脊鍑衡淲idows<nobr style="COLOR: rgb(102,0,255); BORDER-BOTTOM: rgb(102,0,255) 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">瀹夊叏</nobr>鈥濆璇濇銆傚茍涓嶉渶瑕佹敼鍙樼敤鎴峰悕銆佸瘑鐮佽繖縐嶆爣鍑嗙殑璁よ瘉妯″紡錛屾墍浠ュ彲浠ヤ粛鐒朵嬌鐢╩sgina.dll涓鍑虹殑鍑芥暟鎺ュ彛錛岃屽WlxLoggedOnSAS鍑芥暟鐨勫疄鐜拌繘琛屽繀瑕佺殑鏀瑰彉銆?<br />int WINAPI WlxLoggedOnSAS(PVOID pWlxContext, <br />DWORD dwSasType, <br />PVOID pReserved) <br />{ <br />if(bLock) //濡傛灉澶勪簬閿佸畾鐘舵侊紝鐜板睆钄芥墍鏈変簨浠訛紝鐩存帴榪斿洖 <br />return WLX_SAS_ACTION_NONE; <br />else <br />return theApp.MyWlxLoggedOnSAS(pWlxContext, dwSasType, pReserved); <br />//MyWlxLoggedOnSAS涓洪粯璁ina dll(msgina dll)涓殑WlxLoggedOnSAS <br />} <br />鑷畾涔塆ina Dll鐨勪嬌鐢ㄣ傛瘮濡傚紑鍙戠殑Gina Dll鏂囦歡鍚嶄負(fù)MyGina.dll銆傚皢璇ユ枃浠舵斁鍒頒互涓嬭礬寰勶細(xì)Winnt\system32銆傚茍淇敼娉ㄥ唽琛紝濡備笅錛?<br />Key Name: \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ Winlogon <br />Value Name: GinaDLL <br />Value Type: [REG_SZ] <br />Value: MyGina.dll <br />閲嶆柊鍚姩璁$畻鏈篗yGina.dll鍗蟲姇鍏ヤ嬌鐢ㄣ?img src ="http://m.shnenglu.com/lapcca/aggbug/118184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-06-18 17:58 <a href="http://m.shnenglu.com/lapcca/archive/2010/06/18/118184.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍫嗗拰鏍堢殑鍖哄埆http://m.shnenglu.com/lapcca/archive/2010/06/10/117528.html闃肯闃肯Thu, 10 Jun 2010 01:38:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/06/10/117528.htmlhttp://m.shnenglu.com/lapcca/comments/117528.htmlhttp://m.shnenglu.com/lapcca/archive/2010/06/10/117528.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/117528.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/117528.html涓銆侀澶囩煡璇嗏旂▼搴忕殑鍐呭瓨鍒嗛厤聽
聽 涓涓敱C/C++緙栬瘧鐨勭▼搴忓崰鐢ㄧ殑鍐呭瓨鍒嗕負(fù)浠ヤ笅鍑犱釜閮ㄥ垎聽
聽 1銆佹爤鍖猴紙stack錛夆斅犅?鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁聽聽 錛屽瓨鏀懼嚱鏁扮殑鍙傛暟鍊鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾聽
聽 鎿嶄綔鏂瑰紡綾諱技浜庢暟鎹粨鏋勪腑鐨勬爤銆偮?
聽 2銆佸爢鍖猴紙heap錛壜犅?鈥斅犅?涓鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝聽聽 鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱O(jiān)S鍥灺?
聽 鏀堵犅?銆傛敞鎰忓畠涓庢暟鎹粨鏋勪腑鐨勫爢鏄袱鍥炰簨錛屽垎閰嶆柟寮忓掓槸綾諱技浜庨摼琛紝鍛靛懙銆偮?
聽 3銆佸叏灞鍖猴紙闈欐佸尯錛夛紙static錛夆旓紝鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忕殑瀛樺偍鏄斁鍦ㄤ竴鍧楃殑錛屽垵濮嬪寲鐨劼?
聽 鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忓湪涓鍧楀尯鍩燂紝聽聽 鏈垵濮嬪寲鐨勫叏灞鍙橀噺鍜屾湭鍒濆鍖栫殑闈欐佸彉閲忓湪鐩擱偦鐨勫彟聽
聽 涓鍧楀尯鍩熴偮犅?-聽聽 紼嬪簭緇撴潫鍚庣敱緋葷粺閲婃斁銆偮?
聽 4銆佹枃瀛楀父閲忓尯聽聽 鈥斿父閲忓瓧絎︿覆灝辨槸鏀懼湪榪欓噷鐨勩偮犅?紼嬪簭緇撴潫鍚庣敱緋葷粺閲婃斁聽
聽 5銆佺▼搴忎唬鐮佸尯鈥斿瓨鏀懼嚱鏁頒綋鐨勪簩榪涘埗浠g爜銆偮?
聽聽
聽聽
聽 浜屻佷緥瀛愮▼搴徛犅犅?
聽 榪欐槸涓涓墠杈堝啓鐨勶紝闈炲父璇︾粏聽聽聽
聽 //main.cpp聽聽聽
聽 int聽聽 a聽聽 =聽聽 0;聽聽 鍏ㄥ眬鍒濆鍖栧尯聽聽聽
聽 char聽聽 *p1;聽聽 鍏ㄥ眬鏈垵濮嬪寲鍖郝犅犅?
聽 main()聽聽聽
聽 {聽聽聽
聽 int聽聽 b;聽聽 鏍埪犅犅?
聽 char聽聽 s[]聽聽 =聽聽 "abc";聽聽 鏍埪犅犅?
聽 char聽聽 *p2;聽聽 鏍埪犅犅?
聽 char聽聽 *p3聽聽 =聽聽 "123456";聽聽 123456\0鍦ㄥ父閲忓尯錛宲3鍦ㄦ爤涓娿偮犅犅?
聽 static聽聽 int聽聽 c聽聽 =0錛浡犅?鍏ㄥ眬錛堥潤鎬侊級(jí)鍒濆鍖栧尯聽聽聽
聽 p1聽聽 =聽聽 (char聽聽 *)malloc(10);聽聽聽
聽 p2聽聽 =聽聽 (char聽聽 *)malloc(20);聽聽聽
聽 鍒嗛厤寰楁潵寰?0鍜?0瀛楄妭鐨勫尯鍩熷氨鍦ㄥ爢鍖恒偮犅犅?
聽 strcpy(p1,聽聽 "123456");聽聽 123456\0鏀懼湪甯擱噺鍖猴紝緙栬瘧鍣ㄥ彲鑳戒細(xì)灝嗗畠涓巔3鎵鎸囧悜鐨?123456"聽
聽 浼樺寲鎴愪竴涓湴鏂廣偮犅犅?
聽 }聽聽聽
聽聽
聽聽
聽 浜屻佸爢鍜屾爤鐨勭悊璁虹煡璇喡犅犅?
聽 2.1鐢寵鏂瑰紡聽聽聽
聽 stack:聽聽聽
聽 鐢辯郴緇熻嚜鍔ㄥ垎閰嶃偮犅?渚嬪錛屽0鏄庡湪鍑芥暟涓竴涓眬閮ㄥ彉閲徛犅?int聽聽 b;聽聽 緋葷粺鑷姩鍦ㄦ爤涓負(fù)b寮杈熺┖聽
聽 闂綽犅犅?
聽 heap:聽聽聽
聽 闇瑕佺▼搴忓憳鑷繁鐢寵錛屽茍鎸囨槑澶у皬錛屽湪c涓璵alloc鍑芥暟聽聽聽
聽 濡俻1聽聽 =聽聽 (char聽聽 *)malloc(10);聽聽聽
聽 鍦–++涓敤new榪愮畻絎β犅犅?
聽 濡俻2聽聽 =聽聽 new聽聽 char[10];聽聽聽
聽 浣嗘槸娉ㄦ剰p1銆乸2鏈韓鏄湪鏍堜腑鐨勩偮犅犅?
聽聽
聽聽
聽 2.2聽聽聽
聽 鐢寵鍚庣郴緇熺殑鍝嶅簲聽聽聽
聽 鏍堬細(xì)鍙鏍堢殑鍓╀綑絀洪棿澶т簬鎵鐢寵絀洪棿錛岀郴緇熷皢涓虹▼搴忔彁渚涘唴瀛橈紝鍚﹀垯灝嗘姤寮傚父鎻愮ず鏍堟孩聽
聽 鍑恒偮犅犅?
聽 鍫嗭細(xì)棣栧厛搴旇鐭ラ亾鎿嶄綔緋葷粺鏈変竴涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛紝褰撶郴緇熸敹鍒扮▼搴忕殑鐢寵鏃訛紝聽
聽 浼?xì)閬嶅巻璇ラ摼琛ㄥQ屽鎵劇涓涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨勫爢緇撶偣錛岀劧鍚庡皢璇ョ粨鐐逛粠絀洪棽緇撶偣閾捐〃聽
聽 涓垹闄わ紝騫跺皢璇ョ粨鐐圭殑絀洪棿鍒嗛厤緇欑▼搴忥紝鍙﹀錛屽浜庡ぇ澶氭暟緋葷粺錛屼細(xì)鍦ㄨ繖鍧楀唴瀛樼┖闂翠腑鐨劼?
聽 棣栧湴鍧澶勮褰曟湰嬈″垎閰嶇殑澶у皬錛岃繖鏍鳳紝浠g爜涓殑delete璇彞鎵嶈兘姝g‘鐨勯噴鏀炬湰鍐呭瓨絀洪棿銆偮?
聽 鍙﹀錛岀敱浜庢壘鍒扮殑鍫嗙粨鐐圭殑澶у皬涓嶄竴瀹氭濂界瓑浜庣敵璇風(fēng)殑澶у皬錛岀郴緇熶細(xì)鑷姩鐨勫皢澶氫綑鐨勯偅閮?
聽 鍒嗛噸鏂版斁鍏ョ┖闂查摼琛ㄤ腑銆偮犅犅?
聽聽
聽 2.3鐢寵澶у皬鐨勯檺鍒堵犅犅?
聽 鏍堬細(xì)鍦╓indows涓?鏍堟槸鍚戜綆鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄竴鍧楄繛緇殑鍐呭瓨鐨勫尯鍩熴傝繖鍙ヨ瘽鐨勬剰聽
聽 鎬濇槸鏍堥《鐨勫湴鍧鍜屾爤鐨勬渶澶у閲忔槸緋葷粺棰勫厛瑙勫畾濂界殑錛屽湪WINDOWS涓嬶紝鏍堢殑澶у皬鏄?M錛堜篃鏈壜?
聽 鐨勮鏄?M錛屾諱箣鏄竴涓紪璇戞椂灝辯‘瀹氱殑甯告暟錛夛紝濡傛灉鐢寵鐨勭┖闂磋秴榪囨爤鐨勫墿浣欑┖闂存椂錛屽皢聽
聽 鎻愮ずoverflow銆傚洜姝わ紝鑳戒粠鏍堣幏寰楃殑絀洪棿杈冨皬銆偮犅犅?
聽 鍫嗭細(xì)鍫嗘槸鍚戦珮鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄笉榪炵畫鐨勫唴瀛樺尯鍩熴傝繖鏄敱浜庣郴緇熸槸鐢ㄩ摼琛ㄦ潵瀛樺偍聽
聽 鐨勭┖闂插唴瀛樺湴鍧鐨勶紝鑷劧鏄笉榪炵畫鐨勶紝鑰岄摼琛ㄧ殑閬嶅巻鏂瑰悜鏄敱浣庡湴鍧鍚戦珮鍦板潃銆傚爢鐨勫ぇ灝徛?
聽 鍙楅檺浜庤綆楁満緋葷粺涓湁鏁堢殑铏氭嫙鍐呭瓨銆傜敱姝ゅ彲瑙侊紝鍫嗚幏寰楃殑絀洪棿姣旇緝鐏墊椿錛屼篃姣旇緝澶с偮犅犅?
聽聽
聽聽
聽聽
聽 2.4鐢寵鏁堢巼鐨勬瘮杈冿細(xì)聽聽聽
聽 鏍堢敱緋葷粺鑷姩鍒嗛厤錛岄熷害杈冨揩銆備絾紼嬪簭鍛樻槸鏃犳硶鎺у埗鐨勩偮犅犅?
聽 鍫嗘槸鐢眓ew鍒嗛厤鐨勫唴瀛橈紝涓鑸熷害姣旇緝鎱紝鑰屼笖瀹規(guī)槗浜х敓鍐呭瓨紕庣墖,涓嶈繃鐢ㄨ搗鏉ユ渶鏂逛究.聽聽聽
聽 鍙﹀錛屽湪WINDOWS涓嬶紝鏈濂界殑鏂瑰紡鏄敤VirtualAlloc鍒嗛厤鍐呭瓨錛屼粬涓嶆槸鍦ㄥ爢錛屼篃涓嶆槸鍦ㄦ爤鏄?
聽 鐩存帴鍦ㄨ繘紼嬬殑鍦板潃絀洪棿涓繚鐣欎竴鍧楀唴瀛橈紝铏界劧鐢ㄨ搗鏉ユ渶涓嶆柟渚褲備絾鏄熷害蹇紝涔熸渶鐏墊椿銆偮?
聽聽聽聽
聽聽
聽 2.5鍫嗗拰鏍堜腑鐨勫瓨鍌ㄥ唴瀹孤犅犅?
聽 鏍堬細(xì)聽聽 鍦ㄥ嚱鏁拌皟鐢ㄦ椂錛岀涓涓繘鏍堢殑鏄富鍑芥暟涓悗鐨勪笅涓鏉℃寚浠わ紙鍑芥暟璋冪敤璇彞鐨勪笅涓鏉″彲聽
聽 鎵ц璇彞錛夌殑鍦板潃錛岀劧鍚庢槸鍑芥暟鐨勫悇涓弬鏁幫紝鍦ㄥぇ澶氭暟鐨凜緙栬瘧鍣ㄤ腑錛屽弬鏁版槸鐢卞彸寰宸﹀叆鏍埪?
聽 鐨勶紝鐒跺悗鏄嚱鏁頒腑鐨勫眬閮ㄥ彉閲忋傛敞鎰忛潤鎬佸彉閲忔槸涓嶅叆鏍堢殑銆偮犅犅?
聽 褰撴湰嬈″嚱鏁拌皟鐢ㄧ粨鏉熷悗錛屽眬閮ㄥ彉閲忓厛鍑烘爤錛岀劧鍚庢槸鍙傛暟錛屾渶鍚庢爤欏舵寚閽堟寚鍚戞渶寮濮嬪瓨鐨勫湴聽
聽 鍧錛屼篃灝辨槸涓誨嚱鏁頒腑鐨勪笅涓鏉℃寚浠わ紝紼嬪簭鐢辮鐐圭戶緇繍琛屻偮犅犅?
聽 鍫嗭細(xì)涓鑸槸鍦ㄥ爢鐨勫ご閮ㄧ敤涓涓瓧鑺傚瓨鏀懼爢鐨勫ぇ灝忋傚爢涓殑鍏蜂綋鍐呭鐢辯▼搴忓憳瀹夋帓銆偮犅犅?
聽聽
聽 2.6瀛樺彇鏁堢巼鐨勬瘮杈兟犅犅?
聽聽
聽 char聽聽 s1[]聽聽 =聽聽 "aaaaaaaaaaaaaaa";聽聽聽
聽 char聽聽 *s2聽聽 =聽聽 "bbbbbbbbbbbbbbbbb";聽聽聽
聽 aaaaaaaaaaa鏄湪榪愯鏃跺埢璧嬪肩殑錛浡犅犅?
聽 鑰宐bbbbbbbbbb鏄湪緙栬瘧鏃跺氨紜畾鐨勶紱聽聽聽
聽 浣嗘槸錛屽湪浠ュ悗鐨勫瓨鍙栦腑錛屽湪鏍堜笂鐨勬暟緇勬瘮鎸囬拡鎵鎸囧悜鐨勫瓧絎︿覆(渚嬪鍫?蹇偮犅犅?
聽 姣斿錛毬犅犅?
聽 #include聽聽聽
聽 void聽聽 main()聽聽聽
聽 {聽聽聽
聽 char聽聽 a聽聽 =聽聽 1;聽聽聽
聽 char聽聽 c[]聽聽 =聽聽 "1234567890";聽聽聽
聽 char聽聽 *p聽聽 ="1234567890";聽聽聽
聽 a聽聽 =聽聽 c[1];聽聽聽
聽 a聽聽 =聽聽 p[1];聽聽聽
聽 return;聽聽聽
聽 }聽聽聽
聽 瀵瑰簲鐨勬眹緙栦唬鐮伮犅犅?
聽 10:聽聽 a聽聽 =聽聽 c[1];聽聽聽
聽 00401067聽聽 8A聽聽 4D聽聽 F1聽聽 mov聽聽 cl,byte聽聽 ptr聽聽 [ebp-0Fh]聽聽聽
聽 0040106A聽聽 88聽聽 4D聽聽 FC聽聽 mov聽聽 byte聽聽 ptr聽聽 [ebp-4],cl聽聽聽
聽 11:聽聽 a聽聽 =聽聽 p[1];聽聽聽
聽 0040106D聽聽 8B聽聽 55聽聽 EC聽聽 mov聽聽 edx,dword聽聽 ptr聽聽 [ebp-14h]聽聽聽
聽 00401070聽聽 8A聽聽 42聽聽 01聽聽 mov聽聽 al,byte聽聽 ptr聽聽 [edx+1]聽聽聽
聽 00401073聽聽 88聽聽 45聽聽 FC聽聽 mov聽聽 byte聽聽 ptr聽聽 [ebp-4],al聽聽聽
聽 絎竴縐嶅湪璇誨彇鏃剁洿鎺ュ氨鎶婂瓧絎︿覆涓殑鍏冪礌璇誨埌瀵勫瓨鍣╟l涓紝鑰岀浜岀鍒欒鍏堟妸鎸囬拡鍊艱鍒奧?
聽 edx涓紝鍐嶆牴鎹甧dx璇誨彇瀛楃錛屾樉鐒舵參浜嗐偮犅犅?
聽聽
聽聽
聽 2.7灝忕粨錛毬犅犅?
聽 鍫嗗拰鏍堢殑鍖哄埆鍙互鐢ㄥ涓嬬殑姣斿柣鏉ョ湅鍑猴細(xì)聽聽聽
聽 浣跨敤鏍堝氨璞℃垜浠幓楗閲屽悆楗紝鍙鐐硅彍錛堝彂鍑虹敵璇鳳級(jí)銆佷粯閽便佸拰鍚冿紙浣跨敤錛夛紝鍚冮ケ浜嗗氨聽
聽 璧幫紝涓嶅繀鐞嗕細(xì)鍒囪彍銆佹礂鑿滅瓑鍑嗗宸ヤ綔鍜屾礂紕椼佸埛閿呯瓑鎵熬宸ヤ綔錛屼粬鐨勫ソ澶勬槸蹇嵎錛屼絾鏄嚜聽
聽 鐢卞害灝忋偮犅犅?
聽 浣跨敤鍫嗗氨璞℃槸鑷繁鍔ㄦ墜鍋氬枩嬈㈠悆鐨勮彍鑲達(dá)紝姣旇緝楹葷儲(chǔ)錛屼絾鏄瘮杈冪鍚堣嚜宸辯殑鍙e懗錛岃屼笖鑷敱聽
聽 搴﹀ぇ銆偮犅?(緇忓吀錛?聽



鍦╞bs涓婏紝鍫嗕笌鏍堢殑鍖哄垎闂錛屼技涔庢槸涓涓案鎭掔殑璇濋錛岀敱姝ゅ彲瑙侊紝鍒濆鑰呭姝ゅ線寰鏄販娣嗕笉娓呯殑錛屾墍浠ユ垜鍐沖畾鎷夸粬絎竴涓紑鍒銆?br />聽聽聽聽聽 棣栧厛錛屾垜浠婦涓涓緥瀛愶細(xì)
聽聽聽聽聽 void f() { int* p=new int[5]; }
聽聽聽聽聽 榪欐潯鐭煭鐨勪竴鍙ヨ瘽灝卞寘鍚簡鍫嗕笌鏍堬紝鐪嬪埌new錛屾垜浠鍏堝氨搴旇鎯沖埌錛屾垜浠垎閰嶄簡涓鍧楀爢鍐呭瓨錛岄偅涔堟寚閽坧鍛紵浠栧垎閰嶇殑鏄竴鍧楁爤鍐呭瓨錛屾墍浠ヨ繖鍙ヨ瘽鐨勬剰鎬濆氨鏄細(xì)鍦ㄦ爤鍐呭瓨涓瓨鏀句簡涓涓寚鍚戜竴鍧楀爢鍐呭瓨鐨勬寚閽坧銆傚湪紼嬪簭浼?xì)鍏埣嫯瀹氬湪鍫嗕腑鍒嗛厤鍐呭瓨鐨勫ぇ灏忓Q岀劧鍚庤皟鐢╫perator new鍒嗛厤鍐呭瓨錛岀劧鍚庤繑鍥炶繖鍧楀唴瀛樼殑棣栧湴鍧錛屾斁鍏ユ爤涓紝浠栧湪VC6涓嬬殑姹囩紪浠g爜濡備笅錛?br />聽聽聽聽聽 00401028聽聽聽聽 push聽聽聽聽聽聽聽聽聽 14h
聽聽聽聽聽 0040102A聽聽聽聽 call聽聽聽聽聽聽聽聽聽 operator new (00401060)
聽聽聽聽聽 0040102F聽聽聽聽 add聽聽聽聽聽聽聽聽聽聽 esp,4
聽聽聽聽聽 00401032聽聽聽聽 mov聽聽聽聽聽聽聽聽聽聽 dword ptr [ebp-8],eax
聽聽聽聽聽 00401035聽聽聽聽 mov聽聽聽聽聽聽聽聽聽聽 eax,dword ptr [ebp-8]
聽聽聽聽聽 00401038聽聽聽聽 mov聽聽聽聽聽聽聽聽聽聽 dword ptr [ebp-4],eax
聽聽聽聽聽 榪欓噷錛屾垜浠負(fù)浜嗙畝鍗曞茍娌℃湁閲婃斁鍐呭瓨錛岄偅涔堣鎬庝箞鍘婚噴鏀懼憿錛熸槸delete p涔堬紵婢籌紝閿欎簡錛屽簲璇ユ槸delete []p錛岃繖鏄負(fù)浜嗗憡璇夌紪璇戝櫒錛氭垜鍒犻櫎鐨勬槸涓涓暟緇勶紝VC6灝變細(xì)鏍規(guī)嵁鐩稿簲鐨凜ookie淇℃伅鍘昏繘琛岄噴鏀懼唴瀛樼殑宸ヤ綔銆?br />聽聽聽聽聽 濂戒簡錛屾垜浠洖鍒版垜浠殑涓婚錛氬爢鍜屾爤絀剁珶鏈変粈涔堝尯鍒紵
聽聽聽聽聽 涓昏鐨勫尯鍒敱浠ヤ笅鍑犵偣錛?br />聽聽聽聽聽 1銆佺鐞嗘柟寮忎笉鍚岋紱
聽聽聽聽聽 2銆佺┖闂村ぇ灝忎笉鍚岋紱
聽聽聽聽聽 3銆佽兘鍚︿駭鐢熺鐗囦笉鍚岋紱
聽聽聽聽聽 4銆佺敓闀挎柟鍚戜笉鍚岋紱
聽聽聽聽聽 5銆佸垎閰嶆柟寮忎笉鍚岋紱
聽聽聽聽聽 6銆佸垎閰嶆晥鐜囦笉鍚岋紱
聽聽聽聽聽 綆$悊鏂瑰紡錛氬浜庢爤鏉ヨ錛屾槸鐢辯紪璇戝櫒鑷姩綆$悊錛屾棤闇鎴戜滑鎵嬪伐鎺у埗錛涘浜庡爢鏉ヨ錛岄噴鏀懼伐浣滅敱紼嬪簭鍛樻帶鍒訛紝瀹規(guī)槗浜х敓memory leak銆?br />聽聽聽聽聽 絀洪棿澶у皬錛氫竴鑸潵璁插湪32浣嶇郴緇熶笅錛屽爢鍐呭瓨鍙互杈懼埌4G鐨勭┖闂達(dá)紝浠庤繖涓搴︽潵鐪嬪爢鍐呭瓨鍑犱箮鏄病鏈変粈涔堥檺鍒剁殑銆備絾鏄浜庢爤鏉ヨ錛屼竴鑸兘鏄湁涓瀹氱殑絀洪棿澶у皬鐨勶紝渚嬪錛屽湪VC6涓嬮潰錛岄粯璁ょ殑鏍堢┖闂村ぇ灝忔槸1M錛堝ソ鍍忔槸錛岃涓嶆竻妤氫簡錛夈傚綋鐒?dòng)灱屾垜浠彲浠ヤ慨鏀瑰Q毬犅犅犅?br />聽聽聽聽聽 鎵撳紑宸ョ▼錛屼緷嬈℃搷浣滆彍鍗曞涓嬶細(xì)Project->Setting->Link錛屽湪Category 涓変腑Output錛岀劧鍚庡湪Reserve涓瀹氬爢鏍堢殑鏈澶у煎拰commit銆?br />娉ㄦ剰錛歳eserve鏈灝忓間負(fù)4Byte錛沜ommit鏄繚鐣欏湪铏氭嫙鍐呭瓨鐨勯〉鏂囦歡閲岄潰錛屽畠璁劇疆鐨勮緝澶т細(xì)浣挎爤寮杈熻緝澶х殑鍊鹼紝鍙兘澧炲姞鍐呭瓨鐨勫紑閿鍜屽惎鍔ㄦ椂闂淬?br />聽聽聽聽聽 紕庣墖闂錛氬浜庡爢鏉ヨ錛岄綣佺殑new/delete鍔垮繀浼?xì)閫犳垚鍐呭瓨絀洪棿鐨勪笉榪炵畫錛屼粠鑰岄犳垚澶ч噺鐨勭鐗囷紝浣跨▼搴忔晥鐜囬檷浣庛傚浜庢爤鏉ヨ錛屽垯涓嶄細(xì)瀛樺湪榪欎釜闂錛屽洜涓烘爤鏄厛榪涘悗鍑虹殑闃熷垪錛屼粬浠槸濡傛鐨勪竴涓瀵瑰簲錛屼互鑷充簬姘歌繙閮戒笉鍙兘鏈変竴涓唴瀛樺潡浠庢爤涓棿寮瑰嚭錛屽湪浠栧脊鍑轟箣鍓嶏紝鍦ㄤ粬涓婇潰鐨勫悗榪涚殑鏍堝唴瀹瑰凡緇忚寮瑰嚭錛岃緇嗙殑鍙互鍙傝冩暟鎹粨鏋勶紝榪欓噷鎴戜滑灝變笉鍐嶄竴涓璁ㄨ浜嗐?br />聽聽聽聽聽 鐢熼暱鏂瑰悜錛氬浜庡爢鏉ヨ錛岀敓闀挎柟鍚戞槸鍚戜笂鐨勶紝涔熷氨鏄悜鐫鍐呭瓨鍦板潃澧炲姞鐨勬柟鍚戯紱瀵逛簬鏍堟潵璁詫紝瀹冪殑鐢熼暱鏂瑰悜鏄悜涓嬬殑錛屾槸鍚戠潃鍐呭瓨鍦板潃鍑忓皬鐨勬柟鍚戝闀褲?br />聽聽聽聽聽 鍒嗛厤鏂瑰紡錛氬爢閮芥槸鍔ㄦ佸垎閰嶇殑錛屾病鏈夐潤鎬佸垎閰嶇殑鍫嗐傛爤鏈?縐嶅垎閰嶆柟寮忥細(xì)闈欐佸垎閰嶅拰鍔ㄦ佸垎閰嶃傞潤鎬佸垎閰嶆槸緙栬瘧鍣ㄥ畬鎴愮殑錛屾瘮濡傚眬閮ㄥ彉閲忕殑鍒嗛厤銆傚姩鎬佸垎閰嶇敱alloca鍑芥暟榪涜鍒嗛厤錛屼絾鏄爤鐨勫姩鎬佸垎閰嶅拰鍫嗘槸涓嶅悓鐨勶紝浠栫殑鍔ㄦ佸垎閰嶆槸鐢辯紪璇戝櫒榪涜閲婃斁錛屾棤闇鎴戜滑鎵嬪伐瀹炵幇銆?br />聽聽聽聽聽 鍒嗛厤鏁堢巼錛氭爤鏄満鍣ㄧ郴緇熸彁渚涚殑鏁版嵁緇撴瀯錛岃綆楁満浼?xì)鍦ㄥ簳灞傚?guī)爤鎻愪緵鏀寔錛氬垎閰嶄笓闂ㄧ殑瀵勫瓨鍣ㄥ瓨鏀炬爤鐨勫湴鍧錛屽帇鏍堝嚭鏍堥兘鏈変笓闂ㄧ殑鎸囦護(hù)鎵ц錛岃繖灝卞喅瀹氫簡鏍堢殑鏁堢巼姣旇緝楂樸傚爢鍒欐槸C/C++鍑芥暟搴撴彁渚涚殑錛屽畠鐨勬満鍒舵槸寰堝鏉傜殑錛屼緥濡備負(fù)浜嗗垎閰嶄竴鍧楀唴瀛橈紝搴撳嚱鏁頒細(xì)鎸夌収涓瀹氱殑綆楁硶錛堝叿浣撶殑綆楁硶鍙互鍙傝冩暟鎹粨鏋?鎿嶄綔緋葷粺錛夊湪鍫嗗唴瀛樹腑鎼滅儲(chǔ)鍙敤鐨勮凍澶熷ぇ灝忕殑絀洪棿錛屽鏋滄病鏈夎凍澶熷ぇ灝忕殑絀洪棿錛堝彲鑳芥槸鐢變簬鍐呭瓨紕庣墖澶錛夛紝灝辨湁鍙兘璋冪敤緋葷粺鍔熻兘鍘誨鍔犵▼搴忔暟鎹鐨勫唴瀛樼┖闂達(dá)紝榪欐牱灝辨湁鏈轟細(xì)鍒嗗埌瓚沖澶у皬鐨勫唴瀛橈紝鐒跺悗榪涜榪斿洖銆傛樉鐒?dòng)灱屽爢鐨勬晥鐜囨瘮鏍堣浣庡緱澶氥?br />聽聽聽聽聽 浠庤繖閲屾垜浠彲浠ョ湅鍒幫紝鍫嗗拰鏍堢浉姣旓紝鐢變簬澶ч噺new/delete鐨勪嬌鐢紝瀹規(guī)槗閫犳垚澶ч噺鐨勫唴瀛樼鐗囷紱鐢變簬娌℃湁涓撻棬鐨勭郴緇熸敮鎸侊紝鏁堢巼寰堜綆錛涚敱浜庡彲鑳藉紩鍙戠敤鎴鋒佸拰鏍稿績鎬佺殑鍒囨崲錛屽唴瀛樼殑鐢寵錛屼唬浠峰彉寰楁洿鍔犳槀璐點(diǎn)傛墍浠ユ爤鍦ㄧ▼搴忎腑鏄簲鐢ㄦ渶騫挎硾鐨勶紝灝辯畻鏄嚱鏁扮殑璋冪敤涔熷埄鐢ㄦ爤鍘誨畬鎴愶紝鍑芥暟璋冪敤榪囩▼涓殑鍙傛暟錛岃繑鍥炲湴鍧錛孍BP鍜屽眬閮ㄥ彉閲忛兘閲囩敤鏍堢殑鏂瑰紡瀛樻斁銆傛墍浠ワ紝鎴戜滑鎺ㄨ崘澶у灝介噺鐢ㄦ爤錛岃屼笉鏄敤鍫嗐?br />聽聽聽聽聽 铏界劧鏍堟湁濡傛浼楀鐨勫ソ澶勶紝浣嗘槸鐢變簬鍜屽爢鐩告瘮涓嶆槸閭d箞鐏墊椿錛屾湁鏃跺欏垎閰嶅ぇ閲忕殑鍐呭瓨絀洪棿錛岃繕鏄敤鍫嗗ソ涓浜涖?br />聽聽聽聽聽 鏃犺鏄爢榪樻槸鏍堬紝閮借闃叉瓚婄晫鐜拌薄鐨勫彂鐢燂紙闄ら潪浣犳槸鏁呮剰浣垮叾瓚婄晫錛夛紝鍥犱負(fù)瓚婄晫鐨勭粨鏋滆涔堟槸紼嬪簭宕╂簝錛岃涔堟槸鎽ф瘉紼嬪簭鐨勫爢銆佹爤緇撴瀯錛屼駭鐢熶互鎯充笉鍒扮殑緇撴灉,灝辯畻鏄湪浣犵殑紼嬪簭榪愯榪囩▼涓紝娌℃湁鍙戠敓涓婇潰鐨勯棶棰橈紝浣犺繕鏄灝忓績錛岃涓嶅畾浠涔堟椂鍊欏氨宕╂帀錛岄偅鏃跺檇ebug鍙槸鐩稿綋鍥伴毦鐨勶細(xì)錛?br />聽聽聽聽聽 瀵逛簡錛岃繕鏈変竴浠朵簨錛屽鏋滄湁浜烘妸鍫嗘爤鍚堣搗鏉ヨ錛岄偅瀹冪殑鎰忔濇槸鏍堬紝鍙笉鏄爢錛屽懙鍛碉紝娓呮浜嗭紵


闃肯 2010-06-10 09:38 鍙戣〃璇勮
]]>
榪涚▼闂撮氫俊http://m.shnenglu.com/lapcca/archive/2010/06/10/117526.html闃肯闃肯Thu, 10 Jun 2010 01:27:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/06/10/117526.htmlhttp://m.shnenglu.com/lapcca/comments/117526.htmlhttp://m.shnenglu.com/lapcca/archive/2010/06/10/117526.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/117526.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/117526.html 鎽?瑕?闅忕潃浜轟滑瀵瑰簲鐢ㄧ▼搴忕殑瑕佹眰瓚婃潵瓚婇珮錛屽崟榪涚▼搴旂敤鍦ㄨ澶氬満鍚堝凡涓嶈兘婊¤凍浜轟滑鐨勮姹傘傜紪鍐欏榪涚▼/澶氱嚎紼嬬▼搴忔垚涓虹幇浠g▼搴忚璁$殑涓涓噸瑕佺壒鐐癸紝鍦ㄥ榪涚▼紼嬪簭璁捐涓紝榪涚▼闂寸殑閫氫俊鏄笉鍙伩鍏嶇殑銆侻icrosoft Win32 API鎻愪緵浜嗗縐嶈繘紼嬮棿閫氫俊鐨勬柟娉曪紝鍏ㄩ潰鍦伴槓榪頒簡榪欎簺鏂規(guī)硶鐨勭壒鐐癸紝騫跺姞浠ユ瘮杈冨拰鍒嗘瀽錛屽笇鏈涜兘緇欒鑰呴夋嫨閫氫俊鏂規(guī)硶鎻愪緵鍙傝冦?/font>


1 榪涚▼涓庤繘紼嬮氫俊

銆銆榪涚▼鏄鍏ュ唴瀛樺茍鍑嗗鎵ц鐨勭▼搴忥紝姣忎釜榪涚▼閮芥湁縐佹湁鐨勮櫄鎷熷湴鍧絀洪棿錛岀敱浠g爜銆佹暟鎹互鍙?qiáng)瀹冨彲鍒╃敤鐨劸p葷粺璧勬簮(濡傛枃浠躲佺閬撶瓑)緇勬垚銆傚榪涚▼/澶氱嚎紼嬫槸Windows鎿嶄綔緋葷粺鐨勪竴涓熀鏈壒寰併侻icrosoft Win32搴旂敤緙栫▼鎺ュ彛(Application Programming Interface, API)鎻愪緵浜嗗ぇ閲忔敮鎸佸簲鐢ㄧ▼搴忛棿鏁版嵁鍏變韓鍜屼氦鎹㈢殑鏈哄埗錛岃繖浜涙満鍒惰浣跨殑媧誨姩縐頒負(fù)榪涚▼闂撮氫俊(InterProcess Communication, IPC)錛岃繘紼嬮氫俊灝辨槸鎸囦笉鍚岃繘紼嬮棿榪涜鏁版嵁鍏變韓鍜屾暟鎹氦鎹€?br />銆銆姝e洜涓轟嬌鐢╓in32 API榪涜榪涚▼閫氫俊鏂瑰紡鏈夊縐嶏紝濡備綍閫夋嫨鎭板綋鐨勯氫俊鏂瑰紡灝辨垚涓哄簲鐢ㄥ紑鍙戜腑鐨勪竴涓噸瑕侀棶棰橈紝涓嬮潰鏈枃灝嗗Win32涓繘紼嬮氫俊鐨勫嚑縐嶆柟娉曞姞浠ュ垎鏋愬拰姣旇緝銆?

2 榪涚▼閫氫俊鏂規(guī)硶

2.1 鏂囦歡鏄犲皠
銆銆鏂囦歡鏄犲皠(Memory-Mapped Files)鑳戒嬌榪涚▼鎶婃枃浠跺唴瀹瑰綋浣滆繘紼嬪湴鍧鍖洪棿涓鍧楀唴瀛橀偅鏍鋒潵瀵瑰緟銆傚洜姝わ紝榪涚▼涓嶅繀浣跨敤鏂囦歡I/O鎿嶄綔錛屽彧闇綆鍗曠殑鎸囬拡鎿嶄綔灝卞彲璇誨彇鍜屼慨鏀規(guī)枃浠剁殑鍐呭銆?br />銆銆Win32 API鍏佽澶氫釜榪涚▼璁塊棶鍚屼竴鏂囦歡鏄犲皠瀵硅薄錛屽悇涓繘紼嬪湪瀹冭嚜宸辯殑鍦板潃絀洪棿閲屾帴鏀跺唴瀛樼殑鎸囬拡銆傞氳繃浣跨敤榪欎簺鎸囬拡錛屼笉鍚岃繘紼嬪氨鍙互璇繪垨淇敼鏂囦歡鐨勫唴瀹癸紝瀹炵幇浜嗗鏂囦歡涓暟鎹殑鍏變韓銆?br />銆銆搴旂敤紼嬪簭鏈変笁縐嶆柟娉曟潵浣垮涓繘紼嬪叡浜竴涓枃浠舵槧灝勫璞°?br />銆銆(1)緇ф壙錛氱涓涓繘紼嬪緩绔嬫枃浠舵槧灝勫璞★紝瀹冪殑瀛愯繘紼嬬戶鎵胯瀵硅薄鐨勫彞鏌勩?br />銆銆(2)鍛藉悕鏂囦歡鏄犲皠錛氱涓涓繘紼嬪湪寤虹珛鏂囦歡鏄犲皠瀵硅薄鏃跺彲浠ョ粰璇ュ璞℃寚瀹氫竴涓悕瀛?鍙笌鏂囦歡鍚嶄笉鍚?銆傜浜屼釜榪涚▼鍙氳繃榪欎釜鍚嶅瓧鎵撳紑姝ゆ枃浠舵槧灝勫璞°傚彟澶栵紝絎竴涓繘紼嬩篃鍙互閫氳繃涓浜涘叾瀹僆PC鏈哄埗(鏈夊悕綆¢亾銆侀偖浠舵Ы絳?鎶婂悕瀛椾紶緇欑浜屼釜榪涚▼銆?br />銆銆(3)鍙ユ焺澶嶅埗錛氱涓涓繘紼嬪緩绔嬫枃浠舵槧灝勫璞★紝鐒跺悗閫氳繃鍏跺畠IPC鏈哄埗(鏈夊悕綆¢亾銆侀偖浠舵Ы絳?鎶婂璞″彞鏌勪紶閫掔粰絎簩涓繘紼嬨傜浜屼釜榪涚▼澶嶅埗璇ュ彞鏌勫氨鍙栧緱瀵硅鏂囦歡鏄犲皠瀵硅薄鐨勮闂潈闄愩?br />銆銆鏂囦歡鏄犲皠鏄湪澶氫釜榪涚▼闂村叡浜暟鎹殑闈炲父鏈夋晥鏂規(guī)硶錛屾湁杈冨ソ鐨勫畨鍏ㄦс備絾鏂囦歡鏄犲皠鍙兘鐢ㄤ簬鏈湴鏈哄櫒鐨勮繘紼嬩箣闂達(dá)紝涓嶈兘鐢ㄤ簬緗戠粶涓紝鑰屽紑鍙戣呰繕蹇呴』鎺у埗榪涚▼闂寸殑鍚屾銆?br />2.2 鍏變韓鍐呭瓨
銆銆Win32 API涓叡浜唴瀛?Shared Memory)瀹為檯灝辨槸鏂囦歡鏄犲皠鐨勪竴縐嶇壒孌婃儏鍐點(diǎn)傝繘紼嬪湪鍒涘緩鏂囦歡鏄犲皠瀵硅薄鏃剁敤0xFFFFFFFF鏉ヤ唬鏇挎枃浠跺彞鏌?HANDLE)錛屽氨琛ㄧず浜嗗搴旂殑鏂囦歡鏄犲皠瀵硅薄鏄粠鎿嶄綔緋葷粺欏甸潰鏂囦歡璁塊棶鍐呭瓨錛屽叾瀹冭繘紼嬫墦寮璇ユ枃浠舵槧灝勫璞″氨鍙互璁塊棶璇ュ唴瀛樺潡銆傜敱浜庡叡浜唴瀛樻槸鐢ㄦ枃浠舵槧灝勫疄鐜扮殑錛屾墍浠ュ畠涔熸湁杈冨ソ鐨勫畨鍏ㄦэ紝涔熷彧鑳借繍琛屼簬鍚屼竴璁$畻鏈轟笂鐨勮繘紼嬩箣闂淬?br />2.3 鍖垮悕綆¢亾
銆銆綆¢亾(Pipe)鏄竴縐嶅叿鏈変袱涓鐐圭殑閫氫俊閫氶亾錛氭湁涓绔彞鏌勭殑榪涚▼鍙互鍜屾湁鍙︿竴绔彞鏌勭殑榪涚▼閫氫俊銆傜閬撳彲浠ユ槸鍗曞悜錛嶄竴绔槸鍙鐨勶紝鍙︿竴绔偣鏄彧鍐欑殑錛涗篃鍙互鏄弻鍚戠殑涓綆¢亾鐨勪袱绔偣鏃㈠彲璇諱篃鍙啓銆?br />銆銆鍖垮悕綆¢亾(Anonymous Pipe)鏄?鍦ㄧ埗榪涚▼鍜屽瓙榪涚▼涔嬮棿錛屾垨鍚屼竴鐖惰繘紼嬬殑涓や釜瀛愯繘紼嬩箣闂翠紶杈撴暟鎹殑鏃犲悕瀛楃殑鍗曞悜綆¢亾銆傞氬父鐢辯埗榪涚▼鍒涘緩綆¢亾錛岀劧鍚庣敱瑕侀氫俊鐨勫瓙榪涚▼緇ф壙閫氶亾鐨勮绔偣鍙ユ焺鎴栧啓 绔偣鍙ユ焺錛岀劧鍚庡疄鐜伴氫俊銆傜埗榪涚▼榪樺彲浠ュ緩绔嬩袱涓垨鏇村涓戶鎵垮尶鍚嶇閬撹鍜屽啓鍙ユ焺鐨勫瓙榪涚▼銆傝繖浜涘瓙榪涚▼鍙互浣跨敤綆¢亾鐩存帴閫氫俊錛屼笉闇瑕侀氳繃鐖惰繘紼嬨?br />銆銆鍖垮悕綆¢亾鏄崟鏈轟笂瀹炵幇瀛愯繘紼嬫爣鍑咺/O閲嶅畾鍚戠殑鏈夋晥鏂規(guī)硶錛屽畠涓嶈兘鍦ㄧ綉涓婁嬌鐢紝涔熶笉鑳界敤浜庝袱涓笉鐩稿叧鐨勮繘紼嬩箣闂淬?br />2.4 鍛藉悕綆¢亾
銆銆鍛藉悕綆¢亾(Named Pipe)鏄湇鍔″櫒榪涚▼鍜屼竴涓垨澶氫釜瀹㈡埛榪涚▼涔嬮棿閫氫俊鐨勫崟鍚戞垨鍙屽悜綆¢亾銆備笉鍚屼簬鍖垮悕綆¢亾鐨勬槸鍛藉悕綆¢亾鍙互鍦ㄤ笉鐩稿叧鐨勮繘紼嬩箣闂村拰涓嶅悓璁$畻鏈轟箣闂翠嬌鐢紝鏈嶅姟鍣ㄥ緩绔嬪懡鍚嶇閬撴椂緇欏畠鎸囧畾涓涓悕瀛楋紝浠諱綍榪涚▼閮藉彲浠ラ氳繃璇ュ悕瀛楁墦寮綆¢亾鐨勫彟涓绔紝鏍規(guī)嵁緇欏畾鐨勬潈闄愬拰鏈嶅姟鍣ㄨ繘紼嬮氫俊銆?br />銆銆鍛藉悕綆¢亾鎻愪緵浜嗙浉瀵圭畝鍗曠殑緙栫▼鎺ュ彛錛屼嬌閫氳繃緗戠粶浼犺緭鏁版嵁騫朵笉姣斿悓涓璁$畻鏈轟笂涓よ繘紼嬩箣闂撮氫俊鏇村洶闅撅紝涓嶈繃濡傛灉瑕佸悓鏃跺拰澶氫釜榪涚▼閫氫俊瀹冨氨鍔涗笉浠庡績浜嗐?br />2.5 閭歡妲?br />銆銆閭歡妲?Mailslots)鎻?渚涜繘紼嬮棿鍗曞悜閫氫俊鑳藉姏錛屼換浣曡繘紼嬮兘鑳藉緩绔嬮偖浠舵Ы鎴愪負(fù)閭歡妲芥湇鍔″櫒銆傚叾瀹冭繘紼嬶紝縐頒負(fù)閭歡妲藉鎴鳳紝鍙互閫氳繃閭歡妲界殑鍚嶅瓧緇欓偖浠舵Ы鏈嶅姟鍣ㄨ繘紼嬪彂閫佹秷鎭傝繘鏉ョ殑娑?鎭竴鐩存斁鍦ㄩ偖浠舵Ы涓紝鐩村埌鏈嶅姟鍣ㄨ繘紼嬭鍙栧畠涓烘銆備竴涓繘紼嬫棦鍙互鏄偖浠舵Ы鏈嶅姟鍣ㄤ篃鍙互鏄偖浠舵Ы瀹㈡埛錛屽洜姝ゅ彲寤虹珛澶氫釜閭歡妲藉疄鐜拌繘紼嬮棿鐨勫弻鍚戦氫俊銆?br />銆銆閫氳繃閭歡妲藉彲浠ョ粰鏈湴璁$畻鏈轟笂鐨勯偖浠舵Ы銆佸叾瀹冭綆楁満涓婄殑閭歡妲芥垨鎸囧畾緗戠粶鍖哄煙涓墍鏈夎綆楁満涓婃湁鍚屾牱鍚嶅瓧鐨勯偖浠舵Ы鍙戦佹秷鎭傚箍鎾氫俊鐨勬秷鎭暱搴︿笉鑳借秴榪?00瀛楄妭錛岄潪騫挎挱娑堟伅鐨勯暱搴﹀垯鍙楅偖浠舵Ы鏈嶅姟鍣ㄦ寚瀹氱殑鏈澶ф秷鎭暱搴︾殑闄愬埗銆?br />銆銆閭歡妲戒笌鍛藉悕綆¢亾鐩鎬技錛屼笉榪囧畠浼犺緭鏁版嵁鏄氳繃涓嶅彲闈犵殑鏁版嵁鎶?濡俆CP/IP鍗忚涓殑UDP鍖?瀹屾垚鐨勶紝涓鏃︾綉緇滃彂鐢熼敊璇垯鏃犳硶淇濊瘉娑堟伅姝g‘鍦版帴鏀訛紝鑰屽懡鍚嶇閬撲紶杈撴暟鎹垯鏄緩绔嬪湪鍙潬榪炴帴鍩虹涓婄殑銆備笉榪囬偖浠舵Ы鏈夌畝鍖栫殑緙栫▼鎺ュ彛鍜岀粰鎸囧畾緗戠粶鍖哄煙鍐呯殑鎵鏈夎綆楁満騫挎挱娑堟伅鐨勮兘鍔涳紝鎵浠ラ偖浠舵Ы涓嶅け涓哄簲鐢ㄧ▼搴忓彂閫佸拰鎺ユ敹娑堟伅鐨勫彟涓縐嶉夋嫨銆?br />2.6 鍓創(chuàng)鏉?br />銆銆鍓創(chuàng)鏉?Clipped Board)瀹炶川鏄疻in32 API涓竴緇勭敤鏉ヤ紶杈撴暟鎹殑鍑芥暟鍜屾秷鎭紝涓篧indows搴旂敤紼嬪簭涔嬮棿榪涜鏁版嵁鍏變韓鎻愪緵浜嗕竴涓腑浠嬶紝W(xué)indows宸插緩绔嬬殑鍓垏(澶嶅埗)錛嶇矘璐寸殑鏈哄埗涓轟笉鍚屽簲鐢ㄧ▼搴忎箣闂村叡浜笉鍚屾牸寮忔暟鎹彁渚涗簡涓鏉℃嵎寰勩傚綋鐢ㄦ埛鍦ㄥ簲鐢ㄧ▼搴忎腑鎵ц鍓垏鎴栧鍒舵搷浣滄椂錛屽簲鐢ㄧ▼搴忔妸閫夊彇鐨勬暟鎹敤涓縐嶆垨澶氱鏍煎紡鏀懼湪鍓創(chuàng)鏉夸笂銆傜劧鍚庝換浣曞叾瀹冨簲鐢ㄧ▼搴忛兘鍙互浠庡壀璐存澘涓婃嬀鍙栨暟鎹紝浠庣粰瀹氭牸寮忎腑閫夋嫨閫傚悎鑷繁鐨勬牸寮忋?br />銆銆鍓創(chuàng)鏉挎槸涓涓潪甯告澗鏁g殑浜ゆ崲濯掍粙錛屽彲浠ユ敮鎸佷換浣曟暟鎹牸寮忥紝姣忎竴鏍煎紡鐢變竴鏃犵鍙鋒暣鏁版爣璇嗭紝瀵規(guī)爣鍑?棰勫畾涔?鍓創(chuàng)鏉挎牸寮忥紝璇ュ兼槸Win32 API瀹氫箟鐨勫父閲忥紱瀵歸潪鏍囧噯鏍煎紡鍙互浣跨敤Register Clipboard Format鍑芥暟娉ㄥ唽涓烘柊鐨勫壀璐存澘鏍煎紡銆傚埄鐢ㄥ壀璐存澘榪涜浜ゆ崲鐨勬暟鎹彧闇鍦ㄦ暟鎹牸寮忎笂涓鑷存垨閮藉彲浠ヨ漿鍖栦負(fù)鏌愮鏍煎紡灝辮銆備絾鍓創(chuàng)鏉垮彧鑳藉湪鍩轟簬Windows鐨勭▼搴忎腑浣跨敤錛屼笉鑳藉湪緗戠粶涓婁嬌鐢ㄣ?br />2.7 鍔ㄦ佹暟鎹氦鎹?br />銆銆鍔ㄦ佹暟鎹氦鎹?DDE)鏄嬌鐢ㄥ叡浜唴瀛樺湪搴旂敤紼嬪簭涔嬮棿榪涜鏁版嵁浜ゆ崲鐨勪竴縐嶈繘紼嬮棿閫氫俊褰㈠紡銆傚簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢―DE榪涜涓嬈℃ф暟鎹紶杈擄紝涔熷彲浠ュ綋鍑虹幇鏂版暟鎹椂錛岄氳繃鍙戦佹洿鏂板煎湪搴旂敤紼嬪簭闂村姩鎬佷氦鎹㈡暟鎹?br />銆銆DDE鍜屽壀璐存澘涓鏍鋒棦鏀寔鏍囧噯鏁版嵁鏍煎紡(濡傛枃鏈佷綅鍥劇瓑)錛屽張鍙互鏀寔鑷繁瀹氫箟鐨勬暟鎹牸寮忋備絾瀹冧滑鐨勬暟鎹紶杈撴満鍒跺嵈涓嶅悓錛屼竴涓槑鏄懼尯鍒槸鍓創(chuàng)鏉挎搷浣滃嚑涔庢繪槸鐢ㄤ綔瀵圭敤鎴鋒寚瀹氭搷浣滅殑涓嬈℃у簲絳旓紞濡備粠鑿滃崟涓夋嫨Paste鍛戒護(hù)銆傚敖綆DE涔熷彲浠ョ敱鐢ㄦ埛鍚姩錛屼絾瀹冪戶緇彂鎸ヤ綔鐢ㄤ竴鑸笉蹇呯敤鎴瘋繘涓姝ュ共棰勩侱DE鏈変笁縐嶆暟鎹氦鎹㈡柟寮忥細(xì)
銆銆(1) 鍐烽摼錛氭暟鎹氦鎹㈡槸涓嬈℃ф暟鎹紶杈擄紝涓庡壀璐存澘鐩稿悓銆?br />銆銆(2) 娓╅摼錛氬綋鏁版嵁浜ゆ崲鏃舵湇鍔″櫒閫氱煡瀹㈡埛錛岀劧鍚庡鎴峰繀欏昏姹傛柊鐨勬暟鎹?br />銆銆(3) 鐑摼錛氬綋鏁版嵁浜ゆ崲鏃舵湇鍔″櫒鑷姩緇欏鎴峰彂閫佹暟鎹?br />銆銆DDE浜ゆ崲鍙互鍙戠敓鍦ㄥ崟鏈烘垨緗戠粶涓笉鍚岃綆楁満鐨勫簲鐢ㄧ▼搴忎箣闂淬傚紑鍙戣呰繕鍙互瀹氫箟瀹氬埗鐨凞DE鏁版嵁鏍煎紡榪涜搴旂敤紼嬪簭涔嬮棿鐗瑰埆鐩殑IPC錛屽畠浠湁鏇寸揣瀵嗚﹀悎鐨勯氫俊瑕佹眰銆傚ぇ澶氭暟鍩轟簬Windows鐨勫簲鐢ㄧ▼搴忛兘鏀寔DDE銆?br />2.8 瀵硅薄榪炴帴涓庡祵鍏?br />銆銆搴旂敤紼嬪簭鍒╃敤瀵硅薄榪炴帴涓庡祵鍏?OLE)鎶鏈鐞嗗鍚堟枃妗?鐢卞縐嶆暟鎹牸寮忕粍鎴愮殑鏂囨。)錛孫LE鎻愪緵浣挎煇搴旂敤紼嬪簭鏇村鏄撹皟鐢ㄥ叾瀹冨簲鐢ㄧ▼搴忚繘琛屾暟鎹紪杈戠殑鏈嶅姟銆備緥濡傦紝OLE鏀寔鐨勫瓧澶勭悊鍣ㄥ彲浠ュ祵濂楃數(shù)瀛愯〃鏍鹼紝褰撶敤鎴瘋緙栬緫鐢?shù)瀛愯〃鏍兼椂OLE搴撳彲鑷姩鍚姩鐢?shù)瀛愯〃鏍季~栬緫鍣ㄣ傚綋鐢ㄦ埛閫鍑虹數(shù)瀛愯〃鏍肩紪杈戝櫒鏃訛紝璇ヨ〃鏍煎凡鍦ㄥ師濮嬪瓧澶勭悊鍣ㄦ枃妗d腑寰楀埌鏇存柊銆傚湪榪欓噷鐢?shù)瀛愯〃鏍季~栬緫鍣ㄥ彉鎴愪簡瀛楀鐞嗗櫒鐨勬墿灞曪紝鑰屽鏋滀嬌鐢―DE錛岀敤鎴瘋鏄懼紡鍦板惎鍔ㄧ數(shù)瀛愯〃鏍肩紪杈戝櫒銆?br />銆銆鍚孌DE鎶鏈浉鍚岋紝澶у鏁板熀浜嶹indows鐨勫簲鐢ㄧ▼搴忛兘鏀寔OLE鎶鏈?br />2.9 鍔ㄦ佽繛鎺ュ簱
銆銆Win32鍔ㄦ佽繛鎺ュ簱(DLL)涓殑鍏ㄥ眬鏁版嵁鍙互琚皟鐢―LL鐨勬墍鏈夎繘紼嬪叡浜紝榪欏氨鍙堢粰榪涚▼闂撮氫俊寮杈熶簡涓鏉℃柊鐨勯斿緞錛屽綋鐒惰闂椂瑕佹敞鎰忓悓姝ラ棶棰樸?br />銆銆铏界劧鍙互閫氳繃DLL榪涜榪涚▼闂存暟鎹叡浜紝浣嗕粠鏁版嵁瀹夊叏鐨勮搴﹁冭檻錛屾垜浠茍涓嶆彁鍊¤繖縐嶆柟娉曪紝浣跨敤甯︽湁璁塊棶鏉冮檺鎺у埗鐨勫叡浜唴瀛樼殑鏂規(guī)硶鏇村ソ涓浜涖?br />2.10 榪滅▼榪囩▼璋冪敤
銆銆Win32 API鎻愪緵鐨勮繙紼嬭繃紼嬭皟鐢?RPC)浣垮簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢ㄨ繙紼嬭皟鐢ㄥ嚱鏁幫紝榪欎嬌鍦ㄧ綉緇滀笂鐢≧PC榪涜榪涚▼閫氫俊灝卞儚鍑芥暟璋冪敤閭f牱綆鍗曘俁PC鏃㈠彲浠ュ湪鍗曟満涓嶅悓榪涚▼闂翠嬌鐢ㄤ篃鍙互鍦ㄧ綉緇滀腑浣跨敤銆?br />銆銆鐢變簬Win32 API鎻愪緵鐨凴PC鏈嶄粠OSF-DCE(Open Software Foundation Distributed Computing Environment)鏍囧噯銆傛墍浠ラ氳繃Win32 API緙栧啓鐨凴PC搴旂敤紼嬪簭鑳戒笌鍏跺畠鎿嶄綔緋葷粺涓婃敮鎸丏EC鐨凴PC搴旂敤紼嬪簭閫氫俊銆備嬌鐢≧PC寮鍙戣呭彲浠ュ緩绔嬮珮鎬ц兘銆佺揣瀵嗚﹀悎鐨勫垎甯冨紡搴旂敤紼嬪簭銆?br />2.11 NetBios鍑芥暟
銆銆Win32 API鎻愪緵NetBios鍑芥暟鐢ㄤ簬澶勭悊浣庣駭緗戠粶鎺у埗錛岃繖涓昏鏄負(fù)IBM NetBios緋葷粺緙栧啓涓嶹indows鐨勬帴鍙c傞櫎闈為偅浜涙湁鐗規(guī)畩浣庣駭緗戠粶鍔熻兘瑕佹眰鐨勫簲鐢ㄧ▼搴忥紝鍏跺畠搴旂敤紼嬪簭鏈濂戒笉瑕佷嬌鐢∟etBios鍑芥暟鏉ヨ繘琛岃繘紼嬮棿閫氫俊銆?br />2.12 Sockets
銆銆Windows Sockets瑙勮寖鏄互U.C.Berkeley澶уBSD UNIX涓祦琛岀殑Socket鎺ュ彛涓鴻寖渚嬪畾涔夌殑涓濂梂indows涓嬬殑緗戠粶緙栫▼鎺ュ彛銆傞櫎浜咮erkeley Socket鍘熸湁鐨勫簱鍑芥暟浠ュ錛岃繕鎵╁睍浜嗕竴緇勯拡瀵筗indows鐨勫嚱鏁幫紝浣跨▼搴忓憳鍙互鍏呭垎鍒╃敤Windows鐨勬秷鎭満鍒惰繘琛岀紪紼嬨?br />銆銆鐜板湪閫氳繃Sockets瀹炵幇榪涚▼閫氫俊鐨勭綉緇滃簲鐢ㄨ秺鏉ヨ秺澶氾紝榪欎富瑕佺殑鍘熷洜鏄疭ockets鐨勮法騫沖彴鎬ц姣斿叾瀹僆PC鏈哄埗濂藉緱澶氾紝鍙﹀WinSock 2.0涓嶄粎鏀寔TCP/IP鍗忚錛岃屼笖榪樻敮鎸佸叾瀹冨崗璁?濡侷PX)銆係ockets鐨勫敮涓緙虹偣鏄畠鏀寔鐨勬槸搴曞眰閫氫俊鎿嶄綔錛岃繖浣垮緱鍦ㄥ崟鏈虹殑榪涚▼闂磋繘琛岀畝鍗曟暟鎹紶閫掍笉澶柟渚匡紝榪欐椂浣跨敤涓嬮潰灝嗕粙緇嶇殑WM_COPYDATA娑堟伅灝嗘洿鍚堥備簺銆?br />2.13 WM_COPYDATA娑堟伅
銆銆WM_COPYDATA鏄竴縐嶉潪甯稿己澶у嵈椴滀負(fù)浜虹煡鐨勬秷鎭傚綋涓涓簲鐢ㄥ悜鍙︿竴涓簲鐢ㄤ紶閫佹暟鎹椂錛屽彂閫佹柟鍙渶浣跨敤璋冪敤SendMessage鍑芥暟錛屽弬鏁版槸鐩殑紿楀彛鐨勫彞鏌勩佷紶閫掓暟鎹殑璧峰鍦板潃銆乄M_COPYDATA娑堟伅銆傛帴鏀舵柟鍙渶鍍忓鐞嗗叾瀹冩秷鎭偅鏍峰鐞哤M_COPY DATA娑堟伅錛岃繖鏍鋒敹鍙戝弻鏂瑰氨瀹炵幇浜嗘暟鎹叡浜?br />銆銆WM_COPYDATA鏄竴縐嶉潪甯哥畝鍗曠殑鏂規(guī)硶錛屽畠鍦ㄥ簳灞傚疄闄呬笂鏄氳繃鏂囦歡鏄犲皠鏉ュ疄鐜扮殑銆傚畠鐨勭己鐐規(guī)槸鐏墊椿鎬т笉楂橈紝騫朵笖瀹冨彧鑳界敤浜嶹indows騫沖彴鐨勫崟鏈虹幆澧冧笅銆?



闃肯 2010-06-10 09:27 鍙戣〃璇勮
]]>
鍏充簬鐮磋Вphotoshop cs4鐨勮嚜鍔ㄨ仈緗戞嫻嬪簭鍒楀彿闂http://m.shnenglu.com/lapcca/archive/2010/05/26/116353.html闃肯闃肯Wed, 26 May 2010 01:16:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/05/26/116353.htmlhttp://m.shnenglu.com/lapcca/comments/116353.htmlhttp://m.shnenglu.com/lapcca/archive/2010/05/26/116353.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/116353.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/116353.html榪欐杞歡浠ュ墠緇忓父鐢紝鐜板湪鐢╢lash灞呭銆?/p>

璇村疄璇濅拱姝g増鐨勭殑紜篃娌℃湁閭d箞澶氶挶錛屼粖澶╂墠寮濮嬬敤photoshop鐨勬渶鏂扮増鏈?/wbr>

鍦ㄧ綉涓婃悳浜嗗嚑涓簭鍒楀彿錛屽畨瑁呯殑鏃跺欒兘瀹夎浣嗘槸褰撲綘鍐嶆鍚姩杞歡鐨勬椂鍊欙紝浠栧氨宸茬粡鍜宎dob瀹樼綉榪涜浜嗚繛鎺ヨ嚜鍔ㄦ嫻嬶紝鍙兂鑰岀煡錛屽簭鍒楀彿灝辨棤鏁堜簡銆?/p>

鎯崇敤鏈鏂扮増鎬庝箞鍔烇紝鐮磋В鍚э紝鍦ㄧ綉涓婃壘鍒頒簡濂藉縐嶆柟娉曪紝浠涔堝叧闂槻鐏鐨刢s4鐨勮仈緗戯紝涓嶈繃榪欎釜鏂規(guī)硶娌℃湁鎴愬姛錛屽彲鑳芥槸鎴戠殑鏂規(guī)硶涓嶅銆備笉榪囦笅闈㈢殑鏂規(guī)硶寰堝疄鐢ㄣ?/wbr>

鍥犱負(fù)瀹樻柟鐨勮蔣浠舵潈濞佹ф瘮杈冮珮鎵浠ヨ瀹夎瀹樻柟鐨勪笉榪囪秴澶?00澶氬厗銆傜牬瑙e惂銆備篃鏄熺敤鍒漢鐨勬柟娉曘?/wbr>


鐮磋В鏂規(guī)硶聽

綆$敤. 鏈漢浜茶韓璇曡繃鐨?br />浠ヤ笅涓烘憳鎶勫唴瀹?

搴忓垪鍙鳳細(xì)
1330-1082-3503-2270-3738-6738
1330-1776-8671-6289-7706-2916
1330-1567-6599-8775-4155-3745

緇濆鑳界敤錛侊紒錛侊紒

絎竴姝ワ細(xì)涓嬭澆瀹岃蔣浠訛紝瑕佸厛瑙e帇鍑烘潵銆?/p>

絎簩姝ワ細(xì)瀹夎錛屽埌浜嗚緭鍏ユ敞鍐岀爜鐣岄潰鏃訛紝閫夎瘯鐢?0澶╃殑閫夐」錛屼笉瑕佽緭鍏ユ敞鍐岀爜銆傚畨瑁呯晫闈㈡槸鍏ㄤ腑鏂囩殑錛屽畨瑁呭畬杞歡鏄嫳鏂囩殑銆?/p>

絎笁姝ワ細(xì)鎵撳紑杞歡錛屼細(xì)璺沖嚭杈撳叆娉ㄥ唽鐮佺晫闈紝浣跨敤涓婇潰鐨勬敞鍐岀爜錛岃緭鍏ワ紝鐐逛笅涓姝ワ紝榪涜蔣浠躲?/p>

絎洓姝ワ細(xì)鍏堥鍑鴻蔣浠訛紝鎵懼埌C:\WINDOWS\system32\drivers\etc閲岄潰鐨刪osts鏂囦歡,鍘繪帀鍏跺彧璇葷殑灞炴э紝鍙屽嚮鎵撳紑錛岄夌敤璁頒簨鏈墦寮錛?/p>

杈撳叆127.0.0.1 activate.adobe.com錛堜腑闂存湁涓┖鏍鹼級(jí)錛屼繚瀛橈紝閫鍑? 灞忚斀adobe嬋媧繪湇鍔″櫒銆?br />榪樹笉鏀懼績錛屽皢涓嬮潰鍏ㄩ儴緗戝潃娣誨姞榪涘幓.

灝嗕笅鍒楃綉鍧鍔犲叆HOSt
127.0.0.1 activate.adobe.com
127.0.0.1 practivate.adobe.com
127.0.0.1 ereg.adobe.com
127.0.0.1 activate.wip3.adobe.com
127.0.0.1 wip3.adobe.com
127.0.0.1 3dns-3.adobe.com
127.0.0.1 3dns-2.adobe.com
127.0.0.1 adobe-dns.adobe.com
127.0.0.1 adobe-dns-2.adobe.com
127.0.0.1 adobe-dns-3.adobe.com
127.0.0.1 ereg.wip3.adobe.com
127.0.0.1 activate-sea.adobe.com
127.0.0.1 wwis-dubc1-vip60.adobe.com
127.0.0.1 activate-sjc0.adobe.com
絎簲姝ワ細(xì)鍐嶆墦寮杞歡錛宱k銆傦紙鑻ヤ笉榪涜絎洓姝ワ紝鍐嶅惎鍔ㄨ蔣浠舵椂錛屽張浼?xì)锜╁嚭婵媧葷晫闈級(jí)銆?/p>

榪欎釜涓昏鏄負(fù)浜嗗睆钄借蔣浠朵笌瀹樻柟鏈嶅姟鍣ㄨ繛鎺ョ殑鍟婏紝濡傛灉杞歡鎯寵繛鎺ョ殑璇濆氨璁╁畠涓嶈榪炴帴瀹樻柟浜嗭紝榪炴帴鏈満灝卞彲浠ヤ簡銆傞伩鍏嶅啀嬈″嚭鐜版縺媧葷晫闈㈢殑鍟娿?/p>

鍐嶄緷嬈℃墦寮 紿楀彛->鎵╁睍鍔熻兘->榪炴帴->灝忎笁瑙掑艦 榪炴帴鍙?qiáng)鑴辨満閫夐」璁劇疆涓嶈繛鎺ョ綉緇?/p>

闃肯 2010-05-26 09:16 鍙戣〃璇勮
]]>
VC++鐨刄nicode緙栫▼[杞琞http://m.shnenglu.com/lapcca/archive/2010/05/06/114684.html闃肯闃肯Thu, 06 May 2010 09:30:00 GMThttp://m.shnenglu.com/lapcca/archive/2010/05/06/114684.htmlhttp://m.shnenglu.com/lapcca/comments/114684.htmlhttp://m.shnenglu.com/lapcca/archive/2010/05/06/114684.html#Feedback0http://m.shnenglu.com/lapcca/comments/commentRss/114684.htmlhttp://m.shnenglu.com/lapcca/services/trackbacks/114684.html
浣滆咃細(xì)闊╄鏃?

涓嬭澆婧愪唬鐮?/a>

涓銆佷粈涔堟槸Unicode

銆銆鍏堜粠ASCII璇磋搗錛孉SCII鏄敤鏉ヨ〃紺鴻嫳鏂囧瓧絎︾殑涓縐嶇紪鐮佽鑼冦傛瘡涓狝SCII瀛楃鍗犵敤1涓瓧鑺傦紝鍥犳錛孉SCII緙栫爜鍙互琛ㄧず鐨勬渶澶у瓧絎︽暟鏄?55錛?0H鈥擣FH錛夈傚叾瀹烇紝鑻辨枃瀛楃騫舵病鏈夐偅涔堝錛屼竴鑸彧鐢ㄥ墠128涓紙00H鈥?FH錛屾渶楂樹綅涓?錛夛紝鍏朵腑鍖呮嫭浜嗘帶鍒跺瓧絎︺佹暟瀛椼佸ぇ灝忓啓瀛楁瘝鍜屽叾瀹冧竴浜涚鍙楓傝屾渶楂樹綅涓?鐨勫彟128涓瓧絎︼紙80H鈥擣FH錛夎縐頒負(fù)鈥滄墿灞旳SCII鈥濓紝涓鑸敤鏉ュ瓨鏀捐嫳鏂囩殑鍒惰〃絎︺侀儴鍒嗛煶鏍囧瓧絎︾瓑絳夌殑涓浜涘叾瀹冪鍙楓?br />銆銆榪欑瀛楃緙栫爜瑙勫垯鏄劇劧鐢ㄦ潵澶勭悊鑻辨枃娌℃湁浠涔堥棶棰樸備絾鏄潰瀵逛腑鏂囥侀樋鎷変集鏂囩瓑澶嶆潅鐨勬枃瀛楋紝255涓瓧絎︽樉鐒朵笉澶熺敤銆?br />浜庢槸錛屽悇涓浗瀹剁悍綰峰埗瀹氫簡鑷繁鐨勬枃瀛楃紪鐮佽鑼冿紝鍏朵腑涓枃鐨勬枃瀛楃紪鐮佽鑼冨彨鍋氣淕B2312鈥?0鈥濓紝瀹冩槸鍜孉SCII鍏煎鐨勪竴縐嶇紪鐮佽鑼冿紝鍏跺疄灝辨槸鍒╃敤鎵╁睍ASCII娌℃湁鐪熸鏍囧噯鍖栬繖涓鐐癸紝鎶婁竴涓腑鏂囧瓧絎︾敤涓や釜鎵╁睍ASCII瀛楃鏉ヨ〃紺猴紝浠ュ尯鍒咥SCII鐮侀儴鍒嗐?br />銆銆浣嗘槸榪欎釜鏂規(guī)硶鏈夐棶棰橈紝鏈澶х殑闂灝辨槸涓枃鐨勬枃瀛楃紪鐮佸拰鎵╁睍ASCII鐮佹湁閲嶅彔銆傝屽緢澶氳蔣浠跺埄鐢ㄦ墿灞旳SCII鐮佺殑鑻辨枃鍒惰〃絎︽潵鐢昏〃鏍鹼紝榪欐牱鐨勮蔣浠剁敤鍒頒腑鏂囩郴緇熶腑錛岃繖浜涜〃鏍煎氨浼?xì)琚璁や綔涓枃瀛椊W︼紝鍑虹幇涔辯爜銆?br />銆銆鍙﹀錛岀敱浜庡悇鍥藉拰鍚勫湴鍖洪兘鏈夎嚜宸辯殑鏂囧瓧緙栫爜瑙勫垯錛屽畠浠簰鐩稿啿紿侊紝榪欑粰鍚勫浗鍜屽悇鍦板尯浜ゆ崲淇℃伅甯︽潵浜嗗緢澶х殑楹葷儲(chǔ)銆?br />瑕佺湡姝hВ鍐寵繖涓棶棰橈紝涓嶈兘浠庢墿灞旳SCII鐨勮搴﹀叆鎵嬶紝鑰屽繀欏繪湁涓涓叏鏂扮殑緙栫爜緋葷粺錛岃繖涓郴緇熻鍙互灝嗕腑鏂囥佹硶鏂囥佸痙鏂団︹︾瓑絳夋墍鏈夌殑鏂囧瓧緇熶竴璧鋒潵鑰冭檻錛屼負(fù)姣忎竴涓枃瀛楅兘鍒嗛厤涓涓崟鐙殑緙栫爜銆?/p>

浜庢槸錛孶nicode璇炵敓浜嗐?/p>

銆銆Unicode涔熸槸涓縐嶅瓧絎︾紪鐮佹柟娉曪紝瀹冨崰鐢ㄤ袱涓瓧鑺傦紙0000H鈥擣FFFH錛?瀹圭撼65536涓瓧絎︼紝榪欏畬鍏ㄥ彲浠ュ綰沖叏涓栫晫鎵鏈夎璦鏂囧瓧鐨勭紪鐮併?br />鍦║nicode閲岋紝鎵鏈夌殑瀛楃琚竴瑙嗗悓浠侊紝姹夊瓧涓嶅啀浣跨敤鈥滀袱涓墿灞旳SCII鈥濓紝鑰屾槸浣跨敤鈥?涓猆nicode鈥濓紝涔熷氨鏄錛屾墍鏈夌殑鏂囧瓧閮芥寜涓涓瓧絎︽潵澶勭悊錛屽畠浠兘鏈変竴涓敮涓鐨刄nicode鐮併?/p>

浜屻佷嬌鐢║nicode緙栫爜鐨勫ソ澶?/p>

銆銆浣跨敤Unicode緙栫爜鍙互浣挎?zhèn)ㄧ殑宸ソE嬪悓鏃舵敮鎸佸縐嶈璦錛屼嬌鎮(zhèn)ㄧ殑宸ョ▼鍥介檯鍖栥?br />銆銆鍙﹀錛學(xué)indows NT鏄嬌鐢║nicode榪涜寮鍙戠殑錛屾暣涓郴緇熼兘鏄熀浜嶶nicode鐨勩傚鏋滆皟鐢ㄤ竴涓狝PI鍑芥暟騫剁粰瀹冧紶閫掍竴涓狝NSI錛圓SCII瀛楃闆嗕互鍙?qiáng)鐢辨娲剧敓迤堝吋瀹圭殑瀛椊W﹂泦錛屽錛欸B2312錛岄氬父縐頒負(fù)ANSI瀛楃闆嗭級(jí)瀛楃涓詫紝閭d箞緋葷粺棣栧厛瑕佸皢瀛楃涓茶漿鎹㈡垚Unicode錛岀劧鍚庡皢Unicode瀛楃涓蹭紶閫掔粰鎿嶄綔緋葷粺銆傚鏋滃笇鏈涘嚱鏁拌繑鍥濧NSI瀛楃涓詫紝緋葷粺灝變細(xì)棣栧厛灝哢nicode瀛楃涓茶漿鎹㈡垚ANSI瀛楃涓詫紝鐒跺悗灝嗙粨鏋滆繑鍥炵粰鎮(zhèn)ㄧ殑搴旂敤紼嬪簭銆傝繘琛岃繖浜涘瓧絎︿覆鐨勮漿鎹㈤渶瑕佸崰鐢ㄧ郴緇熺殑鏃墮棿鍜屽唴瀛樸傚鏋滅敤Unicode鏉ュ紑鍙戝簲鐢ㄧ▼搴忥紝灝辮兘澶熶嬌鎮(zhèn)ㄧ殑搴旂敤紼嬪簭鏇村姞鏈夋晥鍦拌繍琛屻?br />
涓嬮潰渚嬩婦鍑犱釜瀛楃鐨勭紪鐮佷互綆鍗曟紨紺篈NSI鍜孶nicode鐨勫尯鍒細(xì)

瀛楃聽A聽N聽鍜?/td>
ANSI鐮?/td>聽41H聽4eH聽cdbaH
Unicode鐮?/td>聽0041H聽004eH聽548cH

涓夈佷嬌鐢–++榪涜Unicode緙栫▼

銆銆瀵瑰瀛楃鐨勬敮鎸佸叾瀹炴槸ANSI C鏍囧噯鐨勪竴閮ㄥ垎錛岀敤浠ユ敮鎸佸瀛楄妭琛ㄧず涓涓瓧絎︺傚瀛楃鍜孶nicode騫朵笉瀹屽叏絳夊悓錛孶nicode鍙槸瀹藉瓧絎︾殑涓縐嶇紪鐮佹柟寮忋?/p>

1銆佸瀛楃鐨勫畾涔?/p>

銆銆鍦ˋNSI涓紝涓涓瓧絎︼紙char錛夌殑闀垮害涓轟竴涓瓧鑺傦紙Byte錛夈備嬌鐢║nicode鏃訛紝涓涓瓧絎﹀崰鎹竴涓瓧錛孋++鍦╳char.h澶存枃浠朵腑瀹氫箟浜嗘渶鍩烘湰鐨勫瀛楃綾誨瀷wchar_t錛?/p>

typedef unsigned short wchar_t;

浠庤繖閲屾垜浠彲浠ユ竻妤氬湴鐪嬪埌錛屾墍璋撶殑瀹藉瓧絎﹀氨鏄棤絎﹀彿鐭暣鏁般?/p>

2銆佸父閲忓瀛楃涓?/p>

銆銆瀵笴++紼嬪簭鍛樿岃█錛屾瀯閫犲瓧絎︿覆甯擱噺鏄竴欏圭粡甯告х殑宸ヤ綔銆傞偅涔堬紝濡備綍鏋勯犲瀛楃瀛楃涓插父閲忓憿錛熷緢綆鍗曪紝鍙鍦ㄥ瓧絎︿覆甯擱噺鍓嶅姞涓婁竴涓ぇ鍐欑殑L灝卞彲浠ヤ簡錛屾瘮濡傦細(xì)

wchar_t *str1=L" Hello";

榪欎釜L闈炲父閲嶈錛屽彧鏈夊甫涓婂畠錛岀紪璇戝櫒鎵嶇煡閬撲綘瑕佸皢瀛楃涓插瓨鎴愪竴涓瓧絎︿竴涓瓧銆傝繕瑕佹敞鎰忥紝鍦↙鍜屽瓧絎︿覆涔嬮棿涓嶈兘鏈夌┖鏍箋?/p>

3銆佸瀛楃涓插簱鍑芥暟

涓轟簡鎿嶄綔瀹藉瓧絎︿覆錛孋++涓撻棬瀹氫箟浜嗕竴濂楀嚱鏁幫紝姣斿姹傚瀛楃涓查暱搴︾殑鍑芥暟鏄?/p>

size_t __cdel wchlen(const wchar_t*);

銆銆涓轟粈涔堣涓撻棬瀹氫箟榪欎簺鍑芥暟鍛紵鏈鏍規(guī)湰鐨勫師鍥犳槸錛孉NSI涓嬬殑瀛楃涓查兘鏄互鈥橽0鈥欐潵鏍囪瘑瀛楃涓插熬鐨勶紙Unicode瀛楃涓蹭互鈥淺0\0鈥濈粨鏉燂級(jí)錛岃澶氬瓧絎︿覆鍑芥暟鐨勬紜搷浣滃潎鏄互姝や負(fù)鍩虹榪涜銆傝屾垜浠煡閬擄紝鍦ㄥ瀛楃鐨勬儏鍐典笅錛屼竴涓瓧絎﹀湪鍐呭瓨涓鍗犳嵁涓涓瓧鐨勭┖闂達(dá)紝榪欏氨浼?xì)鋴涉搷浣淎NSI瀛楃鐨勫瓧絎︿覆鍑芥暟鏃犳硶姝g‘鎿嶄綔銆備互鈥滺ello鈥濆瓧絎︿覆涓轟緥錛屽湪瀹藉瓧絎︿笅錛屽畠鐨勪簲涓瓧絎︽槸錛?br />0x0048 0x0065 0x006c 0x006c 0x006f
鍦ㄥ唴瀛樹腑錛屽疄闄呯殑鎺掑垪鏄細(xì)

48 00 65 00 6c 00 6c 00 6f 00

銆銆浜庢槸錛孉NSI瀛楃涓插嚱鏁幫紝濡俿trlen錛屽湪紕板埌絎竴涓?8鍚庣殑00鏃訛紝灝變細(xì)璁や負(fù)瀛楃涓插埌灝句簡錛岀敤strlen瀵瑰瀛楃涓叉眰闀垮害鐨勭粨鏋滃氨姘歌繙浼?xì)鏄?錛?/p>

4銆佺敤瀹忓疄鐜板ANSI鍜孶nicode閫氱敤鐨勭紪紼?/p>

銆銆鍙錛孋++鏈変竴鏁村鐨勬暟鎹被鍨嬪拰鍑芥暟瀹炵幇Unicode緙栫▼錛屼篃灝辨槸璇達(dá)紝鎮(zhèn)ㄥ畬鍏ㄥ彲浠ヤ嬌鐢–++瀹炵幇Unicode緙栫▼銆?br />濡傛灉鎴戜滑鎯寵鎴戜滑鐨勭▼搴忔湁涓や釜鐗堟湰錛欰NSI鐗堟湰鍜孶nicode鐗堟湰銆傚綋鐒?dòng)灱尵~栧啓涓ゅ浠g爜鍒嗗埆瀹炵幇ANSI鐗堟湰鍜孶nicode鐗堟湰瀹屽叏鏄寰楅氱殑銆備絾鏄紝閽堝ANSI瀛楃鍜孶nicode瀛楃緇存姢涓ゅ浠g爜鏄潪甯擱夯鐑?chǔ)鐨勪簨鎯呫備負(fù)浜嗗噺杞葷紪紼嬬殑璐熸媴錛孋++瀹氫箟浜嗕竴緋誨垪鐨勫畯錛屽府鍔╂?zhèn)ㄥ疄鐜板ANSI鍜孶nicode鐨勯氱敤緙栫▼銆?br />銆銆C++瀹忓疄鐜癆NSI鍜孶nicode鐨勯氱敤緙栫▼鐨勬湰璐ㄦ槸鏍規(guī)嵁鈥漘UNICODE鈥濓紙娉ㄦ剰錛屾湁涓嬪垝綰匡級(jí)瀹氫箟涓庡惁錛岃繖浜涘畯灞曞紑涓篈NSI鎴朥nicode瀛楃錛堝瓧絎︿覆錛夈?/p>

濡備笅鏄痶char.h澶存枃浠朵腑閮ㄥ垎浠g爜鎽樻妱錛?

#ifdef  _UNICODE
typedef wchar_t     TCHAR;
#define __T(x)      L##x
#define _T(x)       __T(x)
#else
#define __T(x)      x
typedef char            TCHAR;
#endif 
銆銆鍙錛岃繖浜涘畯鏍規(guī)嵁鈥漘UNICODE鈥?瀹氫箟涓庡惁錛屽垎鍒睍寮涓篈NSI鎴朥nicode瀛楃銆?tchar.h澶存枃浠朵腑瀹氫箟鐨勫畯鍙互鍒嗕負(fù)涓ょ被錛?

A銆佸疄鐜板瓧絎﹀拰甯擱噺瀛楃涓插畾涔夌殑瀹忔垜浠彧鍒楀嚭涓や釜鏈甯哥敤鐨勫畯錛?

瀹?鏈畾涔塤UNICODE(ANSI瀛楃) 瀹氫箟浜哶UNICODE(Unicode瀛楃)
TCHAR聽char聽wchar_t
_T(x)聽x聽L##x

娉ㄦ剰錛?br />銆銆鈥?#鈥濇槸ANSI C鏍囧噯鐨勯澶勭悊璇硶錛屽畠鍙仛鈥滅矘璐寸鍙封濓紝琛ㄧず灝嗗墠闈㈢殑L娣誨姞鍒板畯鍙傛暟涓娿備篃灝辨槸璇達(dá)紝濡傛灉鎴戜滑鍐檁T(鈥淗ello鈥?錛屽睍寮鍚庡嵆涓篖鈥淗ello鈥?/p>

B銆佸疄鐜板瓧絎︿覆鍑芥暟璋冪敤鐨勫畯

C++涓哄瓧絎︿覆鍑芥暟涔熷畾涔変簡涓緋誨垪瀹忥紝鍚屾牱錛屾垜浠彧渚嬩婦鍑犱釜甯哥敤鐨勫畯錛?/p>
瀹?鏈畾涔塤UNICODE(ANSI瀛楃) 瀹氫箟浜哶UNICODE(Unicode瀛楃)
_tcschr聽strchr聽wcschr
_tcscmp聽strcmp聽wcscmp
_tcslen聽strlen聽wcslen

鍥涖佷嬌鐢╓in32 API榪涜Unicode緙栫▼

Win32 API涓畾涔変簡涓浜涜嚜宸辯殑瀛楃鏁版嵁綾誨瀷銆傝繖浜涙暟鎹被鍨嬬殑瀹氫箟鍦╳innt.h澶存枃浠朵腑銆備緥濡傦細(xì)

typedef char CHAR; 
typedef unsigned short WCHAR;    // wc,   16-bit UNICODE character 
typedef CONST CHAR *LPCSTR, *PCSTR; 
Win32 API鍦╳innt.h澶存枃浠朵腑瀹氫箟浜嗕竴浜涘疄鐜板瓧絎﹀拰甯擱噺瀛楃涓茬殑瀹忚繘琛孉NSI/Unicode閫氱敤緙栫▼銆傚悓鏍鳳紝鍙緥涓懼嚑涓渶甯哥敤鐨勶細(xì)
#ifdef  UNICODE 
typedef WCHAR TCHAR, *PTCHAR;
typedef LPWSTR LPTCH, PTCH;
typedef LPWSTR PTSTR, LPTSTR;
typedef LPCWSTR LPCTSTR;
#define __TEXT(quote) L##quote      // r_winnt
#else   /* UNICODE */               // r_winnt
typedef char TCHAR, *PTCHAR;
typedef LPSTR LPTCH, PTCH;
typedef LPSTR PTSTR, LPTSTR;
typedef LPCSTR LPCTSTR;
#define __TEXT(quote) quote         // r_winnt
#endif /* UNICODE */                // r_winnt
銆銆浠庝互涓婂ご鏂囦歡鍙互鐪嬪嚭錛寃innt.h鏍規(guī)嵁鏄惁瀹氫箟浜哢NICODE錛堟病鏈変笅鍒掔嚎錛夛紝榪涜鏉′歡緙栬瘧銆?br />銆銆 Win32 API涔熷畾涔変簡涓濂楀瓧絎︿覆鍑芥暟錛屽畠浠牴鎹槸鍚﹀畾涔変簡鈥淯NICODE鈥濆垎鍒睍寮涓篈NSI鍜孶nicode瀛楃涓插嚱鏁般傚錛歭strlen銆侫PI鐨勫瓧絎︿覆鎿嶄綔鍑芥暟鍜孋++鐨勬搷浣滃嚱鏁板彲浠ュ疄鐜扮浉鍚岀殑鍔熻兘錛屾墍浠ワ紝濡傛灉闇瑕佺殑璇濓紝寤鴻鎮(zhèn)ㄥ敖鍙兘浣跨敤C++鐨勫瓧絎︿覆鍑芥暟錛屾病蹇呰鍘昏姳澶綺懼姏鍐嶅幓瀛︿範(fàn)API鐨勮繖浜涗笢瑗褲?br />銆銆涔熻鎮(zhèn)ㄤ粠鏉ユ病鏈夋敞鎰忓埌錛學(xué)in32 API瀹為檯涓婃湁涓や釜鐗堟湰銆備竴涓増鏈帴鍙桵BCS瀛楃涓詫紝鍙︿竴涓帴鍙桿nicode瀛楃涓層備緥濡傦細(xì)鍏跺疄鏍規(guī)湰娌℃湁SetWindowText()榪欎釜API鍑芥暟錛岀浉鍙嶏紝鏈塖etWindowTextA()鍜孲etWindowTextW()銆傚悗緙A琛ㄦ槑榪欐槸MBCS鍑芥暟錛屽悗緙W琛ㄧず榪欐槸Unicode鐗堟湰鐨勫嚱鏁般傝繖浜汚PI鍑芥暟鐨勫ご鏂囦歡鍦╳inuser.h涓0鏄庯紝涓嬮潰渚嬩婦winuser.h涓殑SetWindowText()鍑芥暟鐨勫0鏄庨儴鍒嗭細(xì)
#ifdef UNICODE
#define SetWindowText  SetWindowTextW
#else
#define SetWindowText  SetWindowTextA
#endif // !UNICODE
銆銆鍙錛孉PI鍑芥暟鏍規(guī)嵁瀹氫箟UNICODE涓庡惁鍐沖畾鎸囧悜Unicode鐗堟湰榪樻槸MBCS鐗堟湰銆?br />銆銆緇嗗績鐨勮鑰呭彲鑳藉凡緇忔敞鎰忓埌浜哢NICODE鍜宊UNICODE鐨勫尯鍒紝鍓嶈呮病鏈変笅鍒掔嚎錛屼笓闂ㄧ敤浜嶹indows澶存枃浠訛紱鍚庤呮湁涓涓墠緙涓嬪垝綰匡紝涓撻棬鐢ㄤ簬C榪愯鏃跺ご鏂囦歡銆傛崲鍙ヨ瘽璇達(dá)紝涔熷氨鏄湪ANSI C++璇█閲岄潰鏍規(guī)嵁_UNICODE錛堟湁涓嬪垝綰匡級(jí)瀹氫箟涓庡惁錛屽悇瀹忓垎鍒睍寮涓篣nicode鎴朅NSI瀛楃錛屽湪Windows閲岄潰鏍規(guī)嵁UNICODE錛堟棤涓嬪垝綰匡級(jí)瀹氫箟涓庡惁錛屽悇瀹忓垎鍒睍寮涓篣nicode鎴朅NSI瀛楃銆?br />銆銆鍦ㄥ悗闈㈡垜浠皢浼?xì)鐪嬪垘图屽疄闄呬娇鐢ㄤ腑鎴戜滑涓嶅姞涓ユ牸鍖哄垎锛屽悓鏃跺畾涔塤UNICODE鍜孶NICODE錛屼互瀹炵幇UNICODE鐗堟湰緙栫▼銆?

浜斻乂C++6.0涓紪鍐橴nicode緙栫爜鐨勫簲鐢ㄧ▼搴?

銆銆VC++ 6.0鏀寔Unicode緙栫▼錛屼絾榛樿鐨勬槸ANSI錛屾墍浠ュ紑鍙戜漢鍛樺彧闇瑕佺◢寰敼鍙樹竴涓嬬紪鍐欎唬鐮佺殑涔?fàn)鎯究鍙互杞绘潉〖栧啓鏀寔UNICODE鐨勫簲鐢ㄧ▼搴忋?br />銆銆浣跨敤VC++ 6.0榪涜Unicode緙栫▼涓昏鍋氫互涓嬪嚑欏瑰伐浣滐細(xì)

1銆佷負(fù)宸ョ▼娣誨姞UNICODE鍜宊UNICODE棰勫鐞嗛夐」銆?

銆銆鍏蜂綋姝ラ錛氭墦寮[宸ョ▼]->[璁劇疆鈥瀵硅瘽妗嗭紝濡傚浘1鎵紺猴紝鍦–/C++鏍囩瀵硅瘽妗嗙殑鈥滈澶勭悊紼嬪簭瀹氫箟鈥濅腑鍘婚櫎_MBCS錛屽姞涓奯UNICODE,UNICODE銆傦紙娉ㄦ剰涓棿鐢ㄩ楀彿闅斿紑錛夋敼鍔ㄥ悗濡傚浘2錛?/p>


鍥句竴


鍥句簩

銆銆鍦ㄦ病鏈夊畾涔塙NICODE鍜宊UNICODE鏃訛紝鎵鏈夊嚱鏁板拰綾誨瀷閮介粯璁や嬌鐢ˋNSI鐨勭増鏈紱鍦ㄥ畾涔変簡UNICODE鍜宊UNICODE涔嬪悗錛屾墍鏈夌殑MFC綾誨拰W(xué)indows API閮藉彉鎴愪簡瀹藉瓧鑺傜増鏈簡銆?br />
2銆佽緗▼搴忓叆鍙g偣

銆銆鍥犱負(fù)MFC搴旂敤紼嬪簭鏈夐拡瀵筓nicode涓撶敤鐨勭▼搴忓叆鍙g偣錛屾垜浠璁劇疆entry point銆傚惁鍒欏氨浼?xì)鍑虹幇杩炴帴閿欒銆?br />銆銆璁劇疆entry point鐨勬柟娉曟槸錛氭墦寮[宸ョ▼]->[璁劇疆鈥瀵硅瘽妗嗭紝鍦↙ink欏電殑Output綾誨埆鐨凟ntry Point閲屽~涓妛WinMainCRTStartup銆?/p>


鍥句笁

3銆佷嬌鐢ˋNSI/Unicode閫氱敤鏁版嵁綾誨瀷

銆銆寰蔣鎻愪緵浜嗕竴浜汚NSI鍜孶nicode鍏煎鐨勯氱敤鏁版嵁綾誨瀷錛屾垜浠渶甯哥敤鐨勬暟鎹被鍨嬫湁_T 錛孴CHAR錛孡PTSTR,LPCTSTR銆?br />銆銆欏轟究璇翠竴涓嬶紝LPCTSTR鍜宑onst TCHAR*鏄畬鍏ㄧ瓑鍚岀殑銆傚叾涓璍琛ㄧずlong鎸囬拡錛岃繖鏄負(fù)浜嗗吋瀹筗indows 3.1絳?6浣嶆搷浣滅郴緇熼仐鐣欎笅鏉ョ殑錛屽湪Win32 涓互鍙?qiáng)鍏跺畠鐨?2浣嶆搷浣滅郴緇熶腑錛宭ong鎸囬拡鍜宯ear鎸囬拡鍙?qiáng)far淇グ絎﹂兘鏄負(fù)浜嗗吋瀹圭殑浣滅敤錛屾病鏈夊疄闄呮剰涔夈侾錛坧ointer錛夎〃紺鴻繖鏄竴涓寚閽堬紱C錛坈onst錛夎〃紺烘槸涓涓父閲忥紱T(_T瀹?琛ㄧず鍏煎ANSI鍜孶nicode錛孲TR錛坰tring錛夎〃紺鴻繖涓彉閲忔槸涓涓瓧絎︿覆銆傜患涓婂彲浠ョ湅鍑猴紝LPCTSTR琛ㄧず涓涓寚鍚戝父鍥哄畾鍦板潃鐨勫彲浠ユ牴鎹竴浜涘畯瀹氫箟鏀瑰彉璇箟鐨勫瓧絎︿覆銆傛瘮濡傦細(xì)

TCHAR* szText=_T(鈥淗ello!鈥?;
TCHAR szText[]=_T(鈥淚 Love You鈥?;
LPCTSTR lpszText=_T(鈥滃ぇ瀹跺ソ錛佲?;
浣跨敤鍑芥暟涓殑鍙傛暟鏈濂戒篃瑕佹湁鍙樺寲錛屾瘮濡傦細(xì)
MessageBox(_T(鈥滀綘濂解?);

銆銆鍏跺疄錛屽湪涓婇潰鐨勮鍙ヤ腑錛屽嵆浣挎?zhèn)ㄤ笉鍔燺T瀹忥紝MessageBox鍑芥暟涔熶細(xì)鑷姩鎶娾滀綘濂解濆瓧絎︿覆榪涜寮哄埗杞崲銆備絾鎴戣繕鏄帹鑽愭?zhèn)ㄤ娇鐢╛T瀹忥紝浠ヨ〃紺烘?zhèn)ㄦ湁Unicode緙栫爜鎰忚瘑銆?

4銆佷慨鏀瑰瓧絎︿覆榪愮畻闂

銆銆涓浜涘瓧絎︿覆鎿嶄綔鍑芥暟闇瑕佽幏鍙栧瓧絎︿覆鐨勫瓧絎︽暟(sizeof(szBuffer)/sizeof(TCHAR))錛岃屽彟涓浜涘嚱鏁板彲鑳介渶瑕佽幏鍙栧瓧絎︿覆鐨勫瓧鑺傛暟sizeof(szBuffer)銆傛?zhèn)ㄥ簲璇ユ敞鎰忚闂迤堜粩缁嗗垎鏋愬瓧绗︿覆鎿嶄綔鍑芥晭图屼互纭畾鑳藉寰楀埌姝<嫯鐨劸l撴灉銆?br />ANSI鎿嶄綔鍑芥暟浠tr寮澶達(dá)紝濡俿trcpy()錛宻trcat()錛宻trlen()錛?br />Unicode鎿嶄綔鍑芥暟浠cs寮澶達(dá)紝濡倃cscpy錛寃cscpy()錛寃cslen()錛?br />ANSI/Unicode鎿嶄綔鍑芥暟浠tcs寮澶?_tcscpy(C榪愯鏈熷簱)錛?br />ANSI/Unicode鎿嶄綔鍑芥暟浠str寮澶?lstrcpy(Windows鍑芥暟)錛?br />鑰冭檻ANSI鍜孶nicode鐨勫吋瀹癸紝鎴戜滑闇瑕佷嬌鐢ㄤ互_tcs寮澶存垨lstr寮澶寸殑閫氱敤瀛楃涓叉搷浣滃嚱鏁般?/p>

鍏佷婦涓猆nicode緙栫▼鐨勪緥瀛?/p>

絎竴姝ワ細(xì)
銆銆鎵撳紑VC++6.0錛屾柊寤哄熀浜庡璇濇鐨勫伐紼婾nicode錛屼富瀵硅瘽妗咺DD_UNICODE_DIALOG涓姞鍏ヤ竴涓寜閽帶浠訛紝鍙屽嚮璇ユ帶浠跺茍娣誨姞璇ユ帶浠剁殑鍝嶅簲鍑芥暟錛?/p>

void CUnicodeDlg::OnButton1() 
{
	TCHAR* str1=_T("ANSI鍜孶NICODE緙栫爜璇曢獙");
	m_disp=str1;
	UpdateData(FALSE);
}
銆銆娣誨姞闈欐佹枃鏈IDC_DISP錛屼嬌鐢–lassWizard緇欒鎺т歡娣誨姞CString綾誨瀷鍙橀噺m_disp銆備嬌鐢ㄩ粯璁NSI緙栫爜鐜緙栬瘧璇ュ伐紼嬶紝鐢熸垚Unicode.exe銆?

絎簩姝ワ細(xì)
銆銆鎵撳紑鈥滄帶鍒墮潰鏉庫濓紝鍗曞嚮鈥滄棩鏈熴佹椂闂淬佽璦鍜屽尯鍩熻緗濋夐」錛屽湪鈥滄棩鏈熴佹椂闂淬佽璦鍜屽尯鍩熻緗濈獥鍙d腑緇х畫鍗曞嚮鈥滃尯鍩熷拰璇█閫夐」鈥濋夐」錛屽脊鍑衡滃尯鍩熷拰璇█閫夐」鈥濆璇濇銆傚湪璇ュ璇濇涓紝鍗曞嚮鈥滈珮綰р濇爣絳撅紝灝嗏滈潪Unicode鐨勭▼搴忕殑璇█鈥濋夐」鏀逛負(fù)鈥滄棩璇濓紝鍗曞嚮鈥滃簲鐢ㄢ濇寜閽紝濡傚浘鍥涳細(xì)


鍥懼洓

寮瑰嚭鐨勫璇濇鍗曞嚮鈥滄槸鈥濓紝閲嶆柊鍚姩璁$畻鏈轟嬌璁劇疆鐢熸晥銆?br />榪愯Unicode.exe紼嬪簭騫跺崟鍑燴淏utton1鈥濇寜閽紝鐪嬶紝闈欐佹枃鏈鍑虹幇浜嗕貢鐮併?/p>

絎笁姝ワ細(xì)
銆銆鏀逛負(fù)Unicode緙栫爜鐜緙栬瘧璇ュ伐紼嬶紝鐢熸垚Unicode.exe銆傚啀嬈¤繍琛孶nicode.exe紼嬪簭騫跺崟鍑燴淏utton1鈥濇寜閽傜湅鍒癠nicode緙栫爜鐨勪紭鍔夸簡鍚с?/p>

灝辮榪欎簺鍚э紝紲濇?zhèn)ㄥソ杩愩?/p>

闃肯 2010-05-06 17:30 鍙戣〃璇勮
]]>
璋堣皥Unicode緙栫爜錛岀畝瑕佽В閲奤CS銆乁TF銆丅MP銆丅OM絳夊悕璇?/title><link>http://m.shnenglu.com/lapcca/archive/2010/05/06/114661.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Thu, 06 May 2010 08:39:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/05/06/114661.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/114661.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/05/06/114661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/114661.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/114661.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class="cnt" id="blog_text"> <br />榪欐槸涓綃囩▼搴忓憳鍐欑粰紼嬪簭鍛樼殑瓚e懗璇葷墿銆傛墍璋撹叮鍛蟲槸鎸囧彲浠ユ瘮杈冭交鏉懼湴浜嗚В涓浜涘師鏉ヤ笉娓呮鐨勬蹇碉紝澧炶繘鐭ヨ瘑錛岀被浼間簬鎵揜PG娓告垙鐨勫崌綰с傛暣鐞嗚繖綃囨枃绔犵殑鍔ㄦ満鏄袱涓棶棰橈細(xì)<br /><br />闂涓錛?br /><br />聽聽聽 浣跨敤Windows璁頒簨鏈殑鈥滃彟瀛樹負(fù)鈥濓紝鍙互鍦℅BK銆乁nicode銆乁nicode big endian鍜孶TF-8榪欏嚑縐嶇紪鐮佹柟寮忛棿鐩鎬簰杞崲銆傚悓鏍鋒槸txt鏂囦歡錛學(xué)indows鏄庢牱璇嗗埆緙栫爜鏂瑰紡鐨勫憿錛?br /><br />聽聽聽 鎴戝緢鏃╁墠灝卞彂鐜癠nicode銆乁nicode big endian鍜孶TF-8緙栫爜鐨則xt鏂囦歡鐨勫紑澶翠細(xì)澶氬嚭鍑犱釜瀛楄妭錛屽垎鍒槸FF銆丗E錛圲nicode錛?FE銆丗F錛圲nicode big endian錛?EF銆丅B銆丅F錛圲TF-8錛夈備絾榪欎簺鏍囪鏄熀浜庝粈涔堟爣鍑嗗憿錛?br />闂浜岋細(xì)<br />聽聽聽 鏈榪戝湪緗戜笂鐪嬪埌涓涓狢onvertUTF.c錛屽疄鐜頒簡UTF-32銆乁TF-16鍜孶TF-8榪欎笁縐嶇紪鐮佹柟寮忕殑鐩鎬簰杞崲銆傚浜嶶nicode(UCS2)銆?GBK銆乁TF-8榪欎簺緙栫爜鏂瑰紡錛屾垜鍘熸潵灝變簡瑙c備絾榪欎釜紼嬪簭璁╂垜鏈変簺緋婃秱錛屾兂涓嶈搗鏉TF-16鍜孶CS2鏈変粈涔堝叧緋匯?<br /><br />鏌ヤ簡鏌ョ浉鍏寵祫鏂欙紝鎬葷畻灝嗚繖浜涢棶棰樺紕娓呮浜嗭紝欏哄甫涔熶簡瑙d簡涓浜沀nicode鐨勭粏鑺傘傚啓鎴愪竴綃囨枃绔狅紝閫佺粰鏈夎繃綾諱技鐤戦棶鐨勬湅鍙嬨傛湰鏂囧湪鍐欎綔鏃跺敖閲忓仛鍒伴氫織鏄撴噦錛屼絾瑕佹眰璇昏呯煡閬撲粈涔堟槸瀛楄妭錛屼粈涔堟槸鍗佸叚榪涘埗銆?br />0銆乥ig endian鍜宭ittle endian<br /><br />big endian鍜宭ittle endian鏄疌PU澶勭悊澶氬瓧鑺傛暟鐨勪笉鍚屾柟寮忋備緥濡傗滄眽鈥濆瓧鐨刄nicode緙栫爜鏄?C49銆傞偅涔堝啓鍒版枃浠墮噷鏃訛紝絀剁珶鏄皢6C鍐欏湪鍓嶉潰錛岃繕鏄皢49鍐欏湪鍓嶉潰錛熷鏋滃皢6C鍐欏湪鍓嶉潰錛屽氨鏄痓ig endian銆傝繕鏄皢49鍐欏湪鍓嶉潰錛屽氨鏄痩ittle endian銆?br /><br />鈥渆ndian鈥濊繖涓瘝鍑鴻嚜銆婃牸鍒椾經(jīng)娓歌銆嬨傚皬浜哄浗鐨勫唴鎴樺氨婧愪簬鍚冮浮铔嬫椂鏄┒绔熶粠澶уご(Big-Endian)鏁插紑榪樻槸浠庡皬澶?Little-Endian)鏁插紑錛岀敱姝ゆ浘鍙戠敓榪囧叚嬈″彌涔憋紝鍏朵腑涓涓殗甯濋佷簡鍛斤紝鍙︿竴涓涪浜嗙帇浣嶃?br /><br />鎴戜滑涓鑸皢endian緲昏瘧鎴愨滃瓧鑺傚簭鈥濓紝灝哹ig endian鍜宭ittle endian縐頒綔鈥滃ぇ灝鋸濆拰鈥滃皬灝鋸濄?br />1銆佸瓧絎︾紪鐮併佸唴鐮侊紝欏哄甫浠嬬粛姹夊瓧緙栫爜<br /><br />瀛楃蹇呴』緙栫爜鍚庢墠鑳借璁$畻鏈哄鐞嗐傝綆楁満浣跨敤鐨勭己鐪佺紪鐮佹柟寮忓氨鏄綆楁満鐨勫唴鐮併傛棭鏈熺殑璁$畻鏈轟嬌鐢?浣嶇殑ASCII緙栫爜錛屼負(fù)浜嗗鐞嗘眽瀛楋紝紼嬪簭鍛樿璁′簡鐢ㄤ簬綆浣撲腑鏂囩殑GB2312鍜岀敤浜庣箒浣撲腑鏂囩殑big5銆?br /><br />GB2312(1980騫?涓鍏辨敹褰曚簡7445涓瓧絎︼紝鍖呮嫭6763涓眽瀛楀拰682涓叾瀹冪鍙楓傛眽瀛楀尯鐨勫唴鐮佽寖鍥撮珮瀛楄妭浠嶣0-F7錛屼綆瀛楄妭浠嶢1-FE錛屽崰鐢ㄧ殑鐮佷綅鏄?2*94=6768銆傚叾涓湁5涓┖浣嶆槸D7FA-D7FE銆?br /><br />GB2312 鏀寔鐨勬眽瀛楀お灝戙?995騫寸殑姹夊瓧鎵╁睍瑙勮寖GBK1.0鏀跺綍浜?1886涓鍙鳳紝瀹冨垎涓烘眽瀛楀尯鍜屽浘褰㈢鍙峰尯銆傛眽瀛楀尯鍖呮嫭21003涓瓧絎︺?000騫寸殑 GB18030鏄彇浠BK1.0鐨勬寮忓浗瀹舵爣鍑嗐傝鏍囧噯鏀跺綍浜?7484涓眽瀛楋紝鍚屾椂榪樻敹褰曚簡钘忔枃銆佽挋鏂囥佺淮鍚懼皵鏂囩瓑涓昏鐨勫皯鏁版皯鏃忔枃瀛椼傜幇鍦ㄧ殑PC騫沖彴蹇呴』鏀寔GB18030錛屽宓屽叆寮忎駭鍝佹殏涓嶄綔瑕佹眰銆傛墍浠ユ墜鏈恒丮P3涓鑸彧鏀寔GB2312銆?br /><br />浠嶢SCII銆?GB2312銆丟BK鍒癎B18030錛岃繖浜涚紪鐮佹柟娉曟槸鍚戜笅鍏煎鐨勶紝鍗沖悓涓涓瓧絎﹀湪榪欎簺鏂規(guī)涓繪槸鏈夌浉鍚岀殑緙栫爜錛屽悗闈㈢殑鏍囧噯鏀寔鏇村鐨勫瓧絎︺傚湪榪欎簺緙栫爜涓紝鑻辨枃鍜屼腑鏂囧彲浠ョ粺涓鍦板鐞嗐傚尯鍒嗕腑鏂囩紪鐮佺殑鏂規(guī)硶鏄珮瀛楄妭鐨勬渶楂樹綅涓嶄負(fù)0銆傛寜鐓х▼搴忓憳鐨勭О鍛鹼紝GB2312銆丟BK鍒癎B18030閮藉睘浜庡弻瀛楄妭瀛楃闆?(DBCS)銆?br /><br />鏈夌殑涓枃Windows鐨勭己鐪佸唴鐮佽繕鏄疓BK錛屽彲浠ラ氳繃GB18030鍗囩駭鍖呭崌綰у埌GB18030銆備笉榪嘒B18030鐩稿GBK澧炲姞鐨勫瓧絎︼紝鏅氫漢鏄緢闅劇敤鍒扮殑錛岄氬父鎴戜滑榪樻槸鐢℅BK鎸囦唬涓枃Windows鍐呯爜銆?br /><br />榪欓噷榪樻湁涓浜涚粏鑺傦細(xì)<br /><br />聽聽聽 *<br /><br />聽聽聽聽聽 GB2312鐨勫師鏂囪繕鏄尯浣嶇爜錛屼粠鍖轟綅鐮佸埌鍐呯爜錛岄渶瑕佸湪楂樺瓧鑺傚拰浣庡瓧鑺備笂鍒嗗埆鍔犱笂A0銆?br />聽聽聽 *<br /><br />聽聽聽聽聽 鍦―BCS涓紝GB鍐呯爜鐨勫瓨鍌ㄦ牸寮忓緇堟槸big endian錛屽嵆楂樹綅鍦ㄥ墠銆?br />聽聽聽 *<br /><br />聽聽聽聽聽 GB2312 鐨勪袱涓瓧鑺傜殑鏈楂樹綅閮芥槸1銆備絾絎﹀悎榪欎釜鏉′歡鐨勭爜浣嶅彧鏈?28*128=16384涓傛墍浠BK鍜孏B18030鐨勪綆瀛楄妭鏈楂樹綅閮藉彲鑳戒笉鏄?銆備笉榪囪繖涓嶅獎(jiǎng)鍝岲BCS瀛楃嫻佺殑瑙f瀽錛氬湪璇誨彇DBCS瀛楃嫻佹椂錛屽彧瑕侀亣鍒伴珮浣嶄負(fù)1鐨勫瓧鑺傦紝灝卞彲浠ュ皢涓嬩袱涓瓧鑺備綔涓轟竴涓弻瀛楄妭緙栫爜錛岃屼笉鐢ㄧ浣庡瓧鑺傜殑楂樹綅鏄粈涔堛?br /><br />2銆乁nicode銆乁CS鍜孶TF<br /><br />鍓嶉潰鎻愬埌浠嶢SCII銆丟B2312銆丟BK鍒癎B18030鐨勭紪鐮佹柟娉曟槸鍚戜笅鍏煎鐨勩傝孶nicode鍙笌ASCII鍏煎錛堟洿鍑嗙‘鍦拌錛屾槸涓嶪SO-8859-1鍏煎錛夛紝涓嶨B鐮佷笉鍏煎銆備緥濡傗滄眽鈥濆瓧鐨刄nicode緙栫爜鏄?C49錛岃孏B鐮佹槸BABA銆?br /><br />Unicode 涔熸槸涓縐嶅瓧絎︾紪鐮佹柟娉曪紝涓嶈繃瀹冩槸鐢卞浗闄呯粍緇囪璁★紝鍙互瀹圭撼鍏ㄤ笘鐣屾墍鏈夎璦鏂囧瓧鐨勭紪鐮佹柟妗堛俇nicode鐨勫鍚嶆槸"Universal Multiple-Octet Coded Character Set"錛岀畝縐頒負(fù)UCS銆俇CS鍙互鐪嬩綔鏄?Unicode Character Set"鐨勭緝鍐欍?br /><br />鏍規(guī)嵁緇村熀鐧劇鍏ㄤ功(http: //zh.wikipedia.org/wiki/)鐨勮杞斤細(xì)鍘嗗彶涓婂瓨鍦ㄤ袱涓瘯鍥劇嫭绔嬭璁nicode鐨勭粍緇囷紝鍗沖浗闄呮爣鍑嗗寲緇勭粐錛圛SO錛夊拰涓涓蔣浠跺埗閫犲晢鐨勫崗浼?xì)锛坲nicode.org錛夈侷SO寮鍙戜簡ISO 10646欏圭洰錛孶nicode鍗忎細(xì)寮鍙戜簡Unicode欏圭洰銆?br /><br />鍦?991騫村墠鍚庯紝鍙屾柟閮借璇嗗埌涓栫晫涓嶉渶瑕佷袱涓笉鍏煎鐨勫瓧絎﹂泦銆備簬鏄畠浠紑濮嬪悎騫跺弻鏂圭殑宸ヤ綔鎴愭灉錛屽茍涓哄垱绔嬩竴涓崟涓緙栫爜琛ㄨ屽崗鍚屽伐浣溿備粠Unicode2.0寮濮嬶紝Unicode欏圭洰閲囩敤浜嗕笌ISO 10646-1鐩稿悓鐨勫瓧搴撳拰瀛楃爜銆?br /><br />鐩墠涓や釜欏圭洰浠嶉兘瀛樺湪錛屽茍鐙珛鍦板叕甯冨悇鑷殑鏍囧噯銆俇nicode鍗忎細(xì)鐜板湪鐨勬渶鏂扮増鏈槸2005騫寸殑Unicode 4.1.0銆侷SO鐨勬渶鏂版爣鍑嗘槸10646-3:2003銆?br /><br />UCS瑙勫畾浜嗘庝箞鐢ㄥ涓瓧鑺傝〃紺哄悇縐嶆枃瀛椼傛庢牱浼犺緭榪欎簺緙栫爜錛屾槸鐢盪TF(UCS Transformation Format)瑙勮寖瑙勫畾鐨勶紝甯歌鐨刄TF瑙勮寖鍖呮嫭UTF-8銆乁TF-7銆乁TF-16銆?br /><br />IETF 鐨凴FC2781鍜孯FC3629浠FC鐨勪竴璐鏍鹼紝娓呮櫚銆佹槑蹇張涓嶅け涓ヨ皚鍦版弿榪頒簡UTF-16鍜孶TF-8鐨勭紪鐮佹柟娉曘傛垜鎬繪槸璁頒笉寰桰ETF鏄?Internet Engineering Task Force鐨勭緝鍐欍備絾IETF璐熻矗緇存姢鐨凴FC鏄疘nternet涓婁竴鍒囪鑼冪殑鍩虹銆?br />3銆乁CS-2銆乁CS-4銆丅MP<br /><br /><br /><br />UCS鏈変袱縐嶆牸寮忥細(xì)UCS-2鍜孶CS-4銆傞【鍚嶆濅箟錛孶CS-2灝辨槸鐢ㄤ袱涓瓧鑺傜紪鐮侊紝UCS-4灝辨槸鐢?涓瓧鑺傦紙瀹為檯涓婂彧鐢ㄤ簡31浣嶏紝鏈楂樹綅蹇呴』涓?錛夌紪鐮併備笅闈㈣鎴戜滑鍋氫竴浜涚畝鍗曠殑鏁板娓告垙錛?br /><br />UCS-2鏈?^16=65536涓爜浣嶏紝UCS-4鏈?^31=2147483648涓爜浣嶃?br /><br />UCS -4鏍規(guī)嵁鏈楂樹綅涓?鐨勬渶楂樺瓧鑺傚垎鎴?^7=128涓猤roup銆傛瘡涓猤roup鍐嶆牴鎹楂樺瓧鑺傚垎涓?56涓猵lane銆傛瘡涓猵lane鏍規(guī)嵁絎?涓瓧鑺傚垎涓?256琛?(rows)錛屾瘡琛屽寘鍚?56涓猚ells銆傚綋鐒跺悓涓琛岀殑cells鍙槸鏈鍚庝竴涓瓧鑺備笉鍚岋紝鍏朵綑閮界浉鍚屻?br /><br />group 0鐨刾lane 0琚О浣淏asic Multilingual Plane, 鍗矪MP銆傛垨鑰呰UCS-4涓紝楂樹袱涓瓧鑺備負(fù)0鐨勭爜浣嶈縐頒綔BMP銆?br /><br />灝哢CS-4鐨凚MP鍘繪帀鍓嶉潰鐨勪袱涓浂瀛楄妭灝卞緱鍒頒簡UCS-2銆傚湪UCS-2鐨勪袱涓瓧鑺傚墠鍔犱笂涓や釜闆跺瓧鑺傦紝灝卞緱鍒頒簡UCS-4鐨凚MP銆傝岀洰鍓嶇殑UCS-4瑙勮寖涓繕娌℃湁浠諱綍瀛楃琚垎閰嶅湪BMP涔嬪銆?br />4銆乁TF緙栫爜<br /><br /><br /><br />UTF-8灝辨槸浠?浣嶄負(fù)鍗曞厓瀵筓CS榪涜緙栫爜銆備粠UCS-2鍒癠TF-8鐨勭紪鐮佹柟寮忓涓嬶細(xì)<br />UCS-2緙栫爜(16榪涘埗) 聽聽聽 UTF-8 瀛楄妭嫻?浜岃繘鍒?<br />0000 - 007F 聽聽聽 0xxxxxxx<br />0080 - 07FF 聽聽聽 110xxxxx 10xxxxxx<br />0800 - FFFF 聽聽聽 1110xxxx 10xxxxxx 10xxxxxx<br /><br />渚嬪鈥滄眽鈥濆瓧鐨刄nicode緙栫爜鏄?C49銆?C49鍦?800-FFFF涔嬮棿錛屾墍浠ヨ偗瀹氳鐢?瀛楄妭妯℃澘浜嗭細(xì)1110xxxx 10xxxxxx 10xxxxxx銆傚皢6C49鍐欐垚浜岃繘鍒舵槸錛?110 110001 001001錛?鐢ㄨ繖涓瘮鐗規(guī)祦渚濇浠f浛妯℃澘涓殑x錛屽緱鍒幫細(xì)11100110 10110001 10001001錛屽嵆E6 B1 89銆?br /><br />璇昏呭彲浠ョ敤璁頒簨鏈祴璇曚竴涓嬫垜浠殑緙栫爜鏄惁姝g‘銆?br /><br />UTF -16浠?6浣嶄負(fù)鍗曞厓瀵筓CS榪涜緙栫爜銆傚浜庡皬浜?x10000鐨刄CS鐮侊紝UTF-16緙栫爜灝辯瓑浜嶶CS鐮佸搴旂殑16浣嶆棤絎﹀彿鏁存暟銆傚浜庝笉灝忎簬 0x10000鐨刄CS鐮侊紝瀹氫箟浜嗕竴涓畻娉曘備笉榪囩敱浜庡疄闄呬嬌鐢ㄧ殑UCS2錛屾垨鑰匲CS4鐨凚MP蹇呯劧灝忎簬0x10000錛屾墍浠ュ氨鐩墠鑰岃█錛屽彲浠ヨ涓篣TF -16鍜孶CS-2鍩烘湰鐩稿悓銆備絾UCS-2鍙槸涓涓紪鐮佹柟妗堬紝UTF-16鍗磋鐢ㄤ簬瀹為檯鐨勪紶杈擄紝鎵浠ュ氨涓嶅緱涓嶈冭檻瀛楄妭搴忕殑闂銆?br />5銆乁TF鐨勫瓧鑺傚簭鍜孊OM<br /><br />UTF -8浠ュ瓧鑺備負(fù)緙栫爜鍗曞厓錛屾病鏈夊瓧鑺傚簭鐨勯棶棰樸俇TF-16浠ヤ袱涓瓧鑺備負(fù)緙栫爜鍗曞厓錛屽湪瑙i噴涓涓猆TF-16鏂囨湰鍓嶏紝棣栧厛瑕佸紕娓呮姣忎釜緙栫爜鍗曞厓鐨勫瓧鑺傚簭銆備緥濡傛敹鍒頒竴涓滃鈥濈殑Unicode緙栫爜鏄?94E錛屸滀箼鈥濈殑Unicode緙栫爜鏄?E59銆傚鏋滄垜浠敹鍒癠TF-16瀛楄妭嫻佲?94E鈥濓紝閭d箞榪欐槸鈥滃鈥濊繕鏄?鈥滀箼鈥濓紵<br /><br />Unicode瑙勮寖涓帹鑽愮殑鏍囪瀛楄妭欏哄簭鐨勬柟娉曟槸BOM銆侭OM涓嶆槸鈥淏ill Of Material鈥濈殑BOM琛紝鑰屾槸Byte Order Mark銆侭OM鏄竴涓湁鐐瑰皬鑱槑鐨勬兂娉曪細(xì)<br /><br />鍦║CS 緙栫爜涓湁涓涓彨鍋?ZERO WIDTH NO-BREAK SPACE"鐨勫瓧絎︼紝瀹冪殑緙栫爜鏄疐EFF銆傝孎FFE鍦║CS涓槸涓嶅瓨鍦ㄧ殑瀛楃錛屾墍浠ヤ笉搴旇鍑虹幇鍦ㄥ疄闄呬紶杈撲腑銆俇CS瑙勮寖寤鴻鎴戜滑鍦ㄤ紶杈撳瓧鑺傛祦鍓嶏紝鍏堜紶杈撳瓧絎?ZERO WIDTH NO-BREAK SPACE"銆?br /><br />榪欐牱濡傛灉鎺ユ敹鑰呮敹鍒癋EFF錛屽氨琛ㄦ槑榪欎釜瀛楄妭嫻佹槸Big-Endian鐨勶紱濡傛灉鏀跺埌FFFE錛屽氨琛ㄦ槑榪欎釜瀛楄妭嫻佹槸Little-Endian鐨勩傚洜姝ゅ瓧絎?ZERO WIDTH NO-BREAK SPACE"鍙堣縐頒綔BOM銆?br /><br />UTF -8涓嶉渶瑕丅OM鏉ヨ〃鏄庡瓧鑺傞『搴忥紝浣嗗彲浠ョ敤BOM鏉ヨ〃鏄庣紪鐮佹柟寮忋傚瓧絎?ZERO WIDTH NO-BREAK SPACE"鐨刄TF-8緙栫爜鏄疎F BB BF錛堣鑰呭彲浠ョ敤鎴戜滑鍓嶉潰浠嬬粛鐨勭紪鐮佹柟娉曢獙璇佷竴涓嬶級(jí)銆傛墍浠ュ鏋滄帴鏀惰呮敹鍒頒互EF BB BF寮澶寸殑瀛楄妭嫻侊紝灝辯煡閬撹繖鏄疷TF-8緙栫爜浜嗐?br /><br />Windows灝辨槸浣跨敤BOM鏉ユ爣璁版枃鏈枃浠剁殑緙栫爜鏂瑰紡鐨勩?br />6銆佽繘涓姝ョ殑鍙傝冭祫鏂?br /><br />鏈枃涓昏鍙傝冪殑璧勬枡鏄?"Short overview of ISO-IEC 10646 and Unicode" (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)銆?br /><br />鎴戣繕鎵句簡涓ょ瘒鐪嬩笂鍘諱笉閿欑殑璧勬枡錛屼笉榪囧洜涓烘垜寮濮嬬殑鐤戦棶閮芥壘鍒頒簡絳旀錛屾墍浠ュ氨娌℃湁鐪嬶細(xì)<br /><br />聽聽 1. "Understanding Unicode A general introduction to the Unicode Standard" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a)<br />聽聽 2. "Character set encoding basics Understanding character set encodings and legacy encodings" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03) <br /><br />鎴戝啓榪嘦TF-8銆乁CS-2銆丟BK鐩鎬簰杞崲鐨勮蔣浠跺寘錛屽寘鎷嬌鐢╓indows API鍜屼笉浣跨敤Windows API鐨勭増鏈備互鍚庢湁鏃墮棿鐨勮瘽錛屾垜浼?xì)鏁寸悊涓涓嬫斁鍒版垜鐨勪釜浜轟富欏典笂(http://www.fmddlmyy.cn)銆?br /><br />鎴戞槸鎯蟲竻妤氭墍鏈夐棶棰樺悗鎵嶅紑濮嬪啓榪欑瘒鏂囩珷鐨勶紝鍘熶互涓轟竴浼?xì)鍎繛p兘鍐欏ソ銆傛病鎯沖埌鑰冭檻鎺緸鍜屾煡璇佺粏鑺傝姳璐逛簡寰堥暱鏃墮棿錛岀珶鐒朵粠涓嬪崍1:30鍐欏埌9:00銆傚笇鏈涙湁璇昏呰兘浠庝腑鍙楃泭銆?/div><img src ="http://m.shnenglu.com/lapcca/aggbug/114661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-05-06 16:39 <a href="http://m.shnenglu.com/lapcca/archive/2010/05/06/114661.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>UNICODE涓嶢NSI鐨勫尯鍒?/title><link>http://m.shnenglu.com/lapcca/archive/2010/05/06/114649.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Thu, 06 May 2010 08:09:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/05/06/114649.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/114649.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/05/06/114649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/114649.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/114649.html</trackback:ping><description><![CDATA[浠涔堟槸ANSI錛屼粈涔堝張鏄疷NICODE鍛紵鍏跺疄榪欐槸涓ょ涓嶅悓鐨勭紪鐮佹柟寮忔爣鍑嗭紝ANSI涓殑瀛楃閲囩敤8bit錛岃孶NICODE涓殑瀛楃閲囩敤16bit銆傦紙瀵逛簬瀛楃鏉ヨANSI浠ュ崟瀛楄妭瀛樻斁鑻辨枃瀛楃錛屼互鍙屽瓧鑺傚瓨鏀句腑鏂囩瓑瀛楃,鑰孶nicode涓嬶紝鑻辨枃鍜屼腑鏂囩殑瀛楃閮戒互鍙屽瓧鑺傚瓨鏀撅級(jí)Unicode鐮佷篃鏄竴縐嶅浗闄呮爣鍑嗙紪鐮侊紝閲囩敤浜屼釜瀛楄妭緙栫爜錛屼笌ANSI鐮佷笉鍏煎銆傜洰鍓嶏紝鍦ㄧ綉緇溿乄indows緋葷粺鍜屽緢澶氬ぇ鍨嬭蔣浠朵腑寰楀埌搴旂敤銆?bit鐨凙NSI緙栫爜鍙兘琛ㄧず256縐嶅瓧絎︼紝琛ㄧず26涓嫳鏂囧瓧姣嶆槸緇扮話鏈変綑鐨勶紝浣嗘槸琛ㄧず姹夊瓧錛岄煩鍥借絳夋湁鐫鎴愬崈涓婁竾涓瓧絎︾殑闈炶タ鏂瑰瓧絎﹁偗瀹氬氨涓嶅浜嗭紝姝f槸濡傛鎵嶅紩鍏ヤ簡UNICODE鏍囧噯銆偮犅犅?br />聽聽聽聽 鍦ㄨ蔣浠跺紑鍙戜腑錛岀壒鍒槸浣跨敤C璇█鐨勪竴浜涙湁鍏沖瓧絎︿覆澶勭悊鐨勫嚱鏁幫紝ANSI鍜孶NICODE鏄尯鍒嗘槸鐢ㄧ殑錛岄偅涔圓NSI綾誨瀷鐨勫瓧絎﹀拰UNICODE綾誨瀷鐨勫瓧絎﹀浣曞畾涔夛紝濡備綍浣跨敤鍛紵ANSI鍜孶NICODE鍙堝浣曡漿鎹㈠憿錛熉犅犅?br />聽聽 涓錛庡畾涔夐儴鍒嗭細(xì)聽聽<br />聽聽 ANSI錛歝har聽聽聽 str[1024]; 鍙敤瀛楃涓插鐞嗗嚱鏁幫細(xì)strcpy( ),聽聽聽 strcat( ),聽聽 strlen( )絳夌瓑銆?br />UNICODE錛歸char_t聽聽聽 str[1024]錛涘彲鐢ㄥ瓧絎︿覆澶勭悊鍑芥暟聽聽聽<br />浜岋紟鍙敤鍑芥暟錛?<br />聽聽 ANSI錛氬嵆char錛屽彲鐢ㄥ瓧絎︿覆澶勭悊鍑芥暟錛歴trcat(聽聽聽 ),strcpy(聽聽聽 ),聽聽聽 strlen(聽聽聽 )絳変互str鎵撳ご鐨勫嚱鏁般偮犅犅?br />聽聽 UNICODE錛氬嵆wchar_t 鍙敤瀛楃涓插鐞嗗嚱鏁幫細(xì)wcscat(),wcscpy(),wcslen()絳変互wcs鎵撳ご鐨勫嚱鏁般偮犅犅?br />聽聽 涓夛紟緋葷粺鏀寔聽聽<br />聽聽聽聽聽 Windows聽聽聽 98聽聽聽 錛氬彧鏀寔ANSI銆偮犅犅?br />聽聽聽聽聽 Windows聽聽聽 2k聽聽聽 錛氭棦鏀寔ANSI鍙堟敮鎸乁NICODE銆偮犅犅?br />聽聽聽聽聽 Windows聽聽聽 CE聽聽聽 錛氬彧鏀寔UNICODE銆偮犅犅?br />聽聽聽聽聽 璇存槑聽聽聽<br />聽聽聽聽聽 1 鍦–OM閲岄潰鍙敮鎸乁NICODE銆偮犅犅?br />聽聽聽聽聽 2錛嶹indows聽聽 2000鏁翠釜OS緋葷粺閮芥槸鍩轟簬UNICODE鐨勶紝涓烘鍦╳indows 2000 涓嬩嬌鐢ˋNSI鏄渶瑕佷粯鍑轟唬浠風(fēng)殑錛岃櫧鐒跺湪緙栫爜涓婁笉鐢ㄤ換浣曠殑杞崲錛屼絾鏄繖縐嶈漿鍖栨槸闅愯棌鐨勶紝鏄崰鐢ㄧ郴緇熻祫婧愮殑錛圕PU錛屽唴瀛橈級(jí)銆偮犅犅?br />聽聽聽聽聽 3 鍦╓indows 98涓嬪繀欏諱嬌鐢║NICODE錛屽垯闇瑕佽嚜宸辨墜鍔ㄧ殑緙栫爜鍒囨崲銆偮犅犅?br />聽聽聽 鍥涳紟濡備綍鍖哄垎錛毬犅犅?br />聽聽聽 鍦ㄦ垜浠蔣浠跺紑鍙戜腑寰寰闇瑕佸嵆鏀寔ANSI鍙堟敮鎸乁NICODE錛屼笉鍙兘鍦ㄨ姹傜被鍨嬭漿鎹㈢殑鏃跺欙紝閲嶆柊鏀瑰彉瀛楃涓茬殑綾誨瀷錛屽拰浣跨敤浜庡瓧絎︿覆涓婄殑鎿嶄綔鍑芥暟銆備負(fù)姝? 鏍囧噯C榪愯鏈熷簱鍜學(xué)indows 鎻愪緵浜嗗畯瀹氫箟鐨勬柟寮忋偮犅犅?br />聽聽聽 鍦–璇█閲岄潰鎻愪緵浜?_UNICODE瀹忥紙鏈変笅鍒掔嚎錛夛紝鍦╓indows閲岄潰鎻愪緵浜哢NICODE瀹忥紙鏃犱笅鍒掔嚎錛夛紝鍙瀹氫簡_UNICODE瀹忓拰UNICODE瀹忥紝緋葷粺灝變細(xì)鑷姩鍒囨崲鍒癠NICODE鐗堟湰錛屽惁鍒欙紝緋葷粺鎸夌収ANSI鐨勬柟寮忚繘琛岀紪璇戝拰榪愯銆偮犅犅?br />聽聽聽 鍙畾涔変簡瀹忓茍涓嶈兘瀹炵幇鑷姩鐨勮漿鎹紝浠栬繕闇瑕佷竴緋誨垪鐨勫瓧絎﹀畾涔夋敮鎸併偮犅犅?br />聽聽 1. TCHAR聽聽聽<br />聽聽 濡傛灉瀹氫箟浜哢NICODE瀹忓垯TCHAR琚畾涔変負(fù)wchar_t銆偮犅犅?br />聽聽聽 typedef聽聽聽 wchar_t聽聽聽 TCHAR;聽聽聽<br />聽聽聽 鍚﹀垯TCHAR琚畾涔変負(fù)char聽聽聽<br />聽聽聽 typedef聽聽聽 char聽聽 TCHAR;聽聽聽<br />聽聽 2錛嶭PTSTR聽聽聽<br />濡傛灉瀹氫箟浜哢NICODE瀹忓垯LPTSTR琚畾涔変負(fù)LPWSTR銆傦紙浠ュ墠涓鐩翠笉鐭ラ亾LPWSTR鏄粈涔堜笢涓滐紝緇堜簬鏄庣櫧浜嗭級(jí)聽聽聽<br />聽聽 typedef聽聽聽 LPTSTR聽聽 LPWSTR;聽聽聽<br />聽聽 鍚﹀垯TCHAR琚畾涔変負(fù)char聽聽聽<br />聽聽 typedef聽聽聽 LPTSTR聽聽 LPSTR;聽聽<br />琛ュ厖涓涓嬶細(xì)<br />UTF-8鏄彲浠ョ敤浜庣湡姝g殑嫻佸紡浼犺緭鐨勶紝Unicode鏄竴縐嶇紪鐮佹柟妗埪犅犅?br />聽聽聽 鎴戠殑鐞嗚В鏄疷TF-8鏄疷nicode鐨勪竴縐嶅叿浣撳疄鐜般傜被浼肩殑瀹炵幇榪樻湁UTF錛?6絳夌瓑銆? <p><br />ANSI/Unicode瀛楃鍜屽瓧絎︿覆 <br />TChar.h鏄疭tring.h鐨勪慨鏀癸紝鐢ㄤ簬鍒涘緩ANSI/Unicode閫氱敤瀛楃涓層?/p><p>Unicode瀛楃涓茬殑姣忎釜瀛楃閮芥槸16浣嶇殑銆?/p><p>Win9x鍙敮鎸丄NSI錛沇in2000/XP/2003鏀寔ANSI/Unicode錛沇inCE鍙敮鎸乁nicode<br />聽聽聽聽聽聽 闄勶細(xì)鏈夐儴鍒哢nicode鍑芥暟涔熷彲浠ュ湪Win9X涓嬌鐢紝浣嗗彲鑳戒細(xì)鍑虹幇鎰忔兂涓嶅埌閿欒銆?/p><p>wchar_t鏄疷nicode瀛楃鐨勬暟鎹被鍨嬨?/p><p>鎵鏈夌殑Unicode鍑芥暟鍧囦互wcs寮澶達(dá)紝ANSI鍑芥暟鍧囦互str寮澶達(dá)紱ANSI C瑙勫畾C榪愯鏈熷簱鏀寔ANSI鍜孶nicode<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ANSI聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Unicode<br />聽聽聽聽聽聽 char聽聽 *strcat(char聽聽 *,聽聽 const聽聽 char聽聽 *)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 wchar_t聽聽 *wcscat(wchar_t聽聽 *,聽聽 const聽聽 wchar_t聽聽 *) <br />聽聽聽聽聽聽 char聽聽 *strchr(const聽聽 char * , int)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 wchar_t聽聽聽 *wcschr(const聽聽 wchar_t聽聽 * , int) <br />聽聽聽聽聽聽 int聽聽 strcmp(const聽聽 char聽聽 *,聽聽聽 const聽聽 char聽聽 *)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int聽聽聽 wcscmp(const聽聽 wchar_t聽聽 *, const聽聽 wchar_t *)<br />聽聽聽聽聽聽 char *strcpy(char聽聽 *,聽聽 const聽聽 char聽聽 *)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 wchar_t聽聽 *wcscpy(wchar_t聽聽聽 *,聽聽 const聽聽 wchar_t聽聽聽 *)<br />聽聽聽聽聽聽 size_t聽聽 strlen(const聽聽 char聽聽 *)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 wchar_t聽聽聽 wcslen(const聽聽 wchar_t聽聽 *)</p><p>L" wash " : 鐢ㄤ簬灝咥NSI瀛楃涓茶漿鎹負(fù)Unicode瀛楃涓詫紱<br />聽聽聽聽聽聽聽 _TEXT(" wash ")鏍規(guī)嵁鏄惁瀹氫箟Unicode鎴朹Unicode榪涜杞崲銆?br />聽聽聽聽聽聽 闄勶細(xì)_Unicode鐢ㄤ簬C榪愯搴擄紱Unicode鐢ㄤ簬Windows澶存枃浠躲?/p><p>ANSI/Unicode閫氱敤鏁版嵁綾誨瀷<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Both錛圓NSI/Unicode錛壜犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅?ANSI聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Unicode<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LPCTSTR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LPCSTR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LPCWSTR<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LPTSTR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LPSTR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LPWSTR<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PCTSTR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PCSTR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PCWSTR<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PTSTR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PSTR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PWSTR<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 TBYTE(TCHAR)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 CHAR聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WCHAR</p><p>鍦ㄨ璁ll鏃舵渶濂芥彁渚汚NSI鍜孶nicode鍑芥暟錛孉NSI鍑芥暟鍙敤浜庡垎閰嶅唴瀛橈紝灝嗗瓧絎﹁漿鎹負(fù)Unicode瀛楃錛岀劧鍚庤皟鐢║nicode鍑芥暟銆?/p><p>鏈濂戒嬌鐢ㄦ搷浣滅郴緇熷嚱鏁幫紝灝戜嬌鐢ㄦ垨涓嶅疄鐢–榪愯鏈熷嚱鏁?br />聽聽聽聽聽聽聽 eg錛氭搷浣滅郴緇熷瓧絎︿覆鍑芥暟錛坰hlWApi.h錛?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 StrCat(), StrChr(), StrCmp(), StrCpy()絳?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 娉ㄦ剰瀹冧滑鍖哄垎澶у皬鍐欙紝涔熷尯鍒咥NSI鍜孶nicode鐗堟湰<br />聽聽聽聽聽聽聽 闄勶細(xì)ANSI鐗堝嚱鏁板湪鍘熷嚱鏁板悗鍔犲ぇ鍐欏瓧姣岮<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Unicode鍑芥暟鍦ㄥ師鍑芥暟鍚庡姞澶у啓瀛楁瘝W</p><p>鎴愪負(fù)絎﹀悎ANSI鍜孶nicode鐨勫嚱鏁?br />聽聽聽聽聽聽聽 鈥?灝嗘枃鏈覆瑙嗕負(fù)瀛楃鏁扮粍錛岃屼笉鏄痗 h a r s鏁扮粍鎴栧瓧鑺傛暟緇勩?br />聽聽聽聽聽聽聽 鈥?灝嗛氱敤鏁版嵁綾誨瀷錛堝T C H A R鍜孭 T S T R錛夌敤浜庢枃鏈瓧絎﹀拰瀛楃涓層?br />聽聽聽聽聽聽聽 鈥?灝嗘樉寮忔暟鎹被鍨嬶紙濡侭 Y T E鍜孭 B Y T E錛夌敤浜庡瓧鑺傘佸瓧鑺傛寚閽堝拰鏁版嵁緙撳瓨銆?br />聽聽聽聽聽聽聽 鈥?灝員 E X T瀹忕敤浜庡師涔夊瓧絎﹀拰瀛楃涓層?br />聽聽聽聽聽聽聽 鈥?淇敼瀛楃涓茶繍綆楅棶棰?銆?br />聽聽聽聽聽聽聽聽聽 濡傦細(xì)sizeof(szBuffer) -> sizeof(szBuffer) / sizeof(TCHAR)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 malloc(charNum) -> malloc(charNum * sizeof(TCHAR))聽聽聽聽</p><p>瀵筓nicode瀛楃鎿嶄綔鐨勫嚱鏁拌繕鏈夛細(xì)錛堜篃鏈堿NSI鍜孶nicode鐗堟湰錛?br />聽聽聽聽聽聽 lstrcat() , lstrcmp() / lstrcmpi()[ 瀹冧滑鍦ㄥ唴閮ㄨ皟鐢–ompareString() ], lstrcpy(), lstrlen()<br />聽聽聽聽聽聽 榪欎簺鏄綔涓哄畯瀹炵幇鐨勩?/p><p>聽聽聽聽聽聽聽聽聽 C榪愯鏈熷嚱鏁奧犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅?windows鍑芥暟<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 tolower()聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PTSTR聽聽 CharLower(PTSTR聽聽 pszString)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 toupper()聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PTSTR聽聽 CharUpper(PTSTR聽聽 pszString)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 isalpha()聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 BOOL聽聽 IsCharAlpha(TCHAR聽聽 ch)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 BOOL聽聽 ISCharAlphaNumeric(TCHAR聽聽 ch)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 islower()聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 BOOL聽聽 IsCharLower(TCHAR聽聽 ch)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 isupper()聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 BOOL聽聽 IsCharUpper(TCHAR聽聽 ch)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 print()聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 wsprintf()<br />聽聽聽聽聽聽 杞崲Buffer錛欴WORD聽聽 CharLowerBuffer(PTSTR聽聽 pszString , DWORD cchString)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DWORD CharUpperBuffer(PTSTR聽聽 pszString , DWORD聽聽 cchString)<br />聽聽聽聽聽聽 涔熷彲杞崲鍗曚釜瀛楃錛屽錛歍CHAR聽聽 cLowerCaseChar = CharLower((PTSTR)szString[0])</p><p>紜畾瀛楃鏄疉NSI鎴朥nicode<br />聽聽聽聽聽聽聽 BOOL聽聽 IsTextUnicode(<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 const聽聽 VOID聽聽 * pBuffer,聽聽 //input聽聽 buffer聽聽 to be聽聽 examined<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int聽聽 cb,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //size of input聽聽 buffer<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LPINT聽聽 lpi聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //options<br />聽聽聽聽聽聽聽 )<br />聽聽聽聽聽聽 闄勶細(xì)姝ゅ嚱鏁板湪Win9x緋葷粺涓紝娌℃湁瀹炵幇浠g爜錛屽緇堣繑鍥濬ALSE</p><p>Unicode涓嶢NSI涔嬮棿鐨勮漿鎹?br />聽聽聽聽聽聽聽 char聽聽 szA[40];<br />聽聽聽聽聽聽聽 wchar聽聽 szW[40];<br />聽聽聽聽聽聽聽 // Normal聽聽 sprintf : all聽聽 string聽聽 are聽聽 ANSI<br />聽聽聽聽聽聽聽 sprintf( szA , " %s " , " ANSI聽聽 str ");<br />聽聽聽聽聽聽聽 // Convert聽聽 Unicode聽聽 string聽聽 to ANSI<br />聽聽聽聽聽聽聽 sprintf(聽聽 szA,聽聽 " %S " ,聽聽 L" Unicode聽聽 str ");<br />聽聽聽聽聽聽聽 // Normal聽聽 swprintf : all string are unicode<br />聽聽聽聽聽聽聽 swprinf( szW , "%s" , L" Unicode聽聽 str ");<br />聽聽聽聽聽聽聽 // Convert聽聽 ANSI聽聽 String to Unicode<br />聽聽聽聽聽聽聽 swprinf( szW, L"%S" , "ANSI str");</p><p>聽聽聽聽聽聽聽 int聽聽 MultiByteToWideChar(<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 UINT聽聽 uCodePage,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //code page,聽聽 0<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 DWORD聽聽 dwFlags,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //character-type聽聽 options,聽聽 0<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 PCSTR聽聽 pMultiByte,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //source聽聽 string聽聽 Addr<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 int聽聽 cchMultiByte,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //source聽聽 string聽聽 byte length<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 PWSTR聽聽 pWideCharStr,聽聽聽聽聽聽聽聽聽 //Dest string聽聽 Addr<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 int聽聽 cchWideChar聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //Dest聽聽 string char聽聽 Nums<br />聽聽聽聽聽聽聽聽 )<br />聽聽聽聽聽聽聽 u C o d e P a g e鍙傛暟鐢ㄤ簬鏍囪瘑涓涓笌澶氬瓧鑺傚瓧絎︿覆鐩稿叧鐨勪唬鐮侀〉鍙楓俤 w F l a g s鍙傛暟鐢ㄤ簬璁懼畾鍙︿竴涓帶浠訛紝瀹冨彲浠ョ敤閲嶉煶絎﹀彿涔嬬被鐨勫尯鍒嗘爣璁版潵褰卞搷瀛楃銆傝繖浜涙爣蹇楅氬父騫朵笉浣跨敤錛屽湪d w F l a g s鍙傛暟涓紶閫?銆俻 M u l t i B y t e S t r鍙傛暟鐢ㄤ簬璁懼畾瑕佽漿鎹㈢殑瀛楃涓詫紝 c c h M u l t i B y t e鍙傛暟鐢ㄤ簬鎸囨槑璇ュ瓧絎︿覆鐨勯暱搴︼紙鎸夊瓧鑺傝綆楋級(jí)銆傚鏋滀負(fù)c c h M u l t i B y t e鍙傛暟浼犻? 1錛岄偅涔堣鍑芥暟鐢ㄤ簬紜畾婧愬瓧絎︿覆鐨勯暱搴︺傝漿鎹㈠悗浜х敓鐨刄 n i c o d e鐗堟湰瀛楃涓插皢琚啓鍏ュ唴瀛樹腑鐨勭紦瀛橈紝鍏跺湴鍧鐢眕 Wi d e C h a r S t r鍙傛暟鎸囧畾銆傚繀欏誨湪c c h Wi d e C h a r鍙傛暟涓瀹氳緙撳瓨鐨勬渶澶у鹼紙浠ュ瓧絎︿負(fù)璁¢噺鍗曚綅錛夈傚鏋滆皟鐢∕ u l t i B y t e To Wi d e C h a r錛岀粰c c h Wi d e C h a r鍙傛暟浼犻?錛岄偅涔堣鍙傛暟灝嗕笉鎵ц瀛楃涓茬殑杞崲錛岃屾槸榪斿洖涓轟嬌杞崲鍙栧緱鎴愬姛鎵闇瑕佺殑緙撳瓨鐨勫箋?/p><p>聽聽聽聽 鍙互閫氳繃涓嬪垪姝ラ灝嗗瀛楄妭瀛楃涓茶漿鎹㈡垚U n i c o d e絳変環(huán)瀛楃涓詫細(xì)<br />聽聽聽聽 1) 璋冪敤M u l t i B y t e To Wi d e C h a r鍑芥暟錛屼負(fù)p Wi d e C h a r S t r鍙傛暟浼犻扤 U L L錛屼負(fù)c c h Wi d e C h a r鍙傛暟浼犻?銆?br />聽聽聽聽 2) 鍒嗛厤瓚沖鐨勫唴瀛樺潡錛岀敤浜庡瓨鏀捐漿鎹㈠悗鐨刄 n i c o d e瀛楃涓層傝鍐呭瓨鍧楃殑澶у皬鐢卞墠闈㈠M u l t B y t e To Wi d e C h a r鐨勮皟鐢ㄨ繑鍥炪?br />聽聽聽聽 3) 鍐嶆璋冪敤M u l t i B y t e To Wi d e C h a r錛岃繖嬈″皢緙撳瓨鐨勫湴鍧浣滀負(fù)p Wi d e C h a r S t r鍙傛暟鏉ヤ紶閫掞紝騫朵紶閫掔涓嬈¤皟鐢∕ u l t i B y t e To Wi d e C h a r鏃惰繑鍥炵殑緙撳瓨澶у皬錛屼綔涓篶 c h Wi d e c h a r鍙傛暟銆?br />聽聽聽聽 4) 浣跨敤杞崲鍚庣殑瀛楃涓層?br />聽聽聽聽 5) 閲婃斁U n i c o d e瀛楃涓插崰鐢ㄧ殑鍐呭瓨鍧椼?/p><p>聽聽聽 int WideCharToMultiByte(<br />聽聽聽聽聽聽聽聽聽 UINT CodePage,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // code page<br />聽聽聽聽聽聽聽聽聽 DWORD dwFlags,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // performance and mapping flags<br />聽聽聽聽聽聽聽聽聽 LPCWSTR lpWideCharStr,聽聽聽聽聽 // wide-character string<br />聽聽聽聽聽聽聽聽聽 int cchWideChar,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // number of chars in string<br />聽聽聽聽聽聽聽聽聽 LPSTR lpMultiByteStr,聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // buffer for new string<br />聽聽聽聽聽聽聽聽聽 int cbMultiByte,聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // size of buffer<br />聽聽聽聽聽聽聽聽聽 LPCSTR lpDefaultChar,聽聽聽聽聽聽聽聽聽聽聽 // default for unmappable chars<br />聽聽聽聽聽聽聽聽聽 LPBOOL lpUsedDefaultChar聽聽 // set when default char used<br />聽聽聽聽 )</p><img src ="http://m.shnenglu.com/lapcca/aggbug/114649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-05-06 16:09 <a href="http://m.shnenglu.com/lapcca/archive/2010/05/06/114649.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Ice涓嶤ORBA鐨勫樊寮?/title><link>http://m.shnenglu.com/lapcca/archive/2010/05/06/114595.html</link><dc:creator>闃肯</dc:creator><author>闃肯</author><pubDate>Thu, 06 May 2010 04:38:00 GMT</pubDate><guid>http://m.shnenglu.com/lapcca/archive/2010/05/06/114595.html</guid><wfw:comment>http://m.shnenglu.com/lapcca/comments/114595.html</wfw:comment><comments>http://m.shnenglu.com/lapcca/archive/2010/05/06/114595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/lapcca/comments/commentRss/114595.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/lapcca/services/trackbacks/114595.html</trackback:ping><description><![CDATA[<p>棣栧厛澹版槑,鎴戜滑鏃笉鎯沖紩璧蜂竴鍦?CORBA vs Ice"鐨勪簤璁猴紝涔熶笉鎯蟲鐤慍ORBA銆傜浉鍙嶏紝鎴戜滑璁や負(fù)CORBA鍦ㄥ畠鐨勬椂浠f槸涓涓緢澶х殑鎴愬氨錛岃屼笖錛孖ce涔熸槑鏄懼熺敤浜咰ORBA鐨勫緢澶氭濇兂銆?/p> <p>鎴戜滑鍐沖畾鍐欒繖綃囨瘮杈冩枃绔犳槸鍥犱負(fù)鎴戜滑鏈熸湜鏇村鐨勪漢鑳芥紜湴璇㈤棶鎴戜滑涓轟綍浠栦滑瑕佺敤Ice浠f浛CORBA銆傚榪欎釜闂錛屾垜浠氬父鐨勫洖絳旀槸錛氫負(fù)浠涔堜笉鍏堣嚜宸辮瘯璇曚嬌鐢?Ice鍛紵鎴戜滑鏁㈣偗瀹氾紝涓鏃︿綘浣跨敤浜咺ce鏈変竴孌墊椂闂達(dá)紝浣犲氨姘歌繙涓嶄細(xì)鍐嶆兂鐢ㄥ洖CORBA銆傝鐩鎬俊鎴戜滑錛屽緢瀹規(guī)槗浼?xì)鍠湅脾涓奍ce錛屽洜涓哄畠浼橀泤銆佺畝鍗曪紝瀹冪殑緇撴瀯涓鑷存э紝鑰屼笖鏈鍚庝竴鐐癸細(xì)鑷沖皯瀹冩病鏈夊ぇ閲忕殑鐗規(guī)у拰宸ュ叿銆?/p> <p>瀵逛簬娌℃湁鏃墮棿鍘昏瘯楠孖ce鏉ヤ簡瑙e畠鐨勪漢錛岃繖閲屾湁涓浜涘師鍥犺鎴戜滑鐩鎬俊Ice浼樹簬CORBA錛?/p> <p>1銆丆ompleteness(瀹屽鎬?<br />褰撴垜浠鍒板畬澶囨ф椂錛屾垜浠殑鎰忔濇槸瀹為檯浜у搧鐨勫畬澶囨э紝鑰屼笉鏄粠鏉ユ湭琚疄鐜扮殑鏍囧噯鐨勫畬澶囨с傛垜浠浉淇ce姣斿競(jìng)鍦轟笂浠諱綍鍗曚釜CORBA鏇村畬澶囥備綘鍙互鑷繁鍋氫竴涓鏌ワ細(xì)甯?jìng)鍦轰笂鏈夊摢涓狢ORBA浜у搧鎻愪緵浜嗚窡Ice鍙瘮杈冪殑鐗規(guī)э紵</p> <p>2銆丳erformance(鎬ц兘)<br />鐢變簬鍏鋒湁CORBA鎵娌℃湁鐨勭粨鏋勪紭鐐癸紝Ice鍏鋒湁紿佸嚭鐨勬ц兘銆侷ce楂樻晥鐨勫崗璁佽姹傛壒閲忓寲銆侀珮鏁堢殑浜嬩歡鍒嗗彂閮芥剰鍛崇潃Ice姣擟ORBA ORB榪愯寰楁洿蹇紝鍚屾椂娑堣楁洿灝戠殑綰胯礬甯﹀銆?/p> <p>3銆丯o "Design by Committee"(闈炩滃鍛樹細(xì)璁捐鈥?<br />Ice鐢變竴緹や笓涓氱殑璧勬繁涓撳鎵璁捐銆侷ce娌℃湁璁捐鎴愰傚悎鎵鏈変漢鐨勨滀竾閲戞補(bǔ)鈥濄傝孋ORBA鍒欏厖鏂ョ潃琚叿鏈夌壒鏉冪殑鍒跺畾鑰呭姞榪涘埌鏍囧噯閲岀殑浼楀涓嶅垏瀹為檯鐨勭壒鎬э紝鍗村張娌℃湁鐪熸鑰冭檻鍒拌繖浜涚壒鎬ф槸鍚︿細(xì)琚湡姝e湴瀹炵幇銆?/p> <p>閫氬父錛屼負(fù)浜嗗氨CORBA鏍囧噯杈炬垚涓鑷寸殑鍞竴鏂規(guī)硶灝辨槸灝嗕箣鍓嶅ぇ閲忓疄鐜扮殑鐗規(guī)ф斁鍦ㄤ竴璧鳳紝鐢熺‖鍦板榪涙爣鍑嗛噷銆傝繖瀵艱嚧浜嗘爣鍑嗚秺鏉ヨ秺澶э紝涔熻秺鏉ヨ秺澶嶆潅錛岃秴鍑轟簡瀹為檯鐨勯渶瑕併傝繖涔熸剰鍛崇潃騫沖彴鏇村ぇ鏇存參錛屼篃鍥犱負(fù)澶嶆潅鐨凙PI瀵艱嚧浜嗛毦浠ヤ嬌鐢ㄣ侷ce鎻愪緵鐨凙PI闆嗗皬寰楀錛屼篃鏇撮珮鏁堬紝姣擟ORBA鐨凙PI鏄撲簬瀛︿範(fàn)浣跨敤錛屽茍涓斿姛鑳藉茍涓嶅皯銆?/p> <p>4銆丼lice<br />Slice錛孖ce鐨勮鑼冨畾涔夎璦錛屾瘮CORBA IDL鏇村皬銆佹洿綆媧併佹洿寮哄ぇ銆係lice鍏鋒湁鏇村皯鐨勮璦緇撴瀯錛屼絾鍗存洿鐏墊椿銆備緥濡傦紝涓涓唴寤虹殑瀛楀吀綾誨瀷鎻愪緵鐩存帴蹇熻闂暟鎹粨鏋勶紝寮傚父鐨勭戶鎵垮厑璁告洿娓呮櫚鍦板獎(jiǎng)灝勫埌鏀寔寮傚父澶勭悊鐨勮璦銆傚悓鏃訛紝Slice鎶涘純浜咰ORBA IDL涓嶉渶瑕佺殑澶嶆潅鎬э紝渚嬪灞炴э紝inout鍙傛暟錛屼笂涓嬫枃鍜屼紶鍊煎璞?Objects-by-Value)鐨勫鏉傛с?/p> <p>5銆丩anguage Mappings(璇█褰卞皠)<br />Ice鏀寔鍒癈++銆丣ava銆丳ython銆丳HP銆丆#鍜孷isual Basic鐨勮璦褰卞皠銆傛垜浠煡閬撲換浣曚竴涓狢ORBA瀹炵幇鎻愪緵鍟嗛兘娌℃湁鎻愪緵閭d箞澶氱殑璇█褰卞皠閫夋嫨銆?/p> <p>瀹為檯涓婂ぇ澶氭暟鐨凜ORBA鎻愪緵鍟嗗彧鎻愪緵C++鍜孞ava鐨勫獎(jiǎng)灝勶紝濡傛灉浣犳兂浣跨敤鍏跺畠璇█褰卞皠錛屼綘灝辮鍒囨崲鍒頒笉鍚岀殑鎻愪緵鍟嗙殑浜у搧鎴栦嬌鐢ㄦ病鏈夊疄楠屾敮鎸佺殑CORBA瀹炵幇銆?/p> <p>6銆丳ersistence(鎸佷箙鎬?<br />Slice騫朵笉鍗曞崟鏄竴涓帴鍙e畾涔夎璦銆傚畠涔熷彲浠ョ敤鏉ユ弿榪癐ce瀵硅薄榪涜鎸佷箙鐨勫睘鎬э紝浣垮緱寰堝鏄撳啓鍑烘敮鎸佸璞℃寔涔呯殑鏈嶅姟鍣ㄧ紼嬪簭銆?/p> <p>7銆丮etadata(鍏冩暟鎹?<br />Slice鏀寔鍙墿灞曠殑鍏冩暟鎹鏂斤紝瀹冨厑璁窼lice涓哄疄鐜板簲鐢ㄧ▼搴忕浉鍏崇殑鏌愪簺鐩殑鑰屼嬌鐢ㄥ厓鏁版嵁鐨勬爣璁般備緥濡傚厓鏁版嵁鍙互鐢ㄤ簬瀹氬埗涓嶅悓浜庢爣鍑咼ava褰卞皠鏂瑰紡鐨勫獎(jiǎng)灝勬潵婊¤凍鏌愪簺鐗瑰畾紼嬪簭鐨勮姹傘?/p> <p>8銆丯o any Type(娌℃湁any鏁版嵁綾誨瀷)<br />Ice 娌℃湁CORBA閲孉ny綾誨瀷鐨勭瓑浠鋒暟鎹被鍨嬨傝繖瀵逛簬CORBA鐢ㄦ埛鏉ヨ鍙兘鎰熷埌寰堟儕璁訛紝鍥犱負(fù)Any鏁版嵁綾誨瀷鍦–ORBA鏍囧噯閲岃騫挎硾鍦頒嬌鐢ㄣ備絾鏄紝Any 鏁版嵁綾誨瀷鏄浣欑殑錛氱▼搴忚璦璞ava鍜孋++騫舵病鏈堿ny鏁版嵁綾誨瀷錛岃屼笖Any鏁版嵁綾誨瀷瀵瑰垎甯冨紡緋葷粺鏉ヨ涔熶笉鏄睘浜庝竴涓壇濂界殑璁捐銆侫ny鏁版嵁綾誨瀷閫氬父鐢ㄥ湪涓ょ鎯呭喌涓嬶細(xì)涓縐嶆槸闇瑕佸湪緋葷粺鐨勪腑浠嬮儴鍒嗗鎺ユ敹鍒扮殑鏁版嵁鐩存帴榪涜浼犻掞紝鑰屼笉鐢ㄥ叧蹇冩暟鎹殑鐪熷疄綾誨瀷錛屼緥濡侰ORBA鐨凟vent鏈嶅姟錛屽彟涓縐嶆槸鐢ㄦ潵浣滀負(fù) union(鑱斿悎緇撴瀯浣?鐨勪竴涓瓑浠風(fēng)墿銆?/p> <p>Ice鍙互閫氳繃鍙戦佸拰鎺ユ敹"blobs"鐨勮姹傛潵婊¤凍絎竴縐嶆儏鍐碉紝Slice鐨勭被緇ф壙鍙互婊¤凍絎簩縐嶆儏鍐點(diǎn)備換浣曚竴縐嶆儏鍐碉紝Ice鐨勭▼搴忛兘鏇撮珮鏁堬紝鏇村姞鍏鋒湁綾誨瀷瀹夊叏錛屾洿鍔犲鏄撹璁″拰瀹炵幇錛岃屼笉浼?xì)閬囧堫C嬌鐢–ORBA Any鏁版嵁綾誨瀷鏃舵墍鍏鋒湁鐨勫鏉傛с?/p> <p>9銆両ce Core(Ice鐨勬牳蹇?<br />铏界潃鏃墮棿鐨勬紨鍖栵紝CORBA鐨勬牳蹇冨彉寰楀紓甯哥殑澶嶆潅銆備竴涓垵綰х殑渚嬪瓙瑕佸湪POA(CORBA鐨勫璞¢傞厤鍣?閲岄潰姝g‘浣跨敤閮介渶瑕佸緢涓撲笟鐨勭煡璇嗭紝鍗充嬌浣犲彧鎯蟲敮鎸佷竴灝忛儴鍒嗙殑鎶鏈壒鎬с侷ce鐨勫璞¢傞厤鍣紝鍦ㄥ彟涓鏂歸潰鏉ヨ錛屾洿鍔犵畝鍗曘佺洿瑙傘佷篃璺烶OA涓鏍風(fēng)殑鍔熻兘寮哄ぇ錛氬畾涔夎壇濂界殑API浣垮緱姣擯OA寮鍙戜竴涓彲鎵╁睍鐨勭▼搴忛」鐩渶瑕佹洿灝戠殑宸ヤ綔銆?/p> <p>10銆両ce Protocol(Ice鍗忚)<br />IIOP鏄疌ORBA鐨勫急鐐逛箣涓錛屽叿鏈夊お澶氱殑璁捐緙洪櫡銆備緥濡傦紝娌℃湁緙哄皯璇鋒眰鐨勫皝瑁呮潵闃叉娑堟伅鐨勫垎鍙戙備綆鏁堢殑瀵歸綈瑙勫垯瀵艱嚧浜嗗浣欑殑鏁版嵁鎷瘋礉銆傛暟鎹殑緙栫爜瑙勫垯澶嶆潅錛屽嵈娌℃湁甯︽潵鐩稿簲鐨勬ц兘鐨勬彁楂橈紝瀵硅薄寮曠敤鐨勭紪鐮佸紓甯稿鏉傦紝濡ㄧ浜嗘湁鏁堢殑鐨勭紪鐮佸拰鍦ㄥ唴瀛樺叡浜殑鎵ц銆備唬鐮侀泦鐨勫崗鍟嗘槸鍦ㄦ爣鍑嗕笅杈炬垚錛屼細(xì)閬亣鍒板緢澶氬啿紿併傛墍鏈夎繖浜涘鏉傛ф剰鍛崇潃IIOP寰堥毦瀹炵幇錛屽甫鏉ヤ簡浜掓搷浣滄у拰鎬ц兘涓婄殑闂銆侷ce鐨勫崗璁槸綆鍗曞茍涓旀洿鍔犳湁鏁堬紝瀹冩彁渚涗簡涓浜汭IOP娌℃湁鎻愪緵鐨勭壒鎬э紝渚嬪鏁版嵁鍘嬬緝鍜屾壒璇鋒眰鎵歸噺鍖栥?/p> <p>11銆丼ecurity(瀹夊叏鎬?<br />瀹夊叏鎬ф槸CORBA鐨勬渶澶х殑涓涓毦棰樸侽MG宸茬粡閫氳繃浜嗗涓爣鍑嗭紝浣嗗緢澶氶兘娌℃湁琚箍娉涘湴瀹炵幇錛孋ORBA鐨勫鎴蜂緷鐒舵病鏈変竴涓彲宸ヤ綔鐨勫畨鍏ㄧ殑ORBs銆傚綋璁捐 Ice鏃訛紝鍜孋ORBA鐩告瘮錛屽畨鍏ㄦц璁や負(fù)鏄熀鏈殑鐗規(guī)с傝繖灝辨槸Ice鎻愪緵涓涓湡姝h兘榪愪綔鐨凷SL瀹炵幇鐨勫畨鍏ㄧ殑闃茬伀澧欑殑鍘熷洜銆?/p> <p>12銆丆++ Mapping(C++鏄犲皠)<br />鐢?C++鏉ヤ嬌鐢–ORBA闈炲父鍥伴毦銆傚嵆浣夸綘鏄緢鏈夌粡楠岀殑C++寮鍙戣呫侰ORBA鐨凜++鏄犲皠鍦ㄥ唴瀛樼鐞嗗拰寮傚父瀹夊叏鏂歸潰鏈夊緢澶氱殑闄烽槺鍜岀己闄楓傜浉杈冧箣涓嬶紝Ice鐨凜++鏄犲皠闈炲父綆鍗曞拰鐩磋銆傚畠涓嶄細(xì)鏈夊洜涓洪敊璇屽鑷村唴瀛樼殑娉勬紡銆傝璁頒綇鐨勬槧灝勮鍒欑殑鏁扮洰姣擟ORBA鐨凜++鏄犲皠灝戝緱澶氾紝鑰屼笖Ice鐨凜++ 鏄犲皠鏄熀浜庡伐涓氭爣鍑嗙殑STL銆?/p> <p>14銆丼calability(鍙幾緙╂?<br />褰撲綘鏄竴涓笓瀹舵椂錛孋ORBA鏄竴縐嶅彲浼哥緝鎬у緢濂界殑鎶鏈備絾閲囩敤Ice錛屼換浣曚漢閮藉彲浠ュ啓鍑洪珮鍙幾緙╂х殑搴旂敤銆備緥濡傦紝Ice瀹炵幇浜嗕竴涓寔涔呭寲鐨勯愬嚭鍣紝浣犲彲浠ヤ嬌鐢ㄥ畠鏉ュ緢瀹規(guī)槗鍦板鐞嗕笂鐧句竾鐨勫璞★紝浣犳墍鍋氱殑浠呬粎鏄湪 Slice鐨勫畾涔夐噷鎸囧畾瀵硅薄鐨勬暟鎹紝鍓╀笅鐨勫伐浣淚ce涓鎵嬪寘鍔烇細(xì)Ice榪愯搴撲嬌鐢ㄩ珮閫熺殑鏁版嵁搴撴潵鑷姩鍔犺澆鍜屼繚瀛樺璞°?/p> <p>15銆乂ersioning(鐗堟湰鍖?<br />CORBA娌℃湁浠諱綍鏈哄埗鏉ユ敮鎸佸璞$姸鎬佺殑鐗堟湰鍖栥侳reeze鏄疘ce鐨勬寔涔呮湇鍔★紝瀹冨厑璁告寔涔呮暟鎹湪Slice鐨勫畾涔変腑鏀瑰彉鏃訛紝寰堝鏄撳湴榪涜鏁版嵁搴撶殑縐繪銆?/p> <p>16銆丼oftware Updates(杞歡鏇存柊)<br />IcePatch鏄竴涓厑璁鎬綘鏇磋瀹㈡埛绔蔣浠剁殑宸ュ叿銆傚畠浣跨敤鍘嬬緝鏉ユ彁楂樻暟鎹殑浼犺緭錛屽茍浣跨敤鏍¢獙鍊兼潵淇濊瘉涓鑷存с侰ORBA瀹屽叏娌℃湁鎻愪緵涓涓湪鍒嗗竷寮忕幆澧冩潵榪涜杞歡鏇存柊鐨勬満鍒躲?/p> <p>17銆乀yped Event Service(綾誨瀷鍖栫殑浜嬩歡鏈嶅姟)<br />CORBA鏈変竴涓爣鍑嗘潵鎻愪緵綾誨瀷鍖栫殑浜嬩歡鏈嶅姟錛屼絾寰堝皯鐢氳嚦娌℃湁琚疄鐜般傜被鍨嬪寲鐨勪簨浠舵湇鍔′篃鏈夊緢澶氬凡鐭ョ殑闂錛屼簨瀹炰笂瀹冨湪鐪熸鐜鐨勯儴緗叉槸涓嶅彲鐢ㄧ殑銆侷ce浠庝竴寮濮嬪氨鎻愪緵浜嗙被鍨嬪寲浜嬩歡鐨勬湇鍔°侷ceStorm鏄竴涓珮鏁堛佺被鍨嬪寲浜嬩歡鏈嶅姟鐨勫疄鐜幫紝瀹冩敮鎸佷簨浠惰仈鐩熴?/p> <p>18銆丗acets(澶氭帴鍙?<br />CORBA鏀寔緇ф壙錛孌COM鏀寔鑱氬悎銆傚湪榪囧幓錛屾湁寰堝鍏充簬閭d竴縐嶆槸鏇村ソ鐨勬柟娉曠殑浜夎銆侷ce浠ユ帴鍙g戶鎵垮姞涓婁互澶氭帴鍙e艦寮忕殑鑱氬悎鏉ュ悓鏃舵敮鎸佽繖涓ょ鏂瑰紡銆侳acets鍏佽浣犲湪榪愯鐨勬椂鍊欑敤鍔ㄦ佺殑鑱氬悎鏉ユ墿灞曠被鍨嬫潵鏇夸唬闈欐佺殑緇ф壙銆?/p> <p>19銆丄synchronous Messages(寮傛娑堟伅)<br />CORBA 鏀寔寮傛娑堟伅璋冪敤(AMI)錛屼絾寰堝皯CORBA浜у搧瀹炵幇浜咥MI銆侷ce涓寮濮嬪氨浠ョ畝鍗曞拰鏈夋晥鐨勬柟寮忔敮鎸丄MI銆侷ce涔熸敮鎸佸紓姝ユ秷鎭垎鍙?AMD)錛岃繖鏄疌ORBA閲屽畬鍏ㄦ病鏈夌殑涓滆タ銆侫MD絳変環(huán)浜庡鎴風(fēng)鐨凙MI錛屼笉榪嘇MD鏄敤鍦ㄦ湇鍔″櫒绔殑銆備嬌鐢ˋMI錛屼綘鍙互鍙戦佷簡涓涓姹傦紝鐒跺悗鍦ㄤ互鍚庣殑涓涓簨浠舵敹鍒版湇鍔″櫒鐨勭粨鏋滄椂璋冪敤涓涓洖璋冨嚱鏁版潵澶勭悊榪斿洖鐨勭粨鏋溿傝屼嬌鐢ˋMD錛屼綘鍙互灝嗗垎鍙戠嚎紼嬪綊榪樼粰Ice錛屽茍鍦ㄧ粨鏋滃凡緇忓噯澶囧ソ鍙戦佸埌瀹㈡埛绔椂鍐嶆璋冪敤鍒嗗彂綰跨▼銆?AMI鍜孉MD閮借兘琚繛鎺ヨ搗鏉ワ紝榪欏厑璁鎬綘鍙秷鑰楀緢灝戠殑璧勬簮灝辮兘鏋勫緩楂樻晥鐨勮礬鐢辯▼搴忋?/p> <p>AMI鍜孉MD瀵瑰鎴風(fēng)鍜屾湇鍔″櫒绔潵璇撮兘鏄忔槑鐨勩備篃灝辨槸錛屼竴涓湇鍔″櫒紼嬪簭涓嶇煡閬撲竴涓姹傛槸鍚﹂氳繃AMI璋冪敤鍙戝嚭鐨勮繕鏄悓姝ュ湴璋冪敤鍙戝嚭鐨勶紝瀹㈡埛绔▼搴忎篃涓嶇煡閬撲竴涓搷浣滅殑璋冪敤鍦ㄦ湇鍔″櫒绔槸閫氳繃AMD鍒嗗彂澶勭悊鐨勮繕鏄悓姝ュ湴澶勭悊鐨勩傚綋闇瑕佷嬌鐢ˋMI鍜孉MD鏃訛紝涓嶇敤淇敼Slice銆?/p> <p>緇撴潫璇細(xì)</p> <p>鎴戜滑甯屾湜涓婇潰鐨勮В閲婅兘鍙︿綘嬋鍙戜綘瀵笽ce鐨勫叴瓚c傚鏋滀綘鏈変換浣曠殑闂鎴栬В閲婏紝鎴戜滑浼?xì)閭(gè)璇蜂綘鍔犲叆鎴戜滑鐨勯偖浠跺垪琛ㄣ傛垜浠殑鐩爣鏄笉鏂湴鏀硅繘Ice錛屽洜姝や綘鐨勫弽棣堝鎴戜滑鏉ヨ鏄緢鏈変環(huán)鍊肩殑銆?/p> <p>聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 gigaboy緲昏瘧瀹屾垚浜?005/7/4 3:02</p> <p>聽</p><img src ="http://m.shnenglu.com/lapcca/aggbug/114595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-05-06 12:38 <a href="http://m.shnenglu.com/lapcca/archive/2010/05/06/114595.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://hbsmhy.com" target="_blank">麻豆精品传媒视频</a>| <a href="http://pnxingmei.com" target="_blank">亚洲欧洲日产国码二区</a>| <a href="http://yw5531.com" target="_blank">欧美在现视频</a>| <a href="http://henhenai1.com" target="_blank">亚洲美女精品成人在线视频</a>| <a href="http://621939.com" target="_blank">欧美激情在线播放</a>| <a href="http://www-36900.com" target="_blank">欧美**字幕</a>| <a href="http://lzklpc.com" target="_blank">亚洲第一在线视频</a>| <a href="http://3s3v.com" target="_blank">男人的天堂成人在线</a>| <a href="http://o10669.com" target="_blank">欧美大片在线看</a>| <a href="http://22241com.com" target="_blank">99热这里只有精品8</a>| <a href="http://pgd857.com" target="_blank">亚洲大胆av</a>| <a href="http://660507jj.com" target="_blank">国产三级欧美三级日产三级99</a>| <a href="http://jobmrleehxx.com" target="_blank">欧美福利网址</a>| <a href="http://ncyy4.com" target="_blank">欧美性猛片xxxx免费看久爱</a>| <a href="http://543199.com" target="_blank">国产精品一区二区在线</a>| <a href="http://dacellflex.com" target="_blank">在线播放不卡</a>| <a href="http://6567ya.com" target="_blank">亚洲视频在线一区</a>| <a href="http://16355t.com" target="_blank">蜜臀91精品一区二区三区</a>| <a href="http://8847m.com" target="_blank">亚洲国产一区二区三区a毛片</a>| <a href="http://hy1598.com" target="_blank">亚洲免费成人av</a>| <a href="http://www52y.com" target="_blank">久久五月激情</a>| <a href="http://haole081.com" target="_blank">国产精品日韩久久久</a>| <a href="http://www62265.com" target="_blank">91久久精品网</a>| <a href="http://1390555.com" target="_blank">久久久久久一区</a>| <a href="http://hellomusiczone.com" target="_blank">日韩亚洲精品电影</a>| <a href="http://193youwu.com" target="_blank">久久久夜精品</a>| <a href="http://521nb.com" target="_blank">欧美人与性动交cc0o</a>| <a href="http://yjizz08.com" target="_blank">黄色成人小视频</a>| <a href="http://ipx758.com" target="_blank">日韩亚洲在线</a>| <a href="http://hhh246.com" target="_blank">麻豆精品精品国产自在97香蕉</a>| <a href="http://hellomusiczone.com" target="_blank">噜噜噜躁狠狠躁狠狠精品视频</a>| <a href="http://www72227.com" target="_blank">欧美va天堂在线</a>| <a href="http://778kb.com" target="_blank">亚洲午夜久久久久久尤物</a>| <a href="http://iamsleekcn.com" target="_blank">欧美xxx在线观看</a>| <a href="http://8bc3.com" target="_blank">1024成人网色www</a>| <a href="http://6168138.com" target="_blank">美女精品在线观看</a>| <a href="http://yy306.com" target="_blank">久久久青草婷婷精品综合日韩</a>| <a href="http://100736.com" target="_blank">国产精品综合视频</a>| <a href="http://xdlot.com" target="_blank">久久成人免费电影</a>| <a href="http://9955377.com" target="_blank">欧美一区二区三区电影在线观看</a>| <a href="http://mide776.com" target="_blank">暖暖成人免费视频</a>| <a href="http://096577.com" target="_blank">亚洲人成网在线播放</a>| <a href="http://6k7a.com" target="_blank">久久国产加勒比精品无码</a>| <a href="http://3838418.com" target="_blank">亚洲在线免费观看</a>| <a href="http://km43yy.com" target="_blank">欧美精品黄色</a>| <a href="http://668527.com" target="_blank">欧美大秀在线观看</a>| <a href="http://hzjqkj.com" target="_blank">91久久久一线二线三线品牌</a>| <a href="http://clwjbcxs.com" target="_blank">欧美成人精品高清在线播放</a>| <a href="http://wogoyao.com" target="_blank">欧美电影免费观看高清完整版</a>| <a href="http://ju5558.com" target="_blank">久久久av毛片精品</a>| <a href="http://3bmmxyz.com" target="_blank">麻豆精品网站</a>| <a href="http://9882355.com" target="_blank">在线一区亚洲</a>| <a href="http://hs045.com" target="_blank">欧美成人综合一区</a>| <a href="http://jx963.com" target="_blank">性欧美xxxx视频在线观看</a>| <a href="http://7878168.com" target="_blank">久久香蕉精品</a>| <a href="http://9a9u.com" target="_blank">麻豆成人小视频</a>| <a href="http://lutube666.com" target="_blank">国产一区二区三区免费在线观看 </a>| <a href="http://erodasy.com" target="_blank">欧美体内she精视频</a>| <a href="http://wzxjzx.com" target="_blank">日韩一级片网址</a>| <a href="http://828121.com" target="_blank">久久精品噜噜噜成人av农村</a>| <a href="http://313cq.com" target="_blank">亚洲视频网在线直播</a>| <a href="http://www101804.com" target="_blank">欧美激情精品久久久久久变态</a>| <a href="http://456985.com" target="_blank">国产精品成人一区二区三区夜夜夜</a>| <a href="http://www-9694.com" target="_blank">久久久久久尹人网香蕉</a>| <a href="http://by1422.com" target="_blank">欧美在线一级视频</a>| <a href="http://1116333.com" target="_blank">欧美亚洲在线</a>| <a href="http://2cc8.com" target="_blank">性欧美videos另类喷潮</a>| <a href="http://8111357.com" target="_blank">亚洲国产日韩精品</a>| <a href="http://928uc.com" target="_blank">国产日韩精品在线播放</a>| <a href="http://tsjcmm.com" target="_blank">在线视频一区观看</a>| <a href="http://by1473.com" target="_blank">欧美日韩免费观看一区三区 </a>| <a href="http://7v51.com" target="_blank">欧美一级视频精品观看</a>| <a href="http://176sfsf.com" target="_blank">日韩视频免费看</a>| <a href="http://ycgg008.com" target="_blank">欧美高清视频在线播放</a>| <a href="http://sepapapa8888.com" target="_blank">欧美图区在线视频</a>| <a href="http://alex-bruni.com" target="_blank">亚洲性色视频</a>| <a href="http://84172199.com" target="_blank">亚洲伊人久久综合</a>| <a href="http://hbdfgq.com" target="_blank">经典三级久久</a>| <a href="http://389746.com" target="_blank">一区二区激情小说</a>| <a href="http://8558585.com" target="_blank">欧美视频你懂的</a>| <a href="http://6k7a.com" target="_blank">久久精品网址</a>| <a href="http://jiyixitong.com" target="_blank">日韩午夜剧场</a>| <a href="http://0061366.com" target="_blank">久久精品国产亚洲a</a>| <a href="http://hbdxzx.com" target="_blank">国产一区二区三区四区在线观看</a>| <a href="http://caerusmdx.com" target="_blank">午夜精品久久99蜜桃的功能介绍</a>| <a href="http://9113i.com" target="_blank">欧美国产日韩在线观看</a>| <a href="http://176sfsf.com" target="_blank">国产精品女人久久久久久</a>| <a href="http://667939.com" target="_blank">久久国产成人</a>| <a href="http://yjizz08.com" target="_blank">欧美日韩一区二区免费在线观看 </a>| <a href="http://miaoxp.com" target="_blank">欧美一区二区三区免费视频</a>| <a href="http://hzdss.com" target="_blank">亚洲精品在线三区</a>| <a href="http://wwwqm9.com" target="_blank">一本色道久久综合</a>| <a href="http://9658888.com" target="_blank">亚洲永久免费av</a>| <a href="http://obatshaka.com" target="_blank">久久电影一区</a>| <a href="http://analemi.com" target="_blank">中文日韩欧美</a>| <a href="http://55555549.com" target="_blank">亚洲裸体视频</a>| <a href="http://9486322.com" target="_blank">国产欧美三级</a>| <a href="http://fc3332.com" target="_blank">欧美在线日韩</a>| <a href="http://489633.com" target="_blank">亚洲午夜精品一区二区</a>| <a href="http://my17677.com" target="_blank">一二美女精品欧洲</a>| <a href="http://pansinobbs.com" target="_blank">国产精品女主播在线观看</a>| <a href="http://dddd30.com" target="_blank">久久乐国产精品</a>| <a href="http://6168138.com" target="_blank">99精品免费网</a>| <a href="http://7kz6.com" target="_blank">国产精品视频免费在线观看</a>| <a href="http://668527.com" target="_blank">9l国产精品久久久久麻豆</a>| <a href="http://hongmoyi.com" target="_blank">久久久久久免费</a>| <a href="http://tzhsdy.com" target="_blank">久久精品亚洲一区二区三区浴池</a>| <a href="http://119552.com" target="_blank">亚洲国产欧美在线人成</a>| <a href="http://hdsywang.com" target="_blank">久久免费精品视频</a>| <a href="http://51winner.com" target="_blank">午夜精品国产</a>| <a href="http://szywsj.com" target="_blank">久久精品首页</a>| <a href="http://cczm4.com" target="_blank">蜜桃精品久久久久久久免费影院</a>| <a href="http://56lw.com" target="_blank">久久精品首页</a>| <a href="http://136066.com" target="_blank">欧美大片在线观看</a>| <a href="http://783956.com" target="_blank">亚洲精品久久久蜜桃</a>| <a href="http://7kz6.com" target="_blank">亚洲国产精品美女</a>| <a href="http://540669.com" target="_blank">亚洲精品一区二区三区福利</a>| <a href="http://928uc.com" target="_blank">亚洲精品乱码久久久久久蜜桃91</a>| <a href="http://www-493049.com" target="_blank">欧美韩日高清</a>| <a href="http://sxhrdyb.com" target="_blank">日韩亚洲综合在线</a>| <a href="http://www-136hk.com" target="_blank">亚洲图片欧洲图片日韩av</a>| <a href="http://javliabary.com" target="_blank">亚洲一区二区三区中文字幕在线 </a>| <a href="http://sd-12530.com" target="_blank">亚洲视频在线观看一区</a>| <a href="http://xingba999.com" target="_blank">一区二区免费在线观看</a>| <a href="http://submro.com" target="_blank">亚洲视频一二三</a>| <a href="http://788997.com" target="_blank">久久久国产亚洲精品</a>| <a href="http://www227zh.com" target="_blank">欧美激情四色</a>| <a href="http://cao3e8c8.com" target="_blank">国产欧美一区二区三区视频</a>| <a href="http://060607.com" target="_blank">精品成人国产</a>| <a href="http://aa56789.com" target="_blank">亚洲综合不卡</a>| <a href="http://56701sy.com" target="_blank">亚洲高清中文字幕</a>| <a href="http://www387333.com" target="_blank">亚洲综合久久久久</a>| <a href="http://ywbst8g4tukcsqhioikc.com" target="_blank">久久精品国产第一区二区三区</a>| <a href="http://805185.com" target="_blank">久久综合狠狠综合久久综合88</a>| <a href="http://70909g.com" target="_blank">欧美第十八页</a>| <a href="http://0773ye.com" target="_blank">在线日韩一区二区</a>| <a href="http://www-067.com" target="_blank">亚洲中无吗在线</a>| <a href="http://filmcameralibrary.com" target="_blank">久久久青草婷婷精品综合日韩</a>| <a href="http://senlin86.com" target="_blank">亚洲国产精品成人综合</a>| <a href="http://haose23.com" target="_blank">亚洲图片激情小说</a>| <a href="http://66669801.com" target="_blank">欧美日韩国产精品自在自线</a>| <a href="http://689657.com" target="_blank">国产女人aaa级久久久级</a>| <a href="http://hkbsi.com" target="_blank">亚洲精品男同</a>| <a href="http://xianconnector.com" target="_blank">久久免费国产</a>| <a href="http://www89999.com" target="_blank">日韩亚洲成人av在线</a>| <a href="http://www-440447.com" target="_blank">看欧美日韩国产</a>| <a href="http://belerbb.com" target="_blank">午夜视频在线观看一区</a>| <a href="http://syddzs.com" target="_blank">欧美日韩一级视频</a>| <a href="http://o10669.com" target="_blank">精品不卡视频</a>| <a href="http://9881600.com" target="_blank">免费欧美电影</a>| <a href="http://eastasp.com" target="_blank">久久爱91午夜羞羞</a>| <a href="http://woaigougou.com" target="_blank">欧美日韩国产系列</a>| <a href="http://yiqipapa8.com" target="_blank">又紧又大又爽精品一区二区</a>| <a href="http://www456456.com" target="_blank">久久久噜噜噜久久中文字免</a>| <a href="http://555hhu.com" target="_blank">欧美一区二区三区在线观看视频</a>| <a href="http://javliabary.com" target="_blank">国产精品国产三级国产专播品爱网</a>| <a href="http://shalitao.com" target="_blank">亚洲国产欧美国产综合一区</a>| <a href="http://928uc.com" target="_blank">欧美成人一区二区三区</a>| <a href="http://3344568.com" target="_blank">另类激情亚洲</a>| <a href="http://xiaocao-av.com" target="_blank">亚洲精品亚洲人成人网</a>| <a href="http://72nnnn.com" target="_blank">亚洲激情国产</a>| <a href="http://86868o.com" target="_blank">欧美激情第9页</a>| <a href="http://844985.com" target="_blank">在线视频欧美日韩精品</a>| <a href="http://sclddn.com" target="_blank">老司机67194精品线观看</a>| <a href="http://iacapmm.com" target="_blank">久久久久久黄</a>| <a href="http://thisisfil.com" target="_blank">国内外成人在线视频</a>| <a href="http://987kt.com" target="_blank">久久综合999</a>| <a href="http://gx2020.com" target="_blank">欧美激情一区二区三区不卡</a>| <a href="http://959425.com" target="_blank">亚洲免费精品</a>| <a href="http://pabjzz.com" target="_blank">一本到12不卡视频在线dvd</a>| <a href="http://popowq.com" target="_blank">欧美亚州一区二区三区</a>| <a href="http://22abb.com" target="_blank">欧美在线免费</a>| <a href="http://gs-qintai.com" target="_blank">欧美在线地址</a>| <a href="http://remenkan.com" target="_blank">日韩视频在线一区二区三区</a>| <a href="http://rosi2030.com" target="_blank">欧美成人精品影院</a>| <a href="http://cdcpt.com" target="_blank">国产精品女同互慰在线看</a>| <a href="http://cl6m.com" target="_blank">久久久综合精品</a>| <a href="http://51jieyanla.com" target="_blank">亚洲欧美日本视频在线观看</a>| <a href="http://4008305555.com" target="_blank">国产欧美日韩伦理</a>| <a href="http://wu52vip.com" target="_blank">欧美在线高清视频</a>| <a href="http://520taose.com" target="_blank">麻豆九一精品爱看视频在线观看免费 </a>| <a href="http://44o77.com" target="_blank">欧美欧美天天天天操</a>| <a href="http://422608.com" target="_blank">欧美一区二区在线播放</a>| <a href="http://mimi78.com" target="_blank">久久人人九九</a>| <a href="http://bckxy.com" target="_blank">亚洲一区国产精品</a>| <a href="http://mm77gg.com" target="_blank">欧美激情第一页xxx</a>| <a href="http://scratbag.com" target="_blank">亚洲一区二区三区四区中文</a>| <a href="http://yiluee.com" target="_blank">欧美高清在线视频</a>| <a href="http://lingshidu.com" target="_blank">国产日韩精品久久</a>| <a href="http://84172199.com" target="_blank">亚洲欧洲在线观看</a>| <a href="http://667996.com" target="_blank">亚洲高清不卡</a>| <a href="http://994745.com" target="_blank">久久精品视频导航</a>| <a href="http://ttzbdl.com" target="_blank">久久www成人_看片免费不卡</a>| <a href="http://kk5551.com" target="_blank">欧美精选在线</a>| <a href="http://zqx186.com" target="_blank">亚洲裸体在线观看</a>| <a href="http://7755cc.com" target="_blank">亚洲视频网站在线观看</a>| <a href="http://arielteam.com" target="_blank">老司机一区二区</a>| <a href="http://2312138.com" target="_blank">亚洲欧美日韩国产一区二区</a>| <a href="http://zb557.com" target="_blank">欧美精品午夜视频</a>| <a href="http://663747.com" target="_blank">亚洲理论在线观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>