锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美精品一区,亚洲在线一区二区三区,亚洲欧美中文在线视频http://www.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://www.shnenglu.com/lapcca/archive/2012/06/06/177838.html闃肯闃肯Wed, 06 Jun 2012 14:57:00 GMThttp://www.shnenglu.com/lapcca/archive/2012/06/06/177838.htmlhttp://www.shnenglu.com/lapcca/comments/177838.htmlhttp://www.shnenglu.com/lapcca/archive/2012/06/06/177838.html#Feedback3http://www.shnenglu.com/lapcca/comments/commentRss/177838.htmlhttp://www.shnenglu.com/lapcca/services/trackbacks/177838.html闃呰鍏ㄦ枃

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

鑰屽浜庨潪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>綾誨瀷璇存槑闀垮害
錛堝瓧鑺傦級
鑼冨洿澶囨敞
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瀹炲瀷錛堥暱鍙岀簿搴︼級103.37*10-4932 ~ 1.18*10493219浣嶆湁鏁堜綅




闃肯 2011-04-15 14:02 鍙戣〃璇勮
]]>
C++涓殑鍥涚寮哄埗綾誨瀷杞崲鐨勫尯鍒?[杞琞http://www.shnenglu.com/lapcca/archive/2010/11/30/135081.html闃肯闃肯Tue, 30 Nov 2010 07:37:00 GMThttp://www.shnenglu.com/lapcca/archive/2010/11/30/135081.htmlhttp://www.shnenglu.com/lapcca/comments/135081.htmlhttp://www.shnenglu.com/lapcca/archive/2010/11/30/135081.html#Feedback3http://www.shnenglu.com/lapcca/comments/commentRss/135081.htmlhttp://www.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綾誨瀷錛屼絾娌℃湁榪愯鏃剁被鍨嬫鏌ユ潵淇濊瘉杞崲鐨勫畨鍏ㄦс傚畠涓昏鏈夊涓嬪嚑縐嶇敤娉曪細

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

聽 榪涜涓婅杞崲錛堟妸瀛愮被鐨勬寚閽堟垨寮曠敤杞崲鎴愬熀綾昏〃紺猴級鏄畨鍏ㄧ殑錛?/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鐨勬晥鏋滄槸涓鏍風殑錛?/p>

鍦ㄨ繘琛屼笅琛岃漿鎹㈡椂錛宒ynamic_cast鍏鋒湁綾誨瀷媯鏌ョ殑鍔熻兘錛屾瘮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鏄竴鏍風殑錛屽茍涓斿榪欎袱涓寚閽堟墽琛孌綾誨瀷鐨勪換浣曟搷浣滈兘鏄畨鍏ㄧ殑錛?/p>

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

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

鍙﹀瑕佹敞鎰忥細B瑕佹湁铏氬嚱鏁幫紝鍚﹀垯浼氱紪璇戝嚭閿欙紱static_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>

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

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

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

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

4 const_cast

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

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

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

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

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

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

}

涓婇潰鐨勪唬鐮佺紪璇戞椂浼氭姤閿欙紝鍥犱負b1鏄竴涓父閲忓璞★紝涓嶈兘瀵瑰畠榪涜鏀瑰彉錛?/p>

浣跨敤const_cast鎶婂畠杞崲鎴愪竴涓父閲忓璞★紝灝卞彲浠ュ瀹冪殑鏁版嵁鎴愬憳浠繪剰鏀瑰彉銆傛敞鎰忥細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瑕嗙洊鐨勫彉鎹㈢被鍨嬮櫎綾誨眰嬈$殑闈欐佸鑸互澶栵紝榪樺寘鎷棤鏄犲皠鍙樻崲銆佺獎鍖栧彉鎹?榪欑鍙樻崲浼氬鑷村璞″垏鐗?涓㈠け淇℃伅)銆佺敤VOID*鐨勫己鍒跺彉鎹€侀殣寮忕被鍨嬪彉鎹㈢瓑...

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

== static_cast .vs. reinterpret_cast

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

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

static_cast 鍜?reinterpret_cast 鎿嶄綔絎︿慨鏀逛簡鎿嶄綔鏁扮被鍨嬨傚畠浠笉鏄簰閫嗙殑錛?static_cast 鍦ㄧ紪璇戞椂浣跨敤綾誨瀷淇℃伅鎵ц杞崲錛屽湪杞崲鎵ц蹇呰鐨勬嫻?璇稿鎸囬拡瓚婄晫璁$畻, 綾誨瀷媯鏌?. 鍏舵搷浣滄暟鐩稿鏄畨鍏ㄧ殑銆傚彟涓鏂歸潰錛況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 鍖呭惈鏃犵敤鍊? 榪欐槸鍥犱負 reinterpret_cast 浠呬粎鏄鍒?n 鐨勬瘮鐗逛綅鍒?d, 娌℃湁榪涜蹇呰鐨勫垎鏋?

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



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

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

闃肯 2010-11-03 15:26 鍙戣〃璇勮
]]>
[鍒嗕韓鏀惰棌]IP鍗忚鏃忓崗璁ご緇撴瀯http://www.shnenglu.com/lapcca/archive/2010/11/03/132295.html闃肯闃肯Wed, 03 Nov 2010 07:23:00 GMThttp://www.shnenglu.com/lapcca/archive/2010/11/03/132295.htmlhttp://www.shnenglu.com/lapcca/comments/132295.htmlhttp://www.shnenglu.com/lapcca/archive/2010/11/03/132295.html#Feedback0http://www.shnenglu.com/lapcca/comments/commentRss/132295.htmlhttp://www.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://www.shnenglu.com/lapcca/archive/2010/11/03/132274.html闃肯闃肯Wed, 03 Nov 2010 03:28:00 GMThttp://www.shnenglu.com/lapcca/archive/2010/11/03/132274.htmlhttp://www.shnenglu.com/lapcca/comments/132274.htmlhttp://www.shnenglu.com/lapcca/archive/2010/11/03/132274.html#Feedback0http://www.shnenglu.com/lapcca/comments/commentRss/132274.htmlhttp://www.shnenglu.com/lapcca/services/trackbacks/132274.html
/* ********************************************************************** */
// 聽int聽a2i(const聽char聽*s)聽鍑芥暟鍘熷艦聽
// 鍔熻兘:聽鎶妔鎵鎸囧悜鐨勫瓧絎︿覆杞崲鎴恑nt綾誨瀷;
// 榪斿洖鍊鹼細瀛楃涓茬殑杞崲鍊箋?br /> //
// 聽double聽a2f(const聽char聽*s)聽鍑芥暟鍘熷艦聽
// 鍔熻兘:聽鎶妔鎵鎸囧悜鐨勫瓧絎︿覆杞崲鎴恉ouble綾誨瀷;
// 榪斿洖鍊鹼細瀛楃涓茬殑杞崲鍊箋?/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://www.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://www.shnenglu.com/lapcca/archive/2010/10/25/131176.html</guid><wfw:comment>http://www.shnenglu.com/lapcca/comments/131176.html</wfw:comment><comments>http://www.shnenglu.com/lapcca/archive/2010/10/25/131176.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/lapcca/comments/commentRss/131176.html</wfw:commentRss><trackback:ping>http://www.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瀹炵幇緇嗚妭鐨勬娊璞★紝鍏朵腑鍖呮嫭浜嬩歡澶勭悊銆佸浘鍍忔敮鎸併佷紭闆呴檷綰э紙鎴栨笎榪涘寮猴級銆佸強鑹ソ鐨刄RL澶勭悊銆?/p> <p>涓庡叾浠栬澶氬熀浜庨〉闈㈢殑寮鍙戞鏋剁浉姣旓紝Wt鍙互鍒涘緩鐘舵佸寲鐨勫簲鐢紝鍚屾椂瀹炵幇浜嗛珮搴︾殑浜や簰鎬у拰鍙闂э紱鍏朵氦浜掓т綋鐜板湪Wt鍙互緇煎悎浣跨敤鍚勭鎶鏈紝濡侫jax絳夛紱鍏跺彲璁塊棶鎬т綋鐜板湪Wt鍙互浣垮簲鐢ㄥ湪蹇呰鐨勬椂鍊欐敮鎸佺函HTML嫻忚鍣紱榪欎簺鐗規х殑鑾峰緱鍏呭垎鍒╃敤浜嗚嚜鍔ㄧ殑<b>浼橀泤闄嶇駭鎴栨笎榪涘寮?/b>銆?/p> <p>Wt搴撹繕鑷甫浜嗗簲鐢ㄦ湇鍔″櫒紼嬪簭錛屽彲閰嶇疆涓虹嫭绔嬬殑Web鏈嶅姟鍣紝褰撶劧涔熷厑璁擱氳繃FastCGI榪炲悓鍏朵粬Web鏈嶅姟鍣ㄨ繘琛屾暣鍚堛?/p> <h4>浜や簰鎬с佸畨鍏ㄦс佸彲璁塊棶鎬?/h4> <p>鍩轟簬欏甸潰鐨勫紑鍙戞鏋訛紙濡侾HP銆丣SP/JSF銆丷uby on Rails絳夛級娌℃湁瀹炵幇搴曞眰鍩虹鎶鏈殑鎶借薄錛岃繖浜涙妧鏈寘鎷琀TML/XHTML銆丣avaScript銆丆SS銆丄jax銆丗orms銆丏HTML 銆丼VG/VML/Canvas絳夈傛樉鐒訛紝鍩轟簬欏甸潰鐨勫紑鍙戞鏋跺繀欏昏姹傚紑鍙戣呴殢鏃剁啛鎮夊拰鎺屾彙榪欎簺鍩烘湰鎶鏈紝鍚屾椂褰撴祻瑙堝櫒涓嶆敮鎸佹椂錛岃繕瑕佷負搴旂敤鐨勪紭闆呴檷綰ц礋璐c傚彟澶栵紝濡傛灉搴旂敤閲囧彇鏃╂湡HTML欏甸潰涓轟腑蹇冪殑璁捐妯″紡錛屽紑鍙戣呬笉浠呰瀹炵幇鎺у埗鍣ㄤ互鍛婅瘔鐢ㄦ埛濡備綍浠庝竴涓〉闈㈣煩杞埌鍙︿竴涓〉闈紝鑰屼笖榪樿鍦ㄩ噰鐢ㄤ竴浜涢珮綰jax鎶鏈椂鎵嬪伐璁捐鍜岀淮鎶ゅ鎴風涓庢湇鍔″櫒绔殑閫氳銆?/p> <p>鍙︿竴鏂歸潰錛屽氨綆楁槸綰補鐨凙jax妗嗘灦錛屼篃瑕佹眰寮鍙戣呴氳繃綣佹潅鐨凧avaScript緙栫▼鏉ュ鐞嗘祻瑙堝櫒鐨勬紓琛屼負鍜屽鎴風涓庢湇鍔″櫒绔棿鐨勫畨鍏ㄩ氳錛岃繖浜涘鐞嗕換浣曚漢閮戒笉鑳借煩榪囧幓涓嶄笌鐞嗕細銆傚悓鏃訛紝榪欎簺搴旂敤閫氬父涓嶈兘絎﹀悎鍙闂х殑鍘熷垯錛屼篃涓嶈兘寰堝ソ琚悳绱㈡満鍣ㄤ漢绱㈠紩鍒般?/p> <p>瀹夊叏鏂歸潰錛岀敓鎴怘TML鎴栧~鍏匟TML妯$増寰堝鏄撳鑷村畨鍏ㄩ棶棰橈紝濡?a >璺ㄧ珯鑴氭湰錛圶SS錛?</a>鍜?a > 璺ㄧ珯璇鋒眰浼狅紙CSRF錛?/a>錛沊SS闂涓鑸敱錛堢枏蹇斤級鍏佽宓屽叆JavaScript浠g爜寮曡搗錛?CSRF闂涓鑸敱錛堢浉淇★級Cookies錛堝彲錛変綔涓鴻璇佹墜孌靛紩璧楓備綔涓哄紑鍙戣咃紝榪欎簺瀹夊叏闂灝嗘槸寰堥毦閬垮厤鐨勶紝鍥犱負鎴戜滑鏈夋椂闇瑕佸厑璁哥敤鎴鋒彃鍏ヨ嚜宸辯殑JavaScript 浠g爜鏉ュ疄鐜版煇浜涘姛鑳斤紝浣嗗紑鍙戞鏋舵湰韜嵈娌℃彁渚涚粰鎴戜滑榪囨護鏈哄埗銆?/p> <p>鐩稿弽錛屼嬌鐢╓t鏉ラ儴緗瞁eb搴旂敤鍙互瀹屽叏鐢–++鏉ュ紑鍙戯紝Wt鑷姩浜х敓鎵蹇呴』鐨?HTML/XHTML銆丆SS銆丣avascript銆丆GI銆丼VG/VML/Canvas鍜孉jax浠g爜錛涗笌姝ゅ悓鏃訛紝浠g爜鐨勫畨鍏ㄦу拰嫻忚鍣ㄥ吋瀹規х瓑闂閮藉皢杞氦緇橶t銆備緥濡傦紝鍦ㄥ彲鑳界殑鎯呭喌涓嬶紝 Wt灝嗘渶澶ч檺搴︾殑浣跨敤JavaScript鍜孉jax錛屼絾鍦ˋjax鍔熻兘鍙楅檺鏃訛紝Wt涔熻兘淇濊瘉緋葷粺鍔熻兘榪愯姝e父銆傚叾鍘熺悊鏄疻t灝嗗厛鍚敤綰疕TML/CGI搴旂敤錛岄殢鍚庡湪鍙兘鐨勬儏鍐典笅娓愯繘澧炲己鑷矨jax搴旂敤銆傚彟澶栵紝Wt鎻愪緵浜嗗唴緗殑瀹夊叏鎬ц冭檻銆?/p> <h4>鍏稿瀷搴旂敤涓鵑殔錛?/h4> <ul> <li>鐢變簬Wt C++ Web搴旂敤鏈嶅姟鍣ㄥ崰鐢ㄨ緝灝忕殑鐗╃悊絀洪棿錛屾晠鑰屽彲浠ヤ負<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搴旂敤錛岃繖鏍風殑搴旂敤 涓鑸叿鏈夐珮搴﹀畾鍒躲佸厖鍒嗗埄鐢ˋjax鐨勭壒鐐癸紝鍚屾椂鍏鋒湁瀹屽叏鐨勫彲璁塊棶鎬у拰杈冮珮鐨?鎼滅儲寮曟搸浼樺寲(SEO)闇姹?/li> </ul> <h4>浣跨敤Wt鐨勫叾浠栧ソ澶?/h4> <ul> <li>鍙互浣跨敤鎴戜滑鐔熸倝鐨勬闈UI妯″紡寮鍙慦eb搴旂敤錛?/li> <li>Wt涓烘垜浠彁渚涗簡騫塊様鐨剋idgets闆嗭紝榪欎簺widgets鍙互鍦ㄧ幆澧冧笉鏀寔 JavaScript鐨勬儏鍐典笅鐓у父宸ヤ綔錛堝綋鐒訛紝濡傛灉鏀寔鍒欐晥鏋滄洿浣籌級錛?/li> <li>鍦╓t涓鎴風涓庢湇鍔″櫒绔殑楠岃瘉鍜屼簨浠跺鐞嗛噰鐢ㄥ悓涓瑙勮寖錛?/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鍙互閬垮厤甯歌鐨勫畨鍏ㄩ棶棰橈紝鍥犱負Wt鎷ユ湁瀵硅〃紺哄眰鐨勫畬鍏ㄦ帶鍒訛紝騫惰兘澶熶富鍔?榪囨護鎺?i>澶勪簬媧誨姩鐘舵佺殑</i>鏍囩鍜屽睘鎬э紱Wt鍚屾椂瀹炵幇浜嗕笟鍔¢昏緫鐨勯殣钘忥紝騫?閫氳繃鐘舵佸寲鐨勮璁$畝鍖栦簡璁よ瘉鏈哄埗錛?/li> <li>鍩轟簬Wt鐨勫簲鐢ㄧ殑杞藉叆鏃墮棿鏋佺煭涓斿崰鐢ㄥ甫瀹戒篃寰堜綆錛岀┒鍏跺師鍥犳槸Wt涓繖浜涚壒鐐?浠呭彈闄愪簬欏甸潰鏄劇ず鐨勫鏉傜▼搴︼紝鑰屼笉鏄簲鐢ㄧ▼搴忚嚜韜殑灝哄錛沇t榪樺疄鐜頒簡鎵鏈夌殑 甯哥敤鎶宸у拰鏂規硶錛屼互浼樺寲搴旂敤鐨勫揩閫熷弽搴旓紝Wt鍑犱箮鍋氬埌浜嗛拡瀵規墍鏈夋祻瑙堝櫒鐨勪紭鍖栵紱</li> <li>Wt鎻愪緵浜嗘湇鍔″櫒绔垵濮嬬殑浜嬩歡澶勭悊錛屽嵆<i>鏈嶅姟鍣ㄦ帹</i>鎴?i>Comet</i>錛?榪欓儴鍒咥PI浣跨敤綆鍗曘佺ǔ瀹氫笖鍦ㄦ墍鏈夋祻瑙堝櫒涓婂潎鑳藉疄鐜幫紱</li> <li>Wt鍦ㄦ湇鍔″櫒閮ㄧ講涓婏紝鏃㈠彲浠ヤ嬌鐢ㄥ唴緗殑httpd錛屽張鍙互浣跨敤FastCGI/ISAPI錛?褰撶劧鍓嶈呭疄鏂借搗鏉ユ洿綆渚挎槗琛屻?/li> </ul><img src ="http://www.shnenglu.com/lapcca/aggbug/131176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-10-25 11:57 <a href="http://www.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://www.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://www.shnenglu.com/lapcca/archive/2010/09/30/128122.html</guid><wfw:comment>http://www.shnenglu.com/lapcca/comments/128122.html</wfw:comment><comments>http://www.shnenglu.com/lapcca/archive/2010/09/30/128122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lapcca/comments/commentRss/128122.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lapcca/services/trackbacks/128122.html</trackback:ping><description><![CDATA[<img src="http://www.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 />鏈榪戝涔燩E鏂囦歡錛屻婅蔣浠跺姞瀵嗘妧鏈唴騫曘嬬涓绔犳湁璇︾粏鐨勮瑙?br />涓嶈繃鐪嬩簡鍗婂ぉ鎼炵殑澶村埌鏅曚簡錛岀粨鏋勫お澶氾紝鏈鍚庤嚜宸辨煡鐪媁INNT.H澶存枃浠?br />鎶奝E澶翠腑鐨勭粨鏋勭敾浜嗕竴寮犲浘錛屽湪鐪嬩功瀛︿範鐨勬椂鍊欒竟鐪嬩功杈圭湅鍥懼涔犵悊瑙h緝蹇紒<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://www.shnenglu.com/lapcca/aggbug/128122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-09-30 12:23 <a href="http://www.shnenglu.com/lapcca/archive/2010/09/30/128122.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>DLL鍦ㄥ簲鐢ㄧ▼搴忛棿鍏變韓鏁版嵁http://www.shnenglu.com/lapcca/archive/2010/09/17/126860.html闃肯闃肯Fri, 17 Sep 2010 05:38:00 GMThttp://www.shnenglu.com/lapcca/archive/2010/09/17/126860.htmlhttp://www.shnenglu.com/lapcca/comments/126860.htmlhttp://www.shnenglu.com/lapcca/archive/2010/09/17/126860.html#Feedback1http://www.shnenglu.com/lapcca/comments/commentRss/126860.htmlhttp://www.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://www.shnenglu.com/lapcca/archive/2010/09/13/126499.html闃肯闃肯Mon, 13 Sep 2010 03:52:00 GMThttp://www.shnenglu.com/lapcca/archive/2010/09/13/126499.htmlhttp://www.shnenglu.com/lapcca/comments/126499.htmlhttp://www.shnenglu.com/lapcca/archive/2010/09/13/126499.html#Feedback0http://www.shnenglu.com/lapcca/comments/commentRss/126499.htmlhttp://www.shnenglu.com/lapcca/services/trackbacks/126499.html 聽聽



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

闃肯 2010-08-27 16:26 鍙戣〃璇勮
]]>
瀹氫綅IAT騫惰緭鍑哄鍏ュ嚱鏁板悕縐板拰瀵瑰簲鐨勫嚱鏁板湴鍧http://www.shnenglu.com/lapcca/archive/2010/08/23/124404.html闃肯闃肯Mon, 23 Aug 2010 05:22:00 GMThttp://www.shnenglu.com/lapcca/archive/2010/08/23/124404.htmlhttp://www.shnenglu.com/lapcca/comments/124404.htmlhttp://www.shnenglu.com/lapcca/archive/2010/08/23/124404.html#Feedback0http://www.shnenglu.com/lapcca/comments/commentRss/124404.htmlhttp://www.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( " 聽聽聽浠庢妯″潡瀵煎叆鐨勫嚱鏁幫細%-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://www.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://www.shnenglu.com/lapcca/archive/2010/08/23/124400.html</guid><wfw:comment>http://www.shnenglu.com/lapcca/comments/124400.html</wfw:comment><comments>http://www.shnenglu.com/lapcca/archive/2010/08/23/124400.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/lapcca/comments/commentRss/124400.html</wfw:commentRss><trackback:ping>http://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽聽4</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽11</span> <span style="COLOR: #000000"> <img src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽12</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽17</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽31</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽42</span> <span style="COLOR: #000000"> <img src="http://www.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://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽44</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽51</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽57</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽60</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽71</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /> </span> <span style="COLOR: #008080">聽74</span> <span style="COLOR: #000000"> <img src="http://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p>聽</p> <p> </p> <p>鏈変釜閮侀椃鐨勯棶棰橈紝鍦?003sp1涓嬶紝涓嶇鏄彁鍗囪繘紼嬫潈闄愯繕鏄慨鏀瑰唴瀛樺寘鍚睘鎬ч兘鎴愬姛錛乨ebug鐗堟湰鑳芥垚鍔燂紒release灝變粬濞樼殑姝諱笉鎴愬姛錛侀儊闂鋒錛岄亶瀵婚珮鎵嬫棤鐫钀斤紝鏆傛椂絳夌潃鍏堛傘傘?/p><img src ="http://www.shnenglu.com/lapcca/aggbug/124400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-08-23 13:15 <a href="http://www.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://www.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://www.shnenglu.com/lapcca/archive/2010/06/18/118184.html</guid><wfw:comment>http://www.shnenglu.com/lapcca/comments/118184.html</wfw:comment><comments>http://www.shnenglu.com/lapcca/archive/2010/06/18/118184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lapcca/comments/commentRss/118184.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lapcca/services/trackbacks/118184.html</trackback:ping><description><![CDATA[棣栧厛浠嬬粛涓涓媁inlogon銆俉indows 2000/NT鏈変笁縐嶇郴緇熺姸鎬侊細娌℃湁鐢ㄦ埛鐧誨綍鐘舵併佺敤鎴鋒垚鍔熺櫥褰曠姸鎬佷互鍙婂伐浣滅珯閿佸畾鐘舵併俉inlogon鏄疻indows 2000/NT鎿嶄綔緋葷粺鎻愪緵浜や簰寮忕櫥褰曟敮鎸佺殑緇勪歡銆俉inlogon鏈変笁涓粍鎴愰儴鍒嗭細鍙墽琛屾枃浠秝inlogon.exe錛屾彁渚涘浘褰㈢晫闈㈣璇佸姛鑳界殑鍔ㄦ佸簱 Gina Dll錛屼互鍙婁竴浜涚綉緇滄湇鍔℃彁渚涘姩鎬佸簱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錛屼互鎻愪緵鍏朵粬濡傛櫤鑳藉崱銆佽緗戣啘銆佹寚綰規垨鍏朵粬涓浜涜璇佹満鍒躲?<br />寮鍙戣嚜瀹氫箟鐨凣ina Dll銆傚繀欏誨疄鐜板茍瀵煎嚭涓巜inlogon.exe浜や簰鐨?8涓爣鍑嗗嚱鏁版帴鍙o細 <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 />// 鐢ㄦ埛鐧婚檰鎴愬姛鍚庯紝Winlogon.exe璋冪敤璇ュ嚱鏁板惎鍔ㄧ敤鎴峰澹崇▼搴?<br />l VOID WINAPI WlxDisplayLockedNotice(PVOID pWlxContext) <br />// 褰撶郴緇熷浜庨攣瀹氱姸鎬佹椂錛學inlogon.exe璋冪敤璇ュ嚱鏁?<br />// 鏄劇ず涓浜涗俊鎭紝濡傞攣瀹氳呫侀攣瀹氭椂闂寸瓑 <br />l VOID WINAPI WlxDisplaySASNotice(PVOID pWlxContext) <br />// 褰撴病鏈変換浣曠敤鎴風櫥闄嗘椂錛學inlogon.exe璋冪敤璇ュ嚱鏁版樉紺轟竴浜涙彁紺轟俊鎭?<br />// 鍙互鏍規嵁鐢ㄦ埛鐨勫姩浣滄ā鎷烻AS浜嬩歡鐨勫彂閫?<br />l BOOL WINAPI WlxDisplayStatusMessage(PVOID pWlxContext, <br />HDESK hDesktop, <br />DWORD dwOptions, <br />PWSTR pTitle, <br />PWSTR pMessage) <br />// 褰揼ina dll瑕佹樉紺轟竴浜涗俊鎭椂錛學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 />// 鍦ㄦ病鏈変換浣曚竴涓敤鎴風櫥闄嗙殑鎯呭喌涓嬶紝Winlogon.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 />// 鍦ㄧ郴緇熷叧闂箣鍓嶏紝Winlogon.exe璋冪敤璇ュ嚱鏁?<br />// 鍏佽gina dll澶勭悊涓浜涚郴緇熷叧闂墠鐨勫鐞?<br />l BOOL WINAPI WlxStartApplication(PVOID pWlxContext, <br />PWSTR pszDesktopName, <br />PVOID pEnvironment, <br />PWSTR pszCmdLine) <br />// 褰撶郴緇熻姹傚湪鐢ㄦ埛涓婁笅鏂囦腑鍚姩紼嬪簭錛學inlogon.exe璋冪敤璇ュ嚱鏁?<br />// 榪欑鎯呭喌鍙戠敓鍦細嫻忚鍣ㄩ潪姝e父鍏抽棴闇瑕侀噸鍚垨闇瑕佸惎鍔ㄦ墿灞曠殑浠誨姟// 綆$悊鍣?<br />// 璇ユ帴鍙ina dll鍙互閫夋嫨鎬у疄鐜?<br />l int WINAPI WlxWkstaLockedSAS(PVOID pWlxContext, DWORD dwSasType) <br />// 鍦ㄩ攣瀹氱姸鎬佷笅錛學inlogon.exe鎺ユ敹鍒癝AS浜嬩歡璋冪敤璇ュ嚱鏁?<br /><br />鍏朵腑WlxNegotiate鏄痺inlogon.exe璋冪敤鐨勭涓涓帴鍙e嚱鏁幫紝榪涜蹇呰鐨勭増鏈垽鏂紝闅忓悗璋冪敤鐨勬槸WlxInitialize錛屼富瑕佸畬鎴?winlogon.exe鐗瑰畾鐗堟湰鐨勫嚱鏁板垎媧捐〃鍚慓ina Dll鐨勪紶閫掋傛渶涓昏鐨勬槸WlxLoggedOnSAS鍑芥暟錛岃繖涓嚱鏁頒富瑕佺殑鍔熻兘鏄紝褰搘inlogon鍦ㄧ櫥褰曟垚鍔熺姸鎬佷笅錛屾帴鏀跺埌SAS浜嬩歡錛屼簬鏄皟鐢ㄨ繖 涓嚱鏁拌繘琛孲AS浜嬩歡鐨勮瘑鍒互鍙婅繘琛屽悇浜嬩歡鐨勭浉搴斿鐞嗐?<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鏂囦歡鍚嶄負MyGina.dll銆傚皢璇ユ枃浠舵斁鍒頒互涓嬭礬寰勶細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://www.shnenglu.com/lapcca/aggbug/118184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-06-18 17:58 <a href="http://www.shnenglu.com/lapcca/archive/2010/06/18/118184.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍫嗗拰鏍堢殑鍖哄埆http://www.shnenglu.com/lapcca/archive/2010/06/10/117528.html闃肯闃肯Thu, 10 Jun 2010 01:38:00 GMThttp://www.shnenglu.com/lapcca/archive/2010/06/10/117528.htmlhttp://www.shnenglu.com/lapcca/comments/117528.htmlhttp://www.shnenglu.com/lapcca/archive/2010/06/10/117528.html#Feedback0http://www.shnenglu.com/lapcca/comments/commentRss/117528.htmlhttp://www.shnenglu.com/lapcca/services/trackbacks/117528.html涓銆侀澶囩煡璇嗏旂▼搴忕殑鍐呭瓨鍒嗛厤聽
聽 涓涓敱C/C++緙栬瘧鐨勭▼搴忓崰鐢ㄧ殑鍐呭瓨鍒嗕負浠ヤ笅鍑犱釜閮ㄥ垎聽
聽 1銆佹爤鍖猴紙stack錛夆斅犅?鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁聽聽 錛屽瓨鏀懼嚱鏁扮殑鍙傛暟鍊鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾聽
聽 鎿嶄綔鏂瑰紡綾諱技浜庢暟鎹粨鏋勪腑鐨勬爤銆偮?
聽 2銆佸爢鍖猴紙heap錛壜犅?鈥斅犅?涓鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝聽聽 鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱OS鍥灺?
聽 鏀堵犅?銆傛敞鎰忓畠涓庢暟鎹粨鏋勪腑鐨勫爢鏄袱鍥炰簨錛屽垎閰嶆柟寮忓掓槸綾諱技浜庨摼琛紝鍛靛懙銆偮?
聽 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錛浡犅?鍏ㄥ眬錛堥潤鎬侊級鍒濆鍖栧尯聽聽聽
聽 p1聽聽 =聽聽 (char聽聽 *)malloc(10);聽聽聽
聽 p2聽聽 =聽聽 (char聽聽 *)malloc(20);聽聽聽
聽 鍒嗛厤寰楁潵寰?0鍜?0瀛楄妭鐨勫尯鍩熷氨鍦ㄥ爢鍖恒偮犅犅?
聽 strcpy(p1,聽聽 "123456");聽聽 123456\0鏀懼湪甯擱噺鍖猴紝緙栬瘧鍣ㄥ彲鑳戒細灝嗗畠涓巔3鎵鎸囧悜鐨?123456"聽
聽 浼樺寲鎴愪竴涓湴鏂廣偮犅犅?
聽 }聽聽聽
聽聽
聽聽
聽 浜屻佸爢鍜屾爤鐨勭悊璁虹煡璇喡犅犅?
聽 2.1鐢寵鏂瑰紡聽聽聽
聽 stack:聽聽聽
聽 鐢辯郴緇熻嚜鍔ㄥ垎閰嶃偮犅?渚嬪錛屽0鏄庡湪鍑芥暟涓竴涓眬閮ㄥ彉閲徛犅?int聽聽 b;聽聽 緋葷粺鑷姩鍦ㄦ爤涓負b寮杈熺┖聽
聽 闂綽犅犅?
聽 heap:聽聽聽
聽 闇瑕佺▼搴忓憳鑷繁鐢寵錛屽茍鎸囨槑澶у皬錛屽湪c涓璵alloc鍑芥暟聽聽聽
聽 濡俻1聽聽 =聽聽 (char聽聽 *)malloc(10);聽聽聽
聽 鍦–++涓敤new榪愮畻絎β犅犅?
聽 濡俻2聽聽 =聽聽 new聽聽 char[10];聽聽聽
聽 浣嗘槸娉ㄦ剰p1銆乸2鏈韓鏄湪鏍堜腑鐨勩偮犅犅?
聽聽
聽聽
聽 2.2聽聽聽
聽 鐢寵鍚庣郴緇熺殑鍝嶅簲聽聽聽
聽 鏍堬細鍙鏍堢殑鍓╀綑絀洪棿澶т簬鎵鐢寵絀洪棿錛岀郴緇熷皢涓虹▼搴忔彁渚涘唴瀛橈紝鍚﹀垯灝嗘姤寮傚父鎻愮ず鏍堟孩聽
聽 鍑恒偮犅犅?
聽 鍫嗭細棣栧厛搴旇鐭ラ亾鎿嶄綔緋葷粺鏈変竴涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛紝褰撶郴緇熸敹鍒扮▼搴忕殑鐢寵鏃訛紝聽
聽 浼氶亶鍘嗚閾捐〃錛屽鎵劇涓涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨勫爢緇撶偣錛岀劧鍚庡皢璇ョ粨鐐逛粠絀洪棽緇撶偣閾捐〃聽
聽 涓垹闄わ紝騫跺皢璇ョ粨鐐圭殑絀洪棿鍒嗛厤緇欑▼搴忥紝鍙﹀錛屽浜庡ぇ澶氭暟緋葷粺錛屼細鍦ㄨ繖鍧楀唴瀛樼┖闂翠腑鐨劼?
聽 棣栧湴鍧澶勮褰曟湰嬈″垎閰嶇殑澶у皬錛岃繖鏍鳳紝浠g爜涓殑delete璇彞鎵嶈兘姝g‘鐨勯噴鏀炬湰鍐呭瓨絀洪棿銆偮?
聽 鍙﹀錛岀敱浜庢壘鍒扮殑鍫嗙粨鐐圭殑澶у皬涓嶄竴瀹氭濂界瓑浜庣敵璇風殑澶у皬錛岀郴緇熶細鑷姩鐨勫皢澶氫綑鐨勯偅閮?
聽 鍒嗛噸鏂版斁鍏ョ┖闂查摼琛ㄤ腑銆偮犅犅?
聽聽
聽 2.3鐢寵澶у皬鐨勯檺鍒堵犅犅?
聽 鏍堬細鍦╓indows涓?鏍堟槸鍚戜綆鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄竴鍧楄繛緇殑鍐呭瓨鐨勫尯鍩熴傝繖鍙ヨ瘽鐨勬剰聽
聽 鎬濇槸鏍堥《鐨勫湴鍧鍜屾爤鐨勬渶澶у閲忔槸緋葷粺棰勫厛瑙勫畾濂界殑錛屽湪WINDOWS涓嬶紝鏍堢殑澶у皬鏄?M錛堜篃鏈壜?
聽 鐨勮鏄?M錛屾諱箣鏄竴涓紪璇戞椂灝辯‘瀹氱殑甯告暟錛夛紝濡傛灉鐢寵鐨勭┖闂磋秴榪囨爤鐨勫墿浣欑┖闂存椂錛屽皢聽
聽 鎻愮ずoverflow銆傚洜姝わ紝鑳戒粠鏍堣幏寰楃殑絀洪棿杈冨皬銆偮犅犅?
聽 鍫嗭細鍫嗘槸鍚戦珮鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄笉榪炵畫鐨勫唴瀛樺尯鍩熴傝繖鏄敱浜庣郴緇熸槸鐢ㄩ摼琛ㄦ潵瀛樺偍聽
聽 鐨勭┖闂插唴瀛樺湴鍧鐨勶紝鑷劧鏄笉榪炵畫鐨勶紝鑰岄摼琛ㄧ殑閬嶅巻鏂瑰悜鏄敱浣庡湴鍧鍚戦珮鍦板潃銆傚爢鐨勫ぇ灝徛?
聽 鍙楅檺浜庤綆楁満緋葷粺涓湁鏁堢殑铏氭嫙鍐呭瓨銆傜敱姝ゅ彲瑙侊紝鍫嗚幏寰楃殑絀洪棿姣旇緝鐏墊椿錛屼篃姣旇緝澶с偮犅犅?
聽聽
聽聽
聽聽
聽 2.4鐢寵鏁堢巼鐨勬瘮杈冿細聽聽聽
聽 鏍堢敱緋葷粺鑷姩鍒嗛厤錛岄熷害杈冨揩銆備絾紼嬪簭鍛樻槸鏃犳硶鎺у埗鐨勩偮犅犅?
聽 鍫嗘槸鐢眓ew鍒嗛厤鐨勫唴瀛橈紝涓鑸熷害姣旇緝鎱紝鑰屼笖瀹規槗浜х敓鍐呭瓨紕庣墖,涓嶈繃鐢ㄨ搗鏉ユ渶鏂逛究.聽聽聽
聽 鍙﹀錛屽湪WINDOWS涓嬶紝鏈濂界殑鏂瑰紡鏄敤VirtualAlloc鍒嗛厤鍐呭瓨錛屼粬涓嶆槸鍦ㄥ爢錛屼篃涓嶆槸鍦ㄦ爤鏄?
聽 鐩存帴鍦ㄨ繘紼嬬殑鍦板潃絀洪棿涓繚鐣欎竴鍧楀唴瀛橈紝铏界劧鐢ㄨ搗鏉ユ渶涓嶆柟渚褲備絾鏄熷害蹇紝涔熸渶鐏墊椿銆偮?
聽聽聽聽
聽聽
聽 2.5鍫嗗拰鏍堜腑鐨勫瓨鍌ㄥ唴瀹孤犅犅?
聽 鏍堬細聽聽 鍦ㄥ嚱鏁拌皟鐢ㄦ椂錛岀涓涓繘鏍堢殑鏄富鍑芥暟涓悗鐨勪笅涓鏉℃寚浠わ紙鍑芥暟璋冪敤璇彞鐨勪笅涓鏉″彲聽
聽 鎵ц璇彞錛夌殑鍦板潃錛岀劧鍚庢槸鍑芥暟鐨勫悇涓弬鏁幫紝鍦ㄥぇ澶氭暟鐨凜緙栬瘧鍣ㄤ腑錛屽弬鏁版槸鐢卞彸寰宸﹀叆鏍埪?
聽 鐨勶紝鐒跺悗鏄嚱鏁頒腑鐨勫眬閮ㄥ彉閲忋傛敞鎰忛潤鎬佸彉閲忔槸涓嶅叆鏍堢殑銆偮犅犅?
聽 褰撴湰嬈″嚱鏁拌皟鐢ㄧ粨鏉熷悗錛屽眬閮ㄥ彉閲忓厛鍑烘爤錛岀劧鍚庢槸鍙傛暟錛屾渶鍚庢爤欏舵寚閽堟寚鍚戞渶寮濮嬪瓨鐨勫湴聽
聽 鍧錛屼篃灝辨槸涓誨嚱鏁頒腑鐨勪笅涓鏉℃寚浠わ紝紼嬪簭鐢辮鐐圭戶緇繍琛屻偮犅犅?
聽 鍫嗭細涓鑸槸鍦ㄥ爢鐨勫ご閮ㄧ敤涓涓瓧鑺傚瓨鏀懼爢鐨勫ぇ灝忋傚爢涓殑鍏蜂綋鍐呭鐢辯▼搴忓憳瀹夋帓銆偮犅犅?
聽聽
聽 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灝忕粨錛毬犅犅?
聽 鍫嗗拰鏍堢殑鍖哄埆鍙互鐢ㄥ涓嬬殑姣斿柣鏉ョ湅鍑猴細聽聽聽
聽 浣跨敤鏍堝氨璞℃垜浠幓楗閲屽悆楗紝鍙鐐硅彍錛堝彂鍑虹敵璇鳳級銆佷粯閽便佸拰鍚冿紙浣跨敤錛夛紝鍚冮ケ浜嗗氨聽
聽 璧幫紝涓嶅繀鐞嗕細鍒囪彍銆佹礂鑿滅瓑鍑嗗宸ヤ綔鍜屾礂紕椼佸埛閿呯瓑鎵熬宸ヤ綔錛屼粬鐨勫ソ澶勬槸蹇嵎錛屼絾鏄嚜聽
聽 鐢卞害灝忋偮犅犅?
聽 浣跨敤鍫嗗氨璞℃槸鑷繁鍔ㄦ墜鍋氬枩嬈㈠悆鐨勮彍鑲達紝姣旇緝楹葷儲錛屼絾鏄瘮杈冪鍚堣嚜宸辯殑鍙e懗錛岃屼笖鑷敱聽
聽 搴﹀ぇ銆偮犅?(緇忓吀錛?聽



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


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


1 榪涚▼涓庤繘紼嬮氫俊

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

2 榪涚▼閫氫俊鏂規硶

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



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

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

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

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

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


鐮磋В鏂規硶聽

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

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

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

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

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

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

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

杈撳叆127.0.0.1 activate.adobe.com錛堜腑闂存湁涓┖鏍鹼級錛屼繚瀛橈紝閫鍑? 灞忚斀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
絎簲姝ワ細鍐嶆墦寮杞歡錛宱k銆傦紙鑻ヤ笉榪涜絎洓姝ワ紝鍐嶅惎鍔ㄨ蔣浠舵椂錛屽張浼氳煩鍑烘縺媧葷晫闈級銆?/p>

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

鍐嶄緷嬈℃墦寮 紿楀彛->鎵╁睍鍔熻兘->榪炴帴->灝忎笁瑙掑艦 榪炴帴鍙婅劚鏈洪夐」璁劇疆涓嶈繛鎺ョ綉緇?/p>

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

涓嬭澆婧愪唬鐮?/a>

涓銆佷粈涔堟槸Unicode

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

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

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

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

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

瀛楃聽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灝卞彲浠ヤ簡錛屾瘮濡傦細

wchar_t *str1=L" Hello";

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

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

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

size_t __cdel wchlen(const wchar_t*);

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

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

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

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

銆銆鍙錛孋++鏈変竴鏁村鐨勬暟鎹被鍨嬪拰鍑芥暟瀹炵幇Unicode緙栫▼錛屼篃灝辨槸璇達紝鎮ㄥ畬鍏ㄥ彲浠ヤ嬌鐢–++瀹炵幇Unicode緙栫▼銆?br />濡傛灉鎴戜滑鎯寵鎴戜滑鐨勭▼搴忔湁涓や釜鐗堟湰錛欰NSI鐗堟湰鍜孶nicode鐗堟湰銆傚綋鐒訛紝緙栧啓涓ゅ浠g爜鍒嗗埆瀹炵幇ANSI鐗堟湰鍜孶nicode鐗堟湰瀹屽叏鏄寰楅氱殑銆備絾鏄紝閽堝ANSI瀛楃鍜孶nicode瀛楃緇存姢涓ゅ浠g爜鏄潪甯擱夯鐑︾殑浜嬫儏銆備負浜嗗噺杞葷紪紼嬬殑璐熸媴錛孋++瀹氫箟浜嗕竴緋誨垪鐨勫畯錛屽府鍔╂偍瀹炵幇瀵笰NSI鍜孶nicode鐨勯氱敤緙栫▼銆?br />銆銆C++瀹忓疄鐜癆NSI鍜孶nicode鐨勯氱敤緙栫▼鐨勬湰璐ㄦ槸鏍規嵁鈥漘UNICODE鈥濓紙娉ㄦ剰錛屾湁涓嬪垝綰匡級瀹氫箟涓庡惁錛岃繖浜涘畯灞曞紑涓篈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 
銆銆鍙錛岃繖浜涘畯鏍規嵁鈥漘UNICODE鈥?瀹氫箟涓庡惁錛屽垎鍒睍寮涓篈NSI鎴朥nicode瀛楃銆?tchar.h澶存枃浠朵腑瀹氫箟鐨勫畯鍙互鍒嗕負涓ょ被錛?

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

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

娉ㄦ剰錛?br />銆銆鈥?#鈥濇槸ANSI C鏍囧噯鐨勯澶勭悊璇硶錛屽畠鍙仛鈥滅矘璐寸鍙封濓紝琛ㄧず灝嗗墠闈㈢殑L娣誨姞鍒板畯鍙傛暟涓娿備篃灝辨槸璇達紝濡傛灉鎴戜滑鍐檁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澶存枃浠朵腑銆備緥濡傦細

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

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

銆銆VC++ 6.0鏀寔Unicode緙栫▼錛屼絾榛樿鐨勬槸ANSI錛屾墍浠ュ紑鍙戜漢鍛樺彧闇瑕佺◢寰敼鍙樹竴涓嬬紪鍐欎唬鐮佺殑涔犳儻渚垮彲浠ヨ交鏉劇紪鍐欐敮鎸乁NICODE鐨勫簲鐢ㄧ▼搴忋?br />銆銆浣跨敤VC++ 6.0榪涜Unicode緙栫▼涓昏鍋氫互涓嬪嚑欏瑰伐浣滐細

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

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


鍥句竴


鍥句簩

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

銆銆鍥犱負MFC搴旂敤紼嬪簭鏈夐拡瀵筓nicode涓撶敤鐨勭▼搴忓叆鍙g偣錛屾垜浠璁劇疆entry point銆傚惁鍒欏氨浼氬嚭鐜拌繛鎺ラ敊璇?br />銆銆璁劇疆entry point鐨勬柟娉曟槸錛氭墦寮[宸ョ▼]->[璁劇疆鈥瀵硅瘽妗嗭紝鍦↙ink欏電殑Output綾誨埆鐨凟ntry Point閲屽~涓妛WinMainCRTStartup銆?/p>


鍥句笁

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

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

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

銆銆鍏跺疄錛屽湪涓婇潰鐨勮鍙ヤ腑錛屽嵆浣挎偍涓嶅姞_T瀹忥紝MessageBox鍑芥暟涔熶細鑷姩鎶娾滀綘濂解濆瓧絎︿覆榪涜寮哄埗杞崲銆備絾鎴戣繕鏄帹鑽愭偍浣跨敤_T瀹忥紝浠ヨ〃紺烘偍鏈塙nicode緙栫爜鎰忚瘑銆?

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

銆銆涓浜涘瓧絎︿覆鎿嶄綔鍑芥暟闇瑕佽幏鍙栧瓧絎︿覆鐨勫瓧絎︽暟(sizeof(szBuffer)/sizeof(TCHAR))錛岃屽彟涓浜涘嚱鏁板彲鑳介渶瑕佽幏鍙栧瓧絎︿覆鐨勫瓧鑺傛暟sizeof(szBuffer)銆傛偍搴旇娉ㄦ剰璇ラ棶棰樺茍浠旂粏鍒嗘瀽瀛楃涓叉搷浣滃嚱鏁幫紝浠ョ‘瀹氳兘澶熷緱鍒版紜殑緇撴灉銆?br />ANSI鎿嶄綔鍑芥暟浠tr寮澶達紝濡俿trcpy()錛宻trcat()錛宻trlen()錛?br />Unicode鎿嶄綔鍑芥暟浠cs寮澶達紝濡倃cscpy錛寃cscpy()錛寃cslen()錛?br />ANSI/Unicode鎿嶄綔鍑芥暟浠tcs寮澶?_tcscpy(C榪愯鏈熷簱)錛?br />ANSI/Unicode鎿嶄綔鍑芥暟浠str寮澶?lstrcpy(Windows鍑芥暟)錛?br />鑰冭檻ANSI鍜孶nicode鐨勫吋瀹癸紝鎴戜滑闇瑕佷嬌鐢ㄤ互_tcs寮澶存垨lstr寮澶寸殑閫氱敤瀛楃涓叉搷浣滃嚱鏁般?/p>

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

絎竴姝ワ細
銆銆鎵撳紑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銆?

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


鍥懼洓

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

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

灝辮榪欎簺鍚э紝紲濇偍濂借繍銆?/p>

闃肯 2010-05-06 17:30 鍙戣〃璇勮
]]>
璋堣皥Unicode緙栫爜錛岀畝瑕佽В閲奤CS銆乁TF銆丅MP銆丅OM絳夊悕璇?/title><link>http://www.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://www.shnenglu.com/lapcca/archive/2010/05/06/114661.html</guid><wfw:comment>http://www.shnenglu.com/lapcca/comments/114661.html</wfw:comment><comments>http://www.shnenglu.com/lapcca/archive/2010/05/06/114661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lapcca/comments/commentRss/114661.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lapcca/services/trackbacks/114661.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class="cnt" id="blog_text"> <br />榪欐槸涓綃囩▼搴忓憳鍐欑粰紼嬪簭鍛樼殑瓚e懗璇葷墿銆傛墍璋撹叮鍛蟲槸鎸囧彲浠ユ瘮杈冭交鏉懼湴浜嗚В涓浜涘師鏉ヤ笉娓呮鐨勬蹇碉紝澧炶繘鐭ヨ瘑錛岀被浼間簬鎵揜PG娓告垙鐨勫崌綰с傛暣鐞嗚繖綃囨枃绔犵殑鍔ㄦ満鏄袱涓棶棰橈細<br /><br />闂涓錛?br /><br />聽聽聽 浣跨敤Windows璁頒簨鏈殑鈥滃彟瀛樹負鈥濓紝鍙互鍦℅BK銆乁nicode銆乁nicode big endian鍜孶TF-8榪欏嚑縐嶇紪鐮佹柟寮忛棿鐩鎬簰杞崲銆傚悓鏍鋒槸txt鏂囦歡錛學indows鏄庢牱璇嗗埆緙栫爜鏂瑰紡鐨勫憿錛?br /><br />聽聽聽 鎴戝緢鏃╁墠灝卞彂鐜癠nicode銆乁nicode big endian鍜孶TF-8緙栫爜鐨則xt鏂囦歡鐨勫紑澶翠細澶氬嚭鍑犱釜瀛楄妭錛屽垎鍒槸FF銆丗E錛圲nicode錛?FE銆丗F錛圲nicode big endian錛?EF銆丅B銆丅F錛圲TF-8錛夈備絾榪欎簺鏍囪鏄熀浜庝粈涔堟爣鍑嗗憿錛?br />闂浜岋細<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鈥濊繖涓瘝鍑鴻嚜銆婃牸鍒椾經娓歌銆嬨傚皬浜哄浗鐨勫唴鎴樺氨婧愪簬鍚冮浮铔嬫椂鏄┒绔熶粠澶уご(Big-Endian)鏁插紑榪樻槸浠庡皬澶?Little-Endian)鏁插紑錛岀敱姝ゆ浘鍙戠敓榪囧叚嬈″彌涔憋紝鍏朵腑涓涓殗甯濋佷簡鍛斤紝鍙︿竴涓涪浜嗙帇浣嶃?br /><br />鎴戜滑涓鑸皢endian緲昏瘧鎴愨滃瓧鑺傚簭鈥濓紝灝哹ig endian鍜宭ittle endian縐頒綔鈥滃ぇ灝鋸濆拰鈥滃皬灝鋸濄?br />1銆佸瓧絎︾紪鐮併佸唴鐮侊紝欏哄甫浠嬬粛姹夊瓧緙栫爜<br /><br />瀛楃蹇呴』緙栫爜鍚庢墠鑳借璁$畻鏈哄鐞嗐傝綆楁満浣跨敤鐨勭己鐪佺紪鐮佹柟寮忓氨鏄綆楁満鐨勫唴鐮併傛棭鏈熺殑璁$畻鏈轟嬌鐢?浣嶇殑ASCII緙栫爜錛屼負浜嗗鐞嗘眽瀛楋紝紼嬪簭鍛樿璁′簡鐢ㄤ簬綆浣撲腑鏂囩殑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錛岃繖浜涚紪鐮佹柟娉曟槸鍚戜笅鍏煎鐨勶紝鍗沖悓涓涓瓧絎﹀湪榪欎簺鏂規涓繪槸鏈夌浉鍚岀殑緙栫爜錛屽悗闈㈢殑鏍囧噯鏀寔鏇村鐨勫瓧絎︺傚湪榪欎簺緙栫爜涓紝鑻辨枃鍜屼腑鏂囧彲浠ョ粺涓鍦板鐞嗐傚尯鍒嗕腑鏂囩紪鐮佺殑鏂規硶鏄珮瀛楄妭鐨勬渶楂樹綅涓嶄負0銆傛寜鐓х▼搴忓憳鐨勭О鍛鹼紝GB2312銆丟BK鍒癎B18030閮藉睘浜庡弻瀛楄妭瀛楃闆?(DBCS)銆?br /><br />鏈夌殑涓枃Windows鐨勭己鐪佸唴鐮佽繕鏄疓BK錛屽彲浠ラ氳繃GB18030鍗囩駭鍖呭崌綰у埌GB18030銆備笉榪嘒B18030鐩稿GBK澧炲姞鐨勫瓧絎︼紝鏅氫漢鏄緢闅劇敤鍒扮殑錛岄氬父鎴戜滑榪樻槸鐢℅BK鎸囦唬涓枃Windows鍐呯爜銆?br /><br />榪欓噷榪樻湁涓浜涚粏鑺傦細<br /><br />聽聽聽 *<br /><br />聽聽聽聽聽 GB2312鐨勫師鏂囪繕鏄尯浣嶇爜錛屼粠鍖轟綅鐮佸埌鍐呯爜錛岄渶瑕佸湪楂樺瓧鑺傚拰浣庡瓧鑺備笂鍒嗗埆鍔犱笂A0銆?br />聽聽聽 *<br /><br />聽聽聽聽聽 鍦―BCS涓紝GB鍐呯爜鐨勫瓨鍌ㄦ牸寮忓緇堟槸big endian錛屽嵆楂樹綅鍦ㄥ墠銆?br />聽聽聽 *<br /><br />聽聽聽聽聽 GB2312 鐨勪袱涓瓧鑺傜殑鏈楂樹綅閮芥槸1銆備絾絎﹀悎榪欎釜鏉′歡鐨勭爜浣嶅彧鏈?28*128=16384涓傛墍浠BK鍜孏B18030鐨勪綆瀛楄妭鏈楂樹綅閮藉彲鑳戒笉鏄?銆備笉榪囪繖涓嶅獎鍝岲BCS瀛楃嫻佺殑瑙f瀽錛氬湪璇誨彇DBCS瀛楃嫻佹椂錛屽彧瑕侀亣鍒伴珮浣嶄負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"錛岀畝縐頒負UCS銆俇CS鍙互鐪嬩綔鏄?Unicode Character Set"鐨勭緝鍐欍?br /><br />鏍規嵁緇村熀鐧劇鍏ㄤ功(http: //zh.wikipedia.org/wiki/)鐨勮杞斤細鍘嗗彶涓婂瓨鍦ㄤ袱涓瘯鍥劇嫭绔嬭璁nicode鐨勭粍緇囷紝鍗沖浗闄呮爣鍑嗗寲緇勭粐錛圛SO錛夊拰涓涓蔣浠跺埗閫犲晢鐨勫崗浼氾紙unicode.org錛夈侷SO寮鍙戜簡ISO 10646欏圭洰錛孶nicode鍗忎細寮鍙戜簡Unicode欏圭洰銆?br /><br />鍦?991騫村墠鍚庯紝鍙屾柟閮借璇嗗埌涓栫晫涓嶉渶瑕佷袱涓笉鍏煎鐨勫瓧絎﹂泦銆備簬鏄畠浠紑濮嬪悎騫跺弻鏂圭殑宸ヤ綔鎴愭灉錛屽茍涓哄垱绔嬩竴涓崟涓緙栫爜琛ㄨ屽崗鍚屽伐浣溿備粠Unicode2.0寮濮嬶紝Unicode欏圭洰閲囩敤浜嗕笌ISO 10646-1鐩稿悓鐨勫瓧搴撳拰瀛楃爜銆?br /><br />鐩墠涓や釜欏圭洰浠嶉兘瀛樺湪錛屽茍鐙珛鍦板叕甯冨悇鑷殑鏍囧噯銆俇nicode鍗忎細鐜板湪鐨勬渶鏂扮増鏈槸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鏈変袱縐嶆牸寮忥細UCS-2鍜孶CS-4銆傞【鍚嶆濅箟錛孶CS-2灝辨槸鐢ㄤ袱涓瓧鑺傜紪鐮侊紝UCS-4灝辨槸鐢?涓瓧鑺傦紙瀹為檯涓婂彧鐢ㄤ簡31浣嶏紝鏈楂樹綅蹇呴』涓?錛夌紪鐮併備笅闈㈣鎴戜滑鍋氫竴浜涚畝鍗曠殑鏁板娓告垙錛?br /><br />UCS-2鏈?^16=65536涓爜浣嶏紝UCS-4鏈?^31=2147483648涓爜浣嶃?br /><br />UCS -4鏍規嵁鏈楂樹綅涓?鐨勬渶楂樺瓧鑺傚垎鎴?^7=128涓猤roup銆傛瘡涓猤roup鍐嶆牴鎹楂樺瓧鑺傚垎涓?56涓猵lane銆傛瘡涓猵lane鏍規嵁絎?涓瓧鑺傚垎涓?256琛?(rows)錛屾瘡琛屽寘鍚?56涓猚ells銆傚綋鐒跺悓涓琛岀殑cells鍙槸鏈鍚庝竴涓瓧鑺備笉鍚岋紝鍏朵綑閮界浉鍚屻?br /><br />group 0鐨刾lane 0琚О浣淏asic Multilingual Plane, 鍗矪MP銆傛垨鑰呰UCS-4涓紝楂樹袱涓瓧鑺備負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灝辨槸浠?浣嶄負鍗曞厓瀵筓CS榪涜緙栫爜銆備粠UCS-2鍒癠TF-8鐨勭紪鐮佹柟寮忓涓嬶細<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涔嬮棿錛屾墍浠ヨ偗瀹氳鐢?瀛楄妭妯℃澘浜嗭細1110xxxx 10xxxxxx 10xxxxxx銆傚皢6C49鍐欐垚浜岃繘鍒舵槸錛?110 110001 001001錛?鐢ㄨ繖涓瘮鐗規祦渚濇浠f浛妯℃澘涓殑x錛屽緱鍒幫細11100110 10110001 10001001錛屽嵆E6 B1 89銆?br /><br />璇昏呭彲浠ョ敤璁頒簨鏈祴璇曚竴涓嬫垜浠殑緙栫爜鏄惁姝g‘銆?br /><br />UTF -16浠?6浣嶄負鍗曞厓瀵筓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浠ュ瓧鑺備負緙栫爜鍗曞厓錛屾病鏈夊瓧鑺傚簭鐨勯棶棰樸俇TF-16浠ヤ袱涓瓧鑺備負緙栫爜鍗曞厓錛屽湪瑙i噴涓涓猆TF-16鏂囨湰鍓嶏紝棣栧厛瑕佸紕娓呮姣忎釜緙栫爜鍗曞厓鐨勫瓧鑺傚簭銆備緥濡傛敹鍒頒竴涓滃鈥濈殑Unicode緙栫爜鏄?94E錛屸滀箼鈥濈殑Unicode緙栫爜鏄?E59銆傚鏋滄垜浠敹鍒癠TF-16瀛楄妭嫻佲?94E鈥濓紝閭d箞榪欐槸鈥滃鈥濊繕鏄?鈥滀箼鈥濓紵<br /><br />Unicode瑙勮寖涓帹鑽愮殑鏍囪瀛楄妭欏哄簭鐨勬柟娉曟槸BOM銆侭OM涓嶆槸鈥淏ill Of Material鈥濈殑BOM琛紝鑰屾槸Byte Order Mark銆侭OM鏄竴涓湁鐐瑰皬鑱槑鐨勬兂娉曪細<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錛堣鑰呭彲浠ョ敤鎴戜滑鍓嶉潰浠嬬粛鐨勭紪鐮佹柟娉曢獙璇佷竴涓嬶級銆傛墍浠ュ鏋滄帴鏀惰呮敹鍒頒互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 />鎴戣繕鎵句簡涓ょ瘒鐪嬩笂鍘諱笉閿欑殑璧勬枡錛屼笉榪囧洜涓烘垜寮濮嬬殑鐤戦棶閮芥壘鍒頒簡絳旀錛屾墍浠ュ氨娌℃湁鐪嬶細<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鐨勭増鏈備互鍚庢湁鏃墮棿鐨勮瘽錛屾垜浼氭暣鐞嗕竴涓嬫斁鍒版垜鐨勪釜浜轟富欏典笂(http://www.fmddlmyy.cn)銆?br /><br />鎴戞槸鎯蟲竻妤氭墍鏈夐棶棰樺悗鎵嶅紑濮嬪啓榪欑瘒鏂囩珷鐨勶紝鍘熶互涓轟竴浼氬効灝辮兘鍐欏ソ銆傛病鎯沖埌鑰冭檻鎺緸鍜屾煡璇佺粏鑺傝姳璐逛簡寰堥暱鏃墮棿錛岀珶鐒朵粠涓嬪崍1:30鍐欏埌9:00銆傚笇鏈涙湁璇昏呰兘浠庝腑鍙楃泭銆?/div><img src ="http://www.shnenglu.com/lapcca/aggbug/114661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-05-06 16:39 <a href="http://www.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://www.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://www.shnenglu.com/lapcca/archive/2010/05/06/114649.html</guid><wfw:comment>http://www.shnenglu.com/lapcca/comments/114649.html</wfw:comment><comments>http://www.shnenglu.com/lapcca/archive/2010/05/06/114649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lapcca/comments/commentRss/114649.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lapcca/services/trackbacks/114649.html</trackback:ping><description><![CDATA[浠涔堟槸ANSI錛屼粈涔堝張鏄疷NICODE鍛紵鍏跺疄榪欐槸涓ょ涓嶅悓鐨勭紪鐮佹柟寮忔爣鍑嗭紝ANSI涓殑瀛楃閲囩敤8bit錛岃孶NICODE涓殑瀛楃閲囩敤16bit銆傦紙瀵逛簬瀛楃鏉ヨANSI浠ュ崟瀛楄妭瀛樻斁鑻辨枃瀛楃錛屼互鍙屽瓧鑺傚瓨鏀句腑鏂囩瓑瀛楃,鑰孶nicode涓嬶紝鑻辨枃鍜屼腑鏂囩殑瀛楃閮戒互鍙屽瓧鑺傚瓨鏀撅級Unicode鐮佷篃鏄竴縐嶅浗闄呮爣鍑嗙紪鐮侊紝閲囩敤浜屼釜瀛楄妭緙栫爜錛屼笌ANSI鐮佷笉鍏煎銆傜洰鍓嶏紝鍦ㄧ綉緇溿乄indows緋葷粺鍜屽緢澶氬ぇ鍨嬭蔣浠朵腑寰楀埌搴旂敤銆?bit鐨凙NSI緙栫爜鍙兘琛ㄧず256縐嶅瓧絎︼紝琛ㄧず26涓嫳鏂囧瓧姣嶆槸緇扮話鏈変綑鐨勶紝浣嗘槸琛ㄧず姹夊瓧錛岄煩鍥借絳夋湁鐫鎴愬崈涓婁竾涓瓧絎︾殑闈炶タ鏂瑰瓧絎﹁偗瀹氬氨涓嶅浜嗭紝姝f槸濡傛鎵嶅紩鍏ヤ簡UNICODE鏍囧噯銆偮犅犅?br />聽聽聽聽 鍦ㄨ蔣浠跺紑鍙戜腑錛岀壒鍒槸浣跨敤C璇█鐨勪竴浜涙湁鍏沖瓧絎︿覆澶勭悊鐨勫嚱鏁幫紝ANSI鍜孶NICODE鏄尯鍒嗘槸鐢ㄧ殑錛岄偅涔圓NSI綾誨瀷鐨勫瓧絎﹀拰UNICODE綾誨瀷鐨勫瓧絎﹀浣曞畾涔夛紝濡備綍浣跨敤鍛紵ANSI鍜孶NICODE鍙堝浣曡漿鎹㈠憿錛熉犅犅?br />聽聽 涓錛庡畾涔夐儴鍒嗭細聽聽<br />聽聽 ANSI錛歝har聽聽聽 str[1024]; 鍙敤瀛楃涓插鐞嗗嚱鏁幫細strcpy( ),聽聽聽 strcat( ),聽聽 strlen( )絳夌瓑銆?br />UNICODE錛歸char_t聽聽聽 str[1024]錛涘彲鐢ㄥ瓧絎︿覆澶勭悊鍑芥暟聽聽聽<br />浜岋紟鍙敤鍑芥暟錛?<br />聽聽 ANSI錛氬嵆char錛屽彲鐢ㄥ瓧絎︿覆澶勭悊鍑芥暟錛歴trcat(聽聽聽 ),strcpy(聽聽聽 ),聽聽聽 strlen(聽聽聽 )絳変互str鎵撳ご鐨勫嚱鏁般偮犅犅?br />聽聽 UNICODE錛氬嵆wchar_t 鍙敤瀛楃涓插鐞嗗嚱鏁幫細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鏄渶瑕佷粯鍑轟唬浠風殑錛岃櫧鐒跺湪緙栫爜涓婁笉鐢ㄤ換浣曠殑杞崲錛屼絾鏄繖縐嶈漿鍖栨槸闅愯棌鐨勶紝鏄崰鐢ㄧ郴緇熻祫婧愮殑錛圕PU錛屽唴瀛橈級銆偮犅犅?br />聽聽聽聽聽 3 鍦╓indows 98涓嬪繀欏諱嬌鐢║NICODE錛屽垯闇瑕佽嚜宸辨墜鍔ㄧ殑緙栫爜鍒囨崲銆偮犅犅?br />聽聽聽 鍥涳紟濡備綍鍖哄垎錛毬犅犅?br />聽聽聽 鍦ㄦ垜浠蔣浠跺紑鍙戜腑寰寰闇瑕佸嵆鏀寔ANSI鍙堟敮鎸乁NICODE錛屼笉鍙兘鍦ㄨ姹傜被鍨嬭漿鎹㈢殑鏃跺欙紝閲嶆柊鏀瑰彉瀛楃涓茬殑綾誨瀷錛屽拰浣跨敤浜庡瓧絎︿覆涓婄殑鎿嶄綔鍑芥暟銆備負姝? 鏍囧噯C榪愯鏈熷簱鍜學indows 鎻愪緵浜嗗畯瀹氫箟鐨勬柟寮忋偮犅犅?br />聽聽聽 鍦–璇█閲岄潰鎻愪緵浜?_UNICODE瀹忥紙鏈変笅鍒掔嚎錛夛紝鍦╓indows閲岄潰鎻愪緵浜哢NICODE瀹忥紙鏃犱笅鍒掔嚎錛夛紝鍙瀹氫簡_UNICODE瀹忓拰UNICODE瀹忥紝緋葷粺灝變細鑷姩鍒囨崲鍒癠NICODE鐗堟湰錛屽惁鍒欙紝緋葷粺鎸夌収ANSI鐨勬柟寮忚繘琛岀紪璇戝拰榪愯銆偮犅犅?br />聽聽聽 鍙畾涔変簡瀹忓茍涓嶈兘瀹炵幇鑷姩鐨勮漿鎹紝浠栬繕闇瑕佷竴緋誨垪鐨勫瓧絎﹀畾涔夋敮鎸併偮犅犅?br />聽聽 1. TCHAR聽聽聽<br />聽聽 濡傛灉瀹氫箟浜哢NICODE瀹忓垯TCHAR琚畾涔変負wchar_t銆偮犅犅?br />聽聽聽 typedef聽聽聽 wchar_t聽聽聽 TCHAR;聽聽聽<br />聽聽聽 鍚﹀垯TCHAR琚畾涔変負char聽聽聽<br />聽聽聽 typedef聽聽聽 char聽聽 TCHAR;聽聽聽<br />聽聽 2錛嶭PTSTR聽聽聽<br />濡傛灉瀹氫箟浜哢NICODE瀹忓垯LPTSTR琚畾涔変負LPWSTR銆傦紙浠ュ墠涓鐩翠笉鐭ラ亾LPWSTR鏄粈涔堜笢涓滐紝緇堜簬鏄庣櫧浜嗭級聽聽聽<br />聽聽 typedef聽聽聽 LPTSTR聽聽 LPWSTR;聽聽聽<br />聽聽 鍚﹀垯TCHAR琚畾涔変負char聽聽聽<br />聽聽 typedef聽聽聽 LPTSTR聽聽 LPSTR;聽聽<br />琛ュ厖涓涓嬶細<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 />聽聽聽聽聽聽 闄勶細鏈夐儴鍒哢nicode鍑芥暟涔熷彲浠ュ湪Win9X涓嬌鐢紝浣嗗彲鑳戒細鍑虹幇鎰忔兂涓嶅埌閿欒銆?/p><p>wchar_t鏄疷nicode瀛楃鐨勬暟鎹被鍨嬨?/p><p>鎵鏈夌殑Unicode鍑芥暟鍧囦互wcs寮澶達紝ANSI鍑芥暟鍧囦互str寮澶達紱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瀛楃涓茶漿鎹負Unicode瀛楃涓詫紱<br />聽聽聽聽聽聽聽 _TEXT(" wash ")鏍規嵁鏄惁瀹氫箟Unicode鎴朹Unicode榪涜杞崲銆?br />聽聽聽聽聽聽 闄勶細_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鍑芥暟鍙敤浜庡垎閰嶅唴瀛橈紝灝嗗瓧絎﹁漿鎹負Unicode瀛楃錛岀劧鍚庤皟鐢║nicode鍑芥暟銆?/p><p>鏈濂戒嬌鐢ㄦ搷浣滅郴緇熷嚱鏁幫紝灝戜嬌鐢ㄦ垨涓嶅疄鐢–榪愯鏈熷嚱鏁?br />聽聽聽聽聽聽聽 eg錛氭搷浣滅郴緇熷瓧絎︿覆鍑芥暟錛坰hlWApi.h錛?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 StrCat(), StrChr(), StrCmp(), StrCpy()絳?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 娉ㄦ剰瀹冧滑鍖哄垎澶у皬鍐欙紝涔熷尯鍒咥NSI鍜孶nicode鐗堟湰<br />聽聽聽聽聽聽聽 闄勶細ANSI鐗堝嚱鏁板湪鍘熷嚱鏁板悗鍔犲ぇ鍐欏瓧姣岮<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Unicode鍑芥暟鍦ㄥ師鍑芥暟鍚庡姞澶у啓瀛楁瘝W</p><p>鎴愪負絎﹀悎ANSI鍜孶nicode鐨勫嚱鏁?br />聽聽聽聽聽聽聽 鈥?灝嗘枃鏈覆瑙嗕負瀛楃鏁扮粍錛岃屼笉鏄痗 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 />聽聽聽聽聽聽聽聽聽 濡傦細sizeof(szBuffer) -> sizeof(szBuffer) / sizeof(TCHAR)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 malloc(charNum) -> malloc(charNum * sizeof(TCHAR))聽聽聽聽</p><p>瀵筓nicode瀛楃鎿嶄綔鐨勫嚱鏁拌繕鏈夛細錛堜篃鏈堿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 />聽聽聽聽聽聽 闄勶細姝ゅ嚱鏁板湪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鍙傛暟鐢ㄤ簬鎸囨槑璇ュ瓧絎︿覆鐨勯暱搴︼紙鎸夊瓧鑺傝綆楋級銆傚鏋滀負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鍙傛暟涓瀹氳緙撳瓨鐨勬渶澶у鹼紙浠ュ瓧絎︿負璁¢噺鍗曚綅錛夈傚鏋滆皟鐢∕ 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絳変環瀛楃涓詫細<br />聽聽聽聽 1) 璋冪敤M u l t i B y t e To Wi d e C h a r鍑芥暟錛屼負p Wi d e C h a r S t r鍙傛暟浼犻扤 U L L錛屼負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錛岃繖嬈″皢緙撳瓨鐨勫湴鍧浣滀負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://www.shnenglu.com/lapcca/aggbug/114649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-05-06 16:09 <a href="http://www.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://www.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://www.shnenglu.com/lapcca/archive/2010/05/06/114595.html</guid><wfw:comment>http://www.shnenglu.com/lapcca/comments/114595.html</wfw:comment><comments>http://www.shnenglu.com/lapcca/archive/2010/05/06/114595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lapcca/comments/commentRss/114595.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lapcca/services/trackbacks/114595.html</trackback:ping><description><![CDATA[<p>棣栧厛澹版槑,鎴戜滑鏃笉鎯沖紩璧蜂竴鍦?CORBA vs Ice"鐨勪簤璁猴紝涔熶笉鎯蟲鐤慍ORBA銆傜浉鍙嶏紝鎴戜滑璁や負CORBA鍦ㄥ畠鐨勬椂浠f槸涓涓緢澶х殑鎴愬氨錛岃屼笖錛孖ce涔熸槑鏄懼熺敤浜咰ORBA鐨勫緢澶氭濇兂銆?/p> <p>鎴戜滑鍐沖畾鍐欒繖綃囨瘮杈冩枃绔犳槸鍥犱負鎴戜滑鏈熸湜鏇村鐨勪漢鑳芥紜湴璇㈤棶鎴戜滑涓轟綍浠栦滑瑕佺敤Ice浠f浛CORBA銆傚榪欎釜闂錛屾垜浠氬父鐨勫洖絳旀槸錛氫負浠涔堜笉鍏堣嚜宸辮瘯璇曚嬌鐢?Ice鍛紵鎴戜滑鏁㈣偗瀹氾紝涓鏃︿綘浣跨敤浜咺ce鏈変竴孌墊椂闂達紝浣犲氨姘歌繙涓嶄細鍐嶆兂鐢ㄥ洖CORBA銆傝鐩鎬俊鎴戜滑錛屽緢瀹規槗浼氬枩嬈笂Ice錛屽洜涓哄畠浼橀泤銆佺畝鍗曪紝瀹冪殑緇撴瀯涓鑷存э紝鑰屼笖鏈鍚庝竴鐐癸細鑷沖皯瀹冩病鏈夊ぇ閲忕殑鐗規у拰宸ュ叿銆?/p> <p>瀵逛簬娌℃湁鏃墮棿鍘昏瘯楠孖ce鏉ヤ簡瑙e畠鐨勪漢錛岃繖閲屾湁涓浜涘師鍥犺鎴戜滑鐩鎬俊Ice浼樹簬CORBA錛?/p> <p>1銆丆ompleteness(瀹屽鎬?<br />褰撴垜浠鍒板畬澶囨ф椂錛屾垜浠殑鎰忔濇槸瀹為檯浜у搧鐨勫畬澶囨э紝鑰屼笉鏄粠鏉ユ湭琚疄鐜扮殑鏍囧噯鐨勫畬澶囨с傛垜浠浉淇ce姣斿競鍦轟笂浠諱綍鍗曚釜CORBA鏇村畬澶囥備綘鍙互鑷繁鍋氫竴涓鏌ワ細甯傚満涓婃湁鍝釜CORBA浜у搧鎻愪緵浜嗚窡Ice鍙瘮杈冪殑鐗規э紵</p> <p>2銆丳erformance(鎬ц兘)<br />鐢變簬鍏鋒湁CORBA鎵娌℃湁鐨勭粨鏋勪紭鐐癸紝Ice鍏鋒湁紿佸嚭鐨勬ц兘銆侷ce楂樻晥鐨勫崗璁佽姹傛壒閲忓寲銆侀珮鏁堢殑浜嬩歡鍒嗗彂閮芥剰鍛崇潃Ice姣擟ORBA ORB榪愯寰楁洿蹇紝鍚屾椂娑堣楁洿灝戠殑綰胯礬甯﹀銆?/p> <p>3銆丯o "Design by Committee"(闈炩滃鍛樹細璁捐鈥?<br />Ice鐢變竴緹や笓涓氱殑璧勬繁涓撳鎵璁捐銆侷ce娌℃湁璁捐鎴愰傚悎鎵鏈変漢鐨勨滀竾閲戞補鈥濄傝孋ORBA鍒欏厖鏂ョ潃琚叿鏈夌壒鏉冪殑鍒跺畾鑰呭姞榪涘埌鏍囧噯閲岀殑浼楀涓嶅垏瀹為檯鐨勭壒鎬э紝鍗村張娌℃湁鐪熸鑰冭檻鍒拌繖浜涚壒鎬ф槸鍚︿細琚湡姝e湴瀹炵幇銆?/p> <p>閫氬父錛屼負浜嗗氨CORBA鏍囧噯杈炬垚涓鑷寸殑鍞竴鏂規硶灝辨槸灝嗕箣鍓嶅ぇ閲忓疄鐜扮殑鐗規ф斁鍦ㄤ竴璧鳳紝鐢熺‖鍦板榪涙爣鍑嗛噷銆傝繖瀵艱嚧浜嗘爣鍑嗚秺鏉ヨ秺澶э紝涔熻秺鏉ヨ秺澶嶆潅錛岃秴鍑轟簡瀹為檯鐨勯渶瑕併傝繖涔熸剰鍛崇潃騫沖彴鏇村ぇ鏇存參錛屼篃鍥犱負澶嶆潅鐨凙PI瀵艱嚧浜嗛毦浠ヤ嬌鐢ㄣ侷ce鎻愪緵鐨凙PI闆嗗皬寰楀錛屼篃鏇撮珮鏁堬紝姣擟ORBA鐨凙PI鏄撲簬瀛︿範浣跨敤錛屽茍涓斿姛鑳藉茍涓嶅皯銆?/p> <p>4銆丼lice<br />Slice錛孖ce鐨勮鑼冨畾涔夎璦錛屾瘮CORBA IDL鏇村皬銆佹洿綆媧併佹洿寮哄ぇ銆係lice鍏鋒湁鏇村皯鐨勮璦緇撴瀯錛屼絾鍗存洿鐏墊椿銆備緥濡傦紝涓涓唴寤虹殑瀛楀吀綾誨瀷鎻愪緵鐩存帴蹇熻闂暟鎹粨鏋勶紝寮傚父鐨勭戶鎵垮厑璁告洿娓呮櫚鍦板獎灝勫埌鏀寔寮傚父澶勭悊鐨勮璦銆傚悓鏃訛紝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鐨勫獎灝勶紝濡傛灉浣犳兂浣跨敤鍏跺畠璇█褰卞皠錛屼綘灝辮鍒囨崲鍒頒笉鍚岀殑鎻愪緵鍟嗙殑浜у搧鎴栦嬌鐢ㄦ病鏈夊疄楠屾敮鎸佺殑CORBA瀹炵幇銆?/p> <p>6銆丳ersistence(鎸佷箙鎬?<br />Slice騫朵笉鍗曞崟鏄竴涓帴鍙e畾涔夎璦銆傚畠涔熷彲浠ョ敤鏉ユ弿榪癐ce瀵硅薄榪涜鎸佷箙鐨勫睘鎬э紝浣垮緱寰堝鏄撳啓鍑烘敮鎸佸璞℃寔涔呯殑鏈嶅姟鍣ㄧ紼嬪簭銆?/p> <p>7銆丮etadata(鍏冩暟鎹?<br />Slice鏀寔鍙墿灞曠殑鍏冩暟鎹鏂斤紝瀹冨厑璁窼lice涓哄疄鐜板簲鐢ㄧ▼搴忕浉鍏崇殑鏌愪簺鐩殑鑰屼嬌鐢ㄥ厓鏁版嵁鐨勬爣璁般備緥濡傚厓鏁版嵁鍙互鐢ㄤ簬瀹氬埗涓嶅悓浜庢爣鍑咼ava褰卞皠鏂瑰紡鐨勫獎灝勬潵婊¤凍鏌愪簺鐗瑰畾紼嬪簭鐨勮姹傘?/p> <p>8銆丯o any Type(娌℃湁any鏁版嵁綾誨瀷)<br />Ice 娌℃湁CORBA閲孉ny綾誨瀷鐨勭瓑浠鋒暟鎹被鍨嬨傝繖瀵逛簬CORBA鐢ㄦ埛鏉ヨ鍙兘鎰熷埌寰堟儕璁訛紝鍥犱負Any鏁版嵁綾誨瀷鍦–ORBA鏍囧噯閲岃騫挎硾鍦頒嬌鐢ㄣ備絾鏄紝Any 鏁版嵁綾誨瀷鏄浣欑殑錛氱▼搴忚璦璞ava鍜孋++騫舵病鏈堿ny鏁版嵁綾誨瀷錛岃屼笖Any鏁版嵁綾誨瀷瀵瑰垎甯冨紡緋葷粺鏉ヨ涔熶笉鏄睘浜庝竴涓壇濂界殑璁捐銆侫ny鏁版嵁綾誨瀷閫氬父鐢ㄥ湪涓ょ鎯呭喌涓嬶細涓縐嶆槸闇瑕佸湪緋葷粺鐨勪腑浠嬮儴鍒嗗鎺ユ敹鍒扮殑鏁版嵁鐩存帴榪涜浼犻掞紝鑰屼笉鐢ㄥ叧蹇冩暟鎹殑鐪熷疄綾誨瀷錛屼緥濡侰ORBA鐨凟vent鏈嶅姟錛屽彟涓縐嶆槸鐢ㄦ潵浣滀負 union(鑱斿悎緇撴瀯浣?鐨勪竴涓瓑浠風墿銆?/p> <p>Ice鍙互閫氳繃鍙戦佸拰鎺ユ敹"blobs"鐨勮姹傛潵婊¤凍絎竴縐嶆儏鍐碉紝Slice鐨勭被緇ф壙鍙互婊¤凍絎簩縐嶆儏鍐點備換浣曚竴縐嶆儏鍐碉紝Ice鐨勭▼搴忛兘鏇撮珮鏁堬紝鏇村姞鍏鋒湁綾誨瀷瀹夊叏錛屾洿鍔犲鏄撹璁″拰瀹炵幇錛岃屼笉浼氶亣鍒頒嬌鐢–ORBA Any鏁版嵁綾誨瀷鏃舵墍鍏鋒湁鐨勫鏉傛с?/p> <p>9銆両ce Core(Ice鐨勬牳蹇?<br />铏界潃鏃墮棿鐨勬紨鍖栵紝CORBA鐨勬牳蹇冨彉寰楀紓甯哥殑澶嶆潅銆備竴涓垵綰х殑渚嬪瓙瑕佸湪POA(CORBA鐨勫璞¢傞厤鍣?閲岄潰姝g‘浣跨敤閮介渶瑕佸緢涓撲笟鐨勭煡璇嗭紝鍗充嬌浣犲彧鎯蟲敮鎸佷竴灝忛儴鍒嗙殑鎶鏈壒鎬с侷ce鐨勫璞¢傞厤鍣紝鍦ㄥ彟涓鏂歸潰鏉ヨ錛屾洿鍔犵畝鍗曘佺洿瑙傘佷篃璺烶OA涓鏍風殑鍔熻兘寮哄ぇ錛氬畾涔夎壇濂界殑API浣垮緱姣擯OA寮鍙戜竴涓彲鎵╁睍鐨勭▼搴忛」鐩渶瑕佹洿灝戠殑宸ヤ綔銆?/p> <p>10銆両ce Protocol(Ice鍗忚)<br />IIOP鏄疌ORBA鐨勫急鐐逛箣涓錛屽叿鏈夊お澶氱殑璁捐緙洪櫡銆備緥濡傦紝娌℃湁緙哄皯璇鋒眰鐨勫皝瑁呮潵闃叉娑堟伅鐨勫垎鍙戙備綆鏁堢殑瀵歸綈瑙勫垯瀵艱嚧浜嗗浣欑殑鏁版嵁鎷瘋礉銆傛暟鎹殑緙栫爜瑙勫垯澶嶆潅錛屽嵈娌℃湁甯︽潵鐩稿簲鐨勬ц兘鐨勬彁楂橈紝瀵硅薄寮曠敤鐨勭紪鐮佸紓甯稿鏉傦紝濡ㄧ浜嗘湁鏁堢殑鐨勭紪鐮佸拰鍦ㄥ唴瀛樺叡浜殑鎵ц銆備唬鐮侀泦鐨勫崗鍟嗘槸鍦ㄦ爣鍑嗕笅杈炬垚錛屼細閬亣鍒板緢澶氬啿紿併傛墍鏈夎繖浜涘鏉傛ф剰鍛崇潃IIOP寰堥毦瀹炵幇錛屽甫鏉ヤ簡浜掓搷浣滄у拰鎬ц兘涓婄殑闂銆侷ce鐨勫崗璁槸綆鍗曞茍涓旀洿鍔犳湁鏁堬紝瀹冩彁渚涗簡涓浜汭IOP娌℃湁鎻愪緵鐨勭壒鎬э紝渚嬪鏁版嵁鍘嬬緝鍜屾壒璇鋒眰鎵歸噺鍖栥?/p> <p>11銆丼ecurity(瀹夊叏鎬?<br />瀹夊叏鎬ф槸CORBA鐨勬渶澶х殑涓涓毦棰樸侽MG宸茬粡閫氳繃浜嗗涓爣鍑嗭紝浣嗗緢澶氶兘娌℃湁琚箍娉涘湴瀹炵幇錛孋ORBA鐨勫鎴蜂緷鐒舵病鏈変竴涓彲宸ヤ綔鐨勫畨鍏ㄧ殑ORBs銆傚綋璁捐 Ice鏃訛紝鍜孋ORBA鐩告瘮錛屽畨鍏ㄦц璁や負鏄熀鏈殑鐗規с傝繖灝辨槸Ice鎻愪緵涓涓湡姝h兘榪愪綔鐨凷SL瀹炵幇鐨勫畨鍏ㄧ殑闃茬伀澧欑殑鍘熷洜銆?/p> <p>12銆丆++ Mapping(C++鏄犲皠)<br />鐢?C++鏉ヤ嬌鐢–ORBA闈炲父鍥伴毦銆傚嵆浣夸綘鏄緢鏈夌粡楠岀殑C++寮鍙戣呫侰ORBA鐨凜++鏄犲皠鍦ㄥ唴瀛樼鐞嗗拰寮傚父瀹夊叏鏂歸潰鏈夊緢澶氱殑闄烽槺鍜岀己闄楓傜浉杈冧箣涓嬶紝Ice鐨凜++鏄犲皠闈炲父綆鍗曞拰鐩磋銆傚畠涓嶄細鏈夊洜涓洪敊璇屽鑷村唴瀛樼殑娉勬紡銆傝璁頒綇鐨勬槧灝勮鍒欑殑鏁扮洰姣擟ORBA鐨凜++鏄犲皠灝戝緱澶氾紝鑰屼笖Ice鐨凜++ 鏄犲皠鏄熀浜庡伐涓氭爣鍑嗙殑STL銆?/p> <p>14銆丼calability(鍙幾緙╂?<br />褰撲綘鏄竴涓笓瀹舵椂錛孋ORBA鏄竴縐嶅彲浼哥緝鎬у緢濂界殑鎶鏈備絾閲囩敤Ice錛屼換浣曚漢閮藉彲浠ュ啓鍑洪珮鍙幾緙╂х殑搴旂敤銆備緥濡傦紝Ice瀹炵幇浜嗕竴涓寔涔呭寲鐨勯愬嚭鍣紝浣犲彲浠ヤ嬌鐢ㄥ畠鏉ュ緢瀹規槗鍦板鐞嗕笂鐧句竾鐨勫璞★紝浣犳墍鍋氱殑浠呬粎鏄湪 Slice鐨勫畾涔夐噷鎸囧畾瀵硅薄鐨勬暟鎹紝鍓╀笅鐨勫伐浣淚ce涓鎵嬪寘鍔烇細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絳変環浜庡鎴風鐨凙MI錛屼笉榪嘇MD鏄敤鍦ㄦ湇鍔″櫒绔殑銆備嬌鐢ˋMI錛屼綘鍙互鍙戦佷簡涓涓姹傦紝鐒跺悗鍦ㄤ互鍚庣殑涓涓簨浠舵敹鍒版湇鍔″櫒鐨勭粨鏋滄椂璋冪敤涓涓洖璋冨嚱鏁版潵澶勭悊榪斿洖鐨勭粨鏋溿傝屼嬌鐢ˋMD錛屼綘鍙互灝嗗垎鍙戠嚎紼嬪綊榪樼粰Ice錛屽茍鍦ㄧ粨鏋滃凡緇忓噯澶囧ソ鍙戦佸埌瀹㈡埛绔椂鍐嶆璋冪敤鍒嗗彂綰跨▼銆?AMI鍜孉MD閮借兘琚繛鎺ヨ搗鏉ワ紝榪欏厑璁鎬綘鍙秷鑰楀緢灝戠殑璧勬簮灝辮兘鏋勫緩楂樻晥鐨勮礬鐢辯▼搴忋?/p> <p>AMI鍜孉MD瀵瑰鎴風鍜屾湇鍔″櫒绔潵璇撮兘鏄忔槑鐨勩備篃灝辨槸錛屼竴涓湇鍔″櫒紼嬪簭涓嶇煡閬撲竴涓姹傛槸鍚﹂氳繃AMI璋冪敤鍙戝嚭鐨勮繕鏄悓姝ュ湴璋冪敤鍙戝嚭鐨勶紝瀹㈡埛绔▼搴忎篃涓嶇煡閬撲竴涓搷浣滅殑璋冪敤鍦ㄦ湇鍔″櫒绔槸閫氳繃AMD鍒嗗彂澶勭悊鐨勮繕鏄悓姝ュ湴澶勭悊鐨勩傚綋闇瑕佷嬌鐢ˋMI鍜孉MD鏃訛紝涓嶇敤淇敼Slice銆?/p> <p>緇撴潫璇細</p> <p>鎴戜滑甯屾湜涓婇潰鐨勮В閲婅兘鍙︿綘嬋鍙戜綘瀵笽ce鐨勫叴瓚c傚鏋滀綘鏈変換浣曠殑闂鎴栬В閲婏紝鎴戜滑浼氶個璇蜂綘鍔犲叆鎴戜滑鐨勯偖浠跺垪琛ㄣ傛垜浠殑鐩爣鏄笉鏂湴鏀硅繘Ice錛屽洜姝や綘鐨勫弽棣堝鎴戜滑鏉ヨ鏄緢鏈変環鍊肩殑銆?/p> <p>聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 gigaboy緲昏瘧瀹屾垚浜?005/7/4 3:02</p> <p>聽</p><img src ="http://www.shnenglu.com/lapcca/aggbug/114595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lapcca/" target="_blank">闃肯</a> 2010-05-06 12:38 <a href="http://www.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://www.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://phitris.com" target="_blank">在线午夜精品</a>| <a href="http://www297777.com" target="_blank">精品动漫一区</a>| <a href="http://shllswkj.com" target="_blank">美女91精品</a>| <a href="http://039658.com" target="_blank">一区在线播放</a>| <a href="http://qqcf9900.com" target="_blank">欧美成人黑人xx视频免费观看</a>| <a href="http://807225.com" target="_blank">亚洲国产精品一区</a>| <a href="http://66hhmm.com" target="_blank">免费一级欧美片在线播放</a>| <a href="http://by274.com" target="_blank">久久中文字幕一区</a>| <a href="http://fjrxzscl.com" target="_blank">日韩视频免费在线</a>| <a href="http://338pv.com" target="_blank">亚洲第一福利社区</a>| <a href="http://017492.com" target="_blank">日韩一二三区视频</a>| <a href="http://wce-expo.com" target="_blank">国产精品久久久久一区二区三区共 </a>| <a href="http://8xfore.com" target="_blank">亚洲欧美中文另类</a>| <a href="http://jigu100.com" target="_blank">欧美日韩国语</a>| <a href="http://scqike.com" target="_blank">亚洲国产精品第一区二区三区</a>| <a href="http://jsgf444.com" target="_blank">亚洲欧美日韩国产中文</a>| <a href="http://aaa798.com" target="_blank">91久久精品国产91久久</a>| <a href="http://cz-sensor.com" target="_blank">欧美视频四区</a>| <a href="http://sinojinxing.com" target="_blank">欧美国产高清</a>| <a href="http://shno1steel.com" target="_blank">欧美一区=区</a>| <a href="http://k8m9.com" target="_blank">欧美日本韩国一区</a>| <a href="http://977dy.com" target="_blank">亚洲欧洲久久</a>| <a href="http://caoliu20.com" target="_blank">久久国产精品久久久久久久久久</a>| <a href="http://feiniao168.com" target="_blank">亚洲成色777777女色窝</a>| <a href="http://89wbw.com" target="_blank">妖精视频成人观看www</a>| <a href="http://ahhccz.com" target="_blank">中文一区在线</a>| <a href="http://playav111.com" target="_blank">亚洲欧美偷拍卡通变态</a>| <a href="http://actinview.com" target="_blank">亚洲美女免费视频</a>| <a href="http://www-57549.com" target="_blank">亚洲尤物在线视频观看</a>| <a href="http://666888123.com" target="_blank">蜜桃精品一区二区三区</a>| <a href="http://www333444123.com" target="_blank">日韩视频免费在线观看</a>| <a href="http://ww3838.com" target="_blank">最新日韩av</a>| <a href="http://251aaa.com" target="_blank">激情久久久久久久</a>| <a href="http://o74sokyoss.com" target="_blank">精品69视频一区二区三区</a>| <a href="http://www44448.com" target="_blank">午夜精品久久久久影视</a>| <a href="http://caerusmdx.com" target="_blank">欧美一区二区女人</a>| <a href="http://xing69.com" target="_blank">久热精品视频在线观看一区</a>| <a href="http://luluse882.com" target="_blank">欧美啪啪成人vr</a>| <a href="http://hkjccc.com" target="_blank">欧美精品一区二区精品网</a>| <a href="http://jlkcjz.com" target="_blank">久久久久国产成人精品亚洲午夜</a>| <a href="http://zhouqie.com" target="_blank">久久九九精品99国产精品</a>| <a href="http://080973.com" target="_blank">亚洲作爱视频</a>| <a href="http://aa56789.com" target="_blank">亚洲精品一区二区在线</a>| <a href="http://77427xyz.com" target="_blank">一区免费观看</a>| <a href="http://99999zc.com" target="_blank">国产综合视频</a>| <a href="http://www330849.com" target="_blank">国产精品女主播一区二区三区</a>| <a href="http://xian369.com" target="_blank">亚洲国产美女久久久久</a>| <a href="http://194123.com" target="_blank">亚洲电影网站</a>| <a href="http://7485888.com" target="_blank">国产亚洲毛片</a>| <a href="http://2312138.com" target="_blank">136国产福利精品导航网址应用</a>| <a href="http://778km.com" target="_blank">91久久精品一区</a>| <a href="http://mgcc37.com" target="_blank">一区二区高清</a>| <a href="http://667996.com" target="_blank">亚洲欧洲精品一区二区三区波多野1战4</a>| <a href="http://xtgoldsky.com" target="_blank">欧美成人性生活</a>| <a href="http://seo8138.com" target="_blank">亚洲精品国产精品国自产观看</a>| <a href="http://lutube666.com" target="_blank">亚洲精品麻豆</a>| <a href="http://wwwby6682.com" target="_blank">国产精品你懂的在线欣赏</a>| <a href="http://by722777.com" target="_blank">欧美一级大片在线观看</a>| <a href="http://ruichengxiang.com" target="_blank">亚洲免费在线视频一区 二区</a>| <a href="http://99chiji1.com" target="_blank">国产一区二区三区在线观看精品 </a>| <a href="http://www-067.com" target="_blank">亚洲国产精品一区二区久</a>| <a href="http://www24822.com" target="_blank">欧美日韩综合在线</a>| <a href="http://yc7878.com" target="_blank">国产精品在线看</a>| <a href="http://xtgoldsky.com" target="_blank">一区二区黄色</a>| <a href="http://huxiu123.com" target="_blank">欧美成人自拍</a>| <a href="http://jldianda.com" target="_blank">亚洲欧美日韩视频一区</a>| <a href="http://123273.com" target="_blank">亚洲日本欧美</a>| <a href="http://xhs015.com" target="_blank">国产精品久久午夜</a>| <a href="http://hhhtalk.com" target="_blank">亚洲免费网址</a>| <a href="http://xjhzgy.com" target="_blank">午夜日本精品</a>| <a href="http://chunshanketang.com" target="_blank">国产精品大片免费观看</a>| <a href="http://7282789.com" target="_blank">久久婷婷综合激情</a>| <a href="http://9113i.com" target="_blank">99re在线精品</a>| <a href="http://725443.com" target="_blank">久久亚洲视频</a>| <a href="http://xb989.com" target="_blank">亚洲午夜一二三区视频</a>| <a href="http://7213523.com" target="_blank">国产视频在线观看一区二区三区 </a>| <a href="http://rbet6365.com" target="_blank">欧美一级免费视频</a>| <a href="http://3344568.com" target="_blank">欧美国产欧美亚洲国产日韩mv天天看完整 </a>| <a href="http://wogoyao.com" target="_blank">夜夜精品视频一区二区</a>| <a href="http://www-44469.com" target="_blank">欧美巨乳在线</a>| <a href="http://o10669.com" target="_blank">亚洲精品精选</a>| <a href="http://155fck.com" target="_blank">亚洲精品久久久久久下一站</a>| <a href="http://lfxhfh.com" target="_blank">欧美第十八页</a>| <a href="http://by274.com" target="_blank">午夜精品久久久久</a>| <a href="http://www92994.com" target="_blank">欧美激情按摩</a>| <a href="http://woshinannan741.com" target="_blank">亚洲一区二区三</a>| <a href="http://nbpacking.com" target="_blank">欧美xart系列在线观看</a>| <a href="http://4106446.com" target="_blank">久久成人羞羞网站</a>| <a href="http://5858yp.com" target="_blank">亚洲片区在线</a>| <a href="http://china391.com" target="_blank">国产精品人人爽人人做我的可爱</a>| <a href="http://497988.com" target="_blank">欧美日本韩国在线</a>| <a href="http://yjizz08.com" target="_blank">一本色道**综合亚洲精品蜜桃冫</a>| <a href="http://jnjpsm.com" target="_blank">日韩视频在线一区二区</a>| <a href="http://wwwhaodd116.com" target="_blank">亚洲国产国产亚洲一二三</a>| <a href="http://921367.com" target="_blank">免费成人你懂的</a>| <a href="http://naturalgiftfashion.com" target="_blank">麻豆久久久9性大片</a>| <a href="http://www227zh.com" target="_blank">亚洲精品欧美</a>| <a href="http://613by.com" target="_blank">国产精品一二三视频</a>| <a href="http://dfrllaser.com" target="_blank">在线精品高清中文字幕</a>| <a href="http://mide776.com" target="_blank">亚洲天堂av综合网</a>| <a href="http://edtxt.com" target="_blank">亚洲综合电影</a>| <a href="http://szbeikai.com" target="_blank">在线成人av.com</a>| <a href="http://06le.com" target="_blank">久久综合久久久久88</a>| <a href="http://lexueit.com" target="_blank">国产精品久99</a>| <a href="http://maomi54.com" target="_blank">欧美aa在线视频</a>| <a href="http://popowq.com" target="_blank">国产女人精品视频</a>| <a href="http://687673.com" target="_blank">欧美成人免费在线</a>| <a href="http://51120guahao.com" target="_blank">国产精品久久一区主播</a>| <a href="http://6767673.com" target="_blank">精品va天堂亚洲国产</a>| <a href="http://www633998.com" target="_blank">亚洲色在线视频</a>| <a href="http://www38044.com" target="_blank">欧美大片免费观看在线观看网站推荐</a>| <a href="http://sdjzzs.com" target="_blank">欧美日本精品在线</a>| <a href="http://9a5x.com" target="_blank">久久国产精品久久w女人spa</a>| <a href="http://811897.com" target="_blank">亚洲一区二区四区</a>| <a href="http://jilcool.com" target="_blank">久久精品一区蜜桃臀影院</a>| <a href="http://123hiba.com" target="_blank">国产精品久久97</a>| <a href="http://7m08.com" target="_blank">一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 </a>| <a href="http://4986888.com" target="_blank">亚洲精品久久久久久下一站</a>| <a href="http://456kp.com" target="_blank">亚洲综合视频在线</a>| <a href="http://1116333.com" target="_blank">欧美阿v一级看视频</a>| <a href="http://855821.com" target="_blank">欧美国产成人精品</a>| <a href="http://lutube666.com" target="_blank">亚洲欧洲日本在线</a>| <a href="http://dlwansheng.com" target="_blank">亚洲国产另类精品专区 </a>| <a href="http://388268.com" target="_blank">日韩午夜免费视频</a>| <a href="http://977dy.com" target="_blank">欧美激情aaaa</a>| <a href="http://bixiuge.com" target="_blank">亚洲精品一区二区三区av</a>| <a href="http://www-85489.com" target="_blank">欧美日韩亚洲91</a>| <a href="http://caoav8.com" target="_blank">亚洲最新在线</a>| <a href="http://6966g.com" target="_blank">欧美激情久久久久</a>| <a href="http://qiezi2vip.com" target="_blank">亚洲在线第一页</a>| <a href="http://5858yp.com" target="_blank">亚洲欧洲一区二区天堂久久</a>| <a href="http://556995.com" target="_blank">中文亚洲视频在线</a>| <a href="http://atmub.com" target="_blank">久久综合色8888</a>| <a href="http://dacellflex.com" target="_blank">久久久久九九九</a>| <a href="http://uuuu79.com" target="_blank">这里是久久伊人</a>| <a href="http://www993997.com" target="_blank">在线日韩电影</a>| <a href="http://zb557.com" target="_blank">国产精自产拍久久久久久蜜</a>| <a href="http://lucky5888.com" target="_blank">亚洲综合激情</a>| <a href="http://y08877.com" target="_blank">国产精品麻豆va在线播放</a>| <a href="http://yp8882.com" target="_blank">久久深夜福利</a>| <a href="http://555888666.com" target="_blank">亚洲一区精品在线</a>| <a href="http://sd-12530.com" target="_blank">久久久免费av</a>| <a href="http://www3344uh.com" target="_blank">在线亚洲高清视频</a>| <a href="http://486be.com" target="_blank">在线观看欧美黄色</a>| <a href="http://114499com.com" target="_blank">欧美一区二区黄色</a>| <a href="http://kissgz.com" target="_blank">日韩午夜在线电影</a>| <a href="http://yeyesaoqi.com" target="_blank">亚洲欧洲中文日韩久久av乱码</a>| <a href="http://www780yy.com" target="_blank">欧美精品久久久久久久</a>| <a href="http://toomicsvip.com" target="_blank">中文在线不卡视频</a>| <a href="http://668www.com" target="_blank">在线视频国产日韩</a>| <a href="http://www-222304.com" target="_blank">久久婷婷激情</a>| <a href="http://wu52vip.com" target="_blank">美日韩精品视频</a>| <a href="http://gelaimeiwedding.com" target="_blank">久久香蕉精品</a>| <a href="http://626tw.com" target="_blank">久久国产精品久久久久久电车</a>| <a href="http://739191g.com" target="_blank">亚洲欧美精品suv</a>| <a href="http://880895.com" target="_blank">欧美黑人多人双交</a>| <a href="http://9955377.com" target="_blank">亚洲欧美国产日韩天堂区</a>| <a href="http://4080sy.com" target="_blank">久久亚洲图片</a>| <a href="http://syfeichi.com" target="_blank">久久精品成人一区二区三区蜜臀</a>| <a href="http://5cok.com" target="_blank">午夜精品久久久久久99热软件</a>| <a href="http://www49966.com" target="_blank">一区二区冒白浆视频</a>| <a href="http://91sp136.com" target="_blank">国产一区二区激情</a>| <a href="http://414794.com" target="_blank">国产精品福利在线</a>| <a href="http://er65.com" target="_blank">国产精品久久一区二区三区</a>| <a href="http://2cc8.com" target="_blank">一区二区高清在线观看</a>| <a href="http://tao62bao.com" target="_blank">亚洲国产精品一区二区第四页av</a>| <a href="http://wwwyinyinai149.com" target="_blank">一区二区三区**美女毛片</a>| <a href="http://18cgh.com" target="_blank">亚洲经典一区</a>| <a href="http://244223.com" target="_blank">最近中文字幕mv在线一区二区三区四区 </a>| <a href="http://cpddddcc.com" target="_blank">国产欧美日韩视频</a>| <a href="http://zqx186.com" target="_blank">欧美激情欧美狂野欧美精品</a>| <a href="http://zxxx3.com" target="_blank">亚洲黄网站黄</a>| <a href="http://188267.com" target="_blank">亚洲激情视频在线</a>| <a href="http://www-88899.com" target="_blank">久久不射2019中文字幕</a>| <a href="http://ooo789.com" target="_blank">亚洲一区二区三区色</a>| <a href="http://ztsctgs.com" target="_blank">欧美一级成年大片在线观看</a>| <a href="http://www-787788.com" target="_blank">一本综合精品</a>| <a href="http://954k.com" target="_blank">欧美a级大片</a>| <a href="http://baigoso.com" target="_blank">欧美亚洲一区</a>| <a href="http://wawabt.com" target="_blank">国产精品日韩久久久</a>| <a href="http://yh5557.com" target="_blank">国产精品v一区二区三区</a>| <a href="http://559dd.com" target="_blank">国产精品户外野外</a>| <a href="http://9906w.com" target="_blank">欧美在线视频导航</a>| <a href="http://pgpg520.com" target="_blank">亚洲美女中文字幕</a>| <a href="http://744734.com" target="_blank">免费日韩精品中文字幕视频在线</a>| <a href="http://junmatek.com" target="_blank">国产精品99久久久久久有的能看</a>| <a href="http://thisisfil.com" target="_blank">亚洲美女视频</a>| <a href="http://xb989.com" target="_blank">欧美电影免费观看高清完整版</a>| <a href="http://491342.com" target="_blank">免费成人激情视频</a>| <a href="http://buyiker.com" target="_blank">黄色日韩网站</a>| <a href="http://xvideoav99.com" target="_blank">久久免费视频在线</a>| <a href="http://830085.com" target="_blank">亚洲综合第一</a>| <a href="http://91chaopron.com" target="_blank">国产日韩欧美在线播放不卡</a>| <a href="http://788111c.com" target="_blank">精品99一区二区</a>| <a href="http://wg246.com" target="_blank">美女成人午夜</a>| <a href="http://8558585.com" target="_blank">美女黄毛**国产精品啪啪</a>| <a href="http://123yongjiu.com" target="_blank">欧美日韩国产片</a>| <a href="http://njggmy.com" target="_blank">99成人免费视频</a>| <a href="http://0370city.com" target="_blank">亚洲乱码一区二区</a>| <a href="http://993934.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>