锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品99久久久久久有的能看 ,一区在线观看,亚洲视频axxxhttp://www.shnenglu.com/yishanhante/category/3872.htmlzh-cnThu, 29 May 2008 06:36:18 GMTThu, 29 May 2008 06:36:18 GMT60COMhttp://www.shnenglu.com/yishanhante/articles/20363.htmljayjayThu, 22 Mar 2007 07:41:00 GMThttp://www.shnenglu.com/yishanhante/articles/20363.htmlhttp://www.shnenglu.com/yishanhante/comments/20363.htmlhttp://www.shnenglu.com/yishanhante/articles/20363.html#Feedback0http://www.shnenglu.com/yishanhante/comments/commentRss/20363.htmlhttp://www.shnenglu.com/yishanhante/services/trackbacks/20363.html絎?绔?緇勪歡

1銆丆OM錛屽嵆緇勪歡瀵硅薄妯″瀷錛屾槸鍏充簬濡備綍寤虹珛緇勪歡浠ュ強(qiáng)濡備綍閫氳繃緇勪歡寤烘瀯搴旂敤紼嬪簭鐨勪竴涓鑼冦?br />2銆佺粍浠剁殑浼樼偣錛氬簲鐢ㄧ▼搴忓彲闅忔椂闂寸殑嫻侀濊屽彂灞曞彉鍖栵紱瀹氬埗搴旂敤紼嬪簭錛涚粍浠跺簱錛涘垎甯冨紡緇勪歡銆?br />3銆佸緇勪歡鐨勯渶姹傦細(xì)緇勪歡蹇呴』鍔ㄦ佽繛鎺ワ紱蹇呴』闅愯棌鍏跺唴閮ㄥ疄鐜扮粏鑺傘?br />4銆丆OM緇勪歡鏄互Win32鍔ㄦ侀摼鎺ュ簱錛圖LLs錛夋垨鍙墽琛屾枃浠訛紙EXEs錛夌殑褰㈠紡鍙戝竷鐨勫彲鎵ц浠g爜緇勬垚

鐨勩傞伒寰狢OM瑙勮寖緙栧啓鐨勭粍浠跺皢鑳藉婊¤凍瀵圭粍浠跺澶熺殑鎵鏈夐渶姹傘侰OM緇勪歡鏄姩鎬侀摼鎺ョ殑錛孋OM浣?/p>

鐢―LL灝嗙粍浠跺姩鎬侀摼鎺ヨ搗鏉ャ傚浜嶤OM緇勪歡鐨勫皝瑁呮槸寰堝鏄撶殑銆侰OM緇勪歡鎸夌収涓縐嶆爣鍑嗙殑鏂瑰紡鏉ュ

甯冧粬浠殑瀛樺湪銆侰OM緇勪歡鏄竴縐嶇粰鍏朵粬搴旂敤紼嬪簭鎻愪緵闈㈠悜瀵硅薄鐨凙PI鎴栨湇鍔$殑鏋佸ソ鏂規(guī)硶銆?br />5銆丆OM騫朵笉鏄竴縐嶈綆楁満璇█銆?br />6銆佸皢COM鍚孌LL鐩告彁騫惰鏄笉鍚堥傜殑銆傚疄闄呬笂COM浣跨敤浜咲LL鏉ョ粰緇勪歡鎻愪緵鍔ㄦ侀摼鎺ョ殑鑳藉姏銆?br />7銆丆OM騫朵笉鏄儚Win32API閭f牱鐨勫嚱鏁伴泦錛屽畠鏇翠富瑕佺殑鏄竴縐嶇紪鍐欒兘澶熸寜闈㈠悜瀵硅薄API褰㈠紡鎻愪緵鏈?/p>

鍔$殑緇勪歡鐨勬柟娉曘?br />8銆丆OM騫朵笉鏄被浼間簬MFC榪欐牱鐨凜++綾誨簱銆侰OM緇欏紑鍙戜漢鍛樻彁渚涚殑鏄竴縐嶅紑鍙戜笌璇█鏃犲叧鐨勭粍浠跺簱

鐨勬柟娉曪紝浣咰OM鏈韓騫舵病鏈夋彁渚涗換浣曞疄鐜般?br />9銆丆OM鍏鋒湁涓涓縐頒綔鏄疌OM搴撶殑API錛屽畠鎻愪緵鐨勬槸瀵規(guī)墍鏈夊鎴峰強(qiáng)緇勪歡閮介潪甯告湁鐢ㄧ殑緇勪歡綆$悊鏈嶅姟

銆?/p>

////////////////////////////////////////////////////////////////////

絎?绔?鎺ュ彛

1銆佸湪COM涓帴鍙e氨鏄竴鍒囥?br />錛?錛夋帴鍙e彲浠ヤ繚鎶ょ郴緇熷厤棣栧鐣屽彉鍖栫殑褰卞搷銆?br />錛?錛夋帴鍙e彲浠ヤ嬌瀹㈡埛鐢ㄥ悓鏍風(fēng)殑鏂瑰紡鏉ュ鐞嗕笉鍚岀殑緇勪歡銆?br />2銆侊紙1錛塁OM鎺ュ彛鍦–++涓槸鐢ㄧ函鎶借薄鍩虹被瀹炵幇鐨勩?br />聽聽 錛?錛変竴涓狢OM緇勪歡鍙互鎻愪緵澶氫釜鎺ュ彛銆?br />聽聽 錛?錛変竴涓狢++綾誨彲浠ヤ嬌鐢ㄥ緇ф壙鏉ュ疄鐜頒竴涓彲浠ユ彁渚涘涓帴鍙g殑緇勪歡銆?br />3銆佺被騫墮潪緇勪歡銆?br />4銆佹帴鍙e茍闈炴繪槸緇ф壙鐨勩傚鎺ュ彛鐨勭戶鎵垮彧涓嶈繃鏄竴縐嶅疄鐜扮粏鑺傝屽凡銆傞櫎浜嗗彲浠ヤ嬌鐢ㄤ竴涓被鏉ュ疄

鐜板嚑涓笉鍚岀殑鎺ュ彛澶栵紝榪樺彲浠ョ敤鍗曚釜鐨勭被鏉ュ疄鐜版瘡涓涓帴鍙e啀浣跨敤鎸囧悜榪欎簺綾葷殑鎸囬拡銆?br />5銆佺粍浠跺彲浠ユ敮鎸佷換鎰忔暟鐩殑鎺ュ彛銆備負(fù)鏀寔澶氶噸鎺ュ彛錛屽彲浠ヤ嬌鐢ㄥ閲嶇戶鎵褲傛敮鎸佸閲嶆帴鍙g殑緇勪歡

鍙互琚湅浣滄槸鎺ュ彛鐨勯泦鍚堛?br />6銆丆OM鎺ュ彛鐨勪笉鍙樻с佸鎬佷互鍙?qiáng)鎺ュ彛鐟翩壯潃?br />錛?錛変竴鏃﹀叕甯冧簡涓涓帴鍙o紝閭d箞瀹冨皢姘歌繙淇濇寔涓嶅彉銆傚綋瀵圭粍浠惰繘琛屽崌綰ф椂錛屼竴鑸笉浼?xì)淇敼宸叉?/p>

鐨勬帴鍙o紝鑰屾槸鍔犲叆涓浜涙柊鐨勬帴鍙c?br />錛?錛夊鎬佹寚鐨勬槸鍙互鎸夊悓涓縐嶆柟寮忔潵澶勭悊涓嶅悓鐨勫璞°?br />7銆佽櫄鎷熷嚱鏁拌〃錛坴tbl)錛氬寘鍚竴緇勬寚鍚戣櫄鎷熷嚱鏁板疄鐜扮殑鎸囬拡銆?br />瀹氫箟涓涓函鎶借薄鍩虹被涔熷氨鏄畾涔変簡鐩稿簲鐨勫唴瀛樼粨鏋勩備絾姝ゅ唴瀛樺彧鏄湪媧劇敓綾諱腑瀹炵幇姝ゆ娊璞″熀綾繪椂

鎵嶄細(xì)琚垎閰嶃傚綋媧劇敓綾葷戶鎵夸竴涓娊璞″熀綾繪椂錛屽畠?yōu)畣鐟翩壙姝ゅ唴瀛樉l撴瀯銆?br />8銆佸湪COM涓紝瀵逛竴涓粍浠剁殑璁塊棶鍙兘閫氳繃鍑芥暟瀹屾垚錛岃岀粷涓嶈兘鐩存帴閫氳繃鍙橀噺銆?/p>

9銆佹帴鍙g殑鐪熸鐨勫▉鍔涘湪浜庣戶鎵挎鎺ュ彛鐨勬墍鏈夌被鍧囧彲浠ヨ瀹㈡埛鎸夊悓涓鏂瑰紡榪涜澶勭悊銆?/p>


////////////////////////////////////////////////////////////


絎?绔?QueryInterface鍑芥暟


1銆佹帴鍙f煡璇細(xì)
瀹㈡埛鍚岀粍浠剁殑浜や簰閮芥槸閫氳繃涓涓帴鍙e畬鎴愮殑銆傚湪瀹㈡埛鏌ヨ緇勪歡鐨勫叾浠栨帴鍙f椂錛屼篃鏄氳繃鎺ュ彛瀹屾垚

鐨勩傝繖涓帴鍙e氨鏄疘Unknown銆?br />IUnknown鎺ュ彛鐨勫畾涔夊寘鍚湪Win32 SDK涓殑UNKNOWN.H澶存枃浠朵腑銆?br />interface IUnknown
{
聽聽聽 virtual HRESULT _stdcall QueryInterface(const IID& iid,void **ppv) = 0;
聽聽聽 virtual ULONG _stdcall AddRef() = 0;
聽聽聽 virtual ULONG _stdcall Release() = 0;
}
鍦↖Unknown涓畾涔変簡涓涓悕涓篞ueryInterface鐨勫嚱鏁般傚鎴峰彲浠ヨ皟鐢≦ueryInterface鏉ュ喅瀹氱粍浠?/p>

鏄惁鏀寔鏌愪釜鐗瑰畾鐨勬帴鍙c?br />2銆佹墍鏈夌殑COM鎺ュ彛閮介渶瑕佺戶鎵縄Unknown銆?br />3銆佺敱浜庢墍鏈夌殑COM鎺ュ彛閮界戶鎵夸簡IUnknown,姣忎釜鎺ュ彛鐨剉tbl涓殑鍓嶄笁涓嚱鏁伴兘鏄?/p>

QueryInterface,AddRef鍜孯elease銆傝嫢鏌愪釜鎺ュ彛鐨剉tbl涓殑鍓嶄笁涓嚱鏁頒笉鏄繖涓変釜錛岄偅涔堝畠?yōu)畣涓?/p>

鏄竴涓狢OM鎺ュ彛銆傜敱浜庢墍鏈夌殑鎺ュ彛閮芥槸浠嶪Unknown 緇ф壙鐨勶紝鍥犳鎵鏈夌殑鎺ュ彛閮芥敮鎸?/p>

QueryInterface.鍥犳緇勪歡鐨勪換浣曚竴涓帴鍙i兘鍙互琚鎴風(fēng)敤鏉ヨ幏鍙栧畠鎵鏀寔鐨勫叾浠栨帴鍙c?br />4銆侀潪铏氭嫙緇ф壙錛氭敞鎰廔Unknown騫朵笉鏄櫄鎷熷熀綾伙紝鎵浠OM鎺ュ彛騫朵笉鑳芥寜铏氭嫙鏂瑰紡緇ф壙IUnknown錛?/p>

榪欐槸鐢變簬浼?xì)瀵艰嚧涓嶤OM涓嶅吋瀹圭殑vtbl銆傝嫢COM鎺ュ彛鎸夎櫄鎷熸柟寮忕戶鎵縄Unknown錛岄偅涔圕OM鎺ュ彛鐨剉tbl

涓殑澶翠笁涓嚱鏁版寚鍚戠殑灝嗕笉鏄疘Unknown鐨勪笁涓垚鍛樺嚱鏁般?br />5銆佷竴涓猀uertyInterface鍙互鐢ㄤ竴涓畝鍗曠殑if-then-else璇彞瀹炵幇錛屼絾case璇彞鏄棤娉曠敤鐨勶紝鍥?/p>

涓烘帴鍙f爣璇嗙鏄竴涓粨鏋勮屼笉鏄竴涓暟銆?br />6銆佸閲嶇被鍨嬪強(qiáng)綾誨瀷杞崲
7銆丵ueryInterface鐨勮鍒?br />錛?錛塓ueryInterface榪斿洖鐨勬繪槸鍚屼竴IUnknown鎸囬拡銆?br />錛?錛夎嫢瀹㈡埛鏇劇粡鑾峰彇榪囨煇涓帴鍙o紝閭d箞瀹冨皢鎬昏兘鑾峰彇姝ゆ帴鍙c?br />錛?錛夊鎴峰彲浠ュ啀嬈¤幏鍙栧凡緇忔嫢鏈夌殑鎺ュ彛銆?br />錛?錛夊鎴峰彲浠ヤ粠浠諱綍鎺ュ彛榪斿洖鍒拌搗濮嬫帴鍙c?br />錛?錛夎嫢鑳藉浠庢煇涓熷彛鑾峰彇鏌愮壒瀹氭帴鍙o紝閭d箞鍙互浠庝換鎰忔帴鍙i兘灝嗗彲浠ヨ幏鍙栨鎺ュ彛銆?br />8銆佹帴鍙g殑IID鍐沖畾浜嗗畠鐨勭増鏈傚綋鏀瑰彉浜嗕笅鍒楁潯浠朵腑鐨勪換浣曚竴涓椂錛屽氨搴旂粰鏂版帴鍙f寚瀹氭柊鐨処D錛?br />錛?錛夋帴鍙d腑鍑芥暟鐨勬暟鐩?br />錛?錛夋帴鍙d腑鍑芥暟鐨勬槸欏哄簭銆?br />錛?錛夋煇涓嚱鏁扮殑鍙傛暟銆?br />錛?錛夋煇涓嚱鏁板弬鏁扮殑欏哄簭銆?br />錛?錛夋煇涓嚱鏁板弬鏁扮殑綾誨瀷銆?br />錛?錛夊嚱鏁板彲鑳界殑榪斿洖鍊箋?br />錛?錛夊嚱鏁板弬鏁扮殑鍚箟銆?br />錛?錛夋帴鍙d腑鍑芥暟鐨勫惈涔夈?br />9銆侀伩鍏嶈繚鍙嶉殣鍚拰綰︼細(xì)
錛?錛変嬌鎺ュ彛涓嶈鍦ㄥ叾鎴愬憳鍑芥暟鎬庝箞琚皟鐢ㄩ兘鑳芥甯稿伐浣溿?br />錛?錛夊己鍒跺鎴鋒寜涓瀹氱殑鏂瑰紡鏉ヤ嬌鐢ㄦ鎺ュ彛騫跺湪鏂囨。涓皢榪欎竴鐐硅鏄庢竻妤氥?/p>

//////////////////////////////////////////////////////////////////

絎?绔?寮曠敤璁℃暟

1銆佺敓鍛芥湡鎺у埗
IUnknown鐨勫彟澶栦袱涓垚鍛樺嚱鏁癆ddRef鍜孯elease鐨勪綔鐢ㄥ氨鏄粰瀹㈡埛鎻愪緵涓縐嶈瀹冩寚紺轟綍鏃跺鐞嗗畬

涓涓帴鍙g殑鎵嬫銆?br />2銆丄ddRef鍜孯elease瀹炵幇鐨勬槸涓縐嶅悕涓哄紩鐢ㄨ鏁扮殑鍐呭瓨綆$悊鎶鏈?br />寮曠敤璁℃暟鏄嬌緇勪歡鑳藉鑷繁灝嗚嚜宸卞垹闄ょ殑鏈綆鍗曞悓鏃朵篃鏄晥鐜囨渶楂樼殑鏂規(guī)硶銆?br />COM緇勪歡灝嗙淮鎶や竴涓О鍋氭槸寮曠敤璁℃暟鐨勬暟鍊箋傚綋瀹㈡埛浠庣粍浠跺彇寰椾竴涓帴鍙f椂錛屾寮曠敤璁℃暟鍊煎皢澧?

銆傚綋瀹㈡埛浣跨敤瀹屾煇涓帴鍙e悗錛岀粍浠剁殑寮曠敤璁℃暟鍊煎皢鍑?銆傚綋寮曠敤璁℃暟鍊間負(fù)0鏃訛紝緇勪歡鍗沖彲灝嗚嚜宸變粠

鍐呭瓨涓垹闄ゃ?br />3銆佹紜嬌鐢ㄥ紩鐢ㄨ鏁拌鍒欙細(xì)
錛?錛夊湪榪斿洖涔嬪墠璋冪敤AddRef銆傚浜庨偅浜涜繑鍥炴帴鍙f寚閽堢殑鍑芥暟錛屽湪榪斿洖涔嬪墠搴旂敤鐩稿簲鐨勬寚閽堣皟鐢?/p>

AddRef銆傝繖浜涘嚱鏁板寘鎷琎ueryInterface鍙?qiáng)CreateInstance銆傝繖鏍峰綋瀹㈡埛浠庤繖縐嶅嚱鏁板緱鍒頒竴涓帴鍙?/p>

鍚庯紝瀹冨皢鏃犻渶璋冪敤AddRef銆?br />錛?錛夊湪浣跨敤瀹屾帴鍙d箣鍚庤皟鐢≧elease銆傚湪浣跨敤瀹屾煇涓帴鍙d箣鍚庡簲璋冪敤姝ゆ帴鍙g殑Release鍑芥暟銆?br />錛?錛夊湪璧嬪間箣鍚庤皟鐢ˋddRef銆傚湪灝嗕竴涓帴鍙f寚閽堣祴緇欏彟澶栦竴涓帴鍙f寚閽堟椂錛屽簲璋冪敤AddRef銆傛崲

鍙ヨ瘽璇達(dá)紝鍦ㄥ緩绔嬫帴鍙g殑鍙﹀涓涓紩鐢ㄤ箣鍚庡簲澧炲姞鐩稿簲緇勪歡鐨勫紩鐢ㄨ鏁般?br />4銆佸湪瀹㈡埛鐪嬫潵錛屽紩鐢ㄨ鏁版槸澶勪簬鎺ュ彛綰т笂鑰屼笉鏄粍浠剁駭涓婄殑銆?br />5銆佷負(fù)浠涔堥夋嫨涓烘瘡涓涓帴鍙e崟鐙淮鎶や竴涓紩鐢ㄨ鏁拌屼笉鏄拡瀵規(guī)暣涓粍浠剁淮鎶ゅ紩鐢ㄨ鏁幫紵錛?錛変嬌

紼嬪簭璋冭瘯鏇翠負(fù)鏂逛究錛涳紙2錛夋敮鎸佽祫婧愮殑鎸夐渶鑾峰彇銆?br />6銆丄ddRef&Release鐨勪緥瀛?br />ULONG _stdcall AddRef()
{
聽聽聽 return InterlockedIncrement(&m_cRef);
}
ULONG _stdcall Release()
{
聽聽聽 if(InterlockedDecrement(&m_cRef)
聽聽聽 {
聽聽聽聽聽聽聽 delete this;
聽聽聽聽聽聽聽 return 0;
聽聽聽 }
聽聽聽 return m_cRef;
}
7銆佸綋寤虹珛涓涓柊緇勪歡鏃訛紝搴斿緩绔嬩竴涓姝ょ粍浠剁殑寮曠敤銆傚洜姝ゅ垱寤虹粍浠舵椂錛屽湪灝嗘寚閽堣繑鍥炵粰瀹㈡埛

涔嬪墠錛屽簲璇ュ澶х粍浠剁殑寮曠敤璁℃暟鍊箋傝繖浣跨▼搴忓憳鍙互涓嶅繀鍦ㄨ皟鐢–reateInstance 鎴?/p>

QueryInterface涔嬪悗璁扮潃鍘昏皟鐢ˋddRef銆?br />8銆佸紩鐢ㄨ鏁拌鍒欎紭鍖栵細(xì)
錛?錛夎緭鍑哄弬鏁拌鍒欙細(xì)浠諱綍鍦ㄨ緭鍑哄弬鏁頒腑鎴栦綔璇惰繑鍥炲艱繑鍥炰竴涓柊鐨勬帴鍙f寚閽堢殑鍑芥暟蹇呴』瀵規(guī)鎺?/p>

鍙f寚閽堣皟鐢ˋddRef銆?br />錛?錛夎緭鍏ュ弬鏁拌鍒欙細(xì)瀵逛紶鍏ュ嚱鏁扮殑鎺ュ彛鎸囬拡錛屾棤闇璋冪敤AddRef鍜孯elease錛岃繖鏄洜涓哄嚱鏁扮殑鐢熷懡

鏈熷祵濂楀湪璋冪敤鑰呯殑鐢熷懡鍛ㄦ湡鍐呫?br />錛?錛夎緭鍏?杈撳嚭鍑芥暟瑙勫垯錛氬浜庣敤杈撳叆-杈撳嚭鍙傛暟浼犻掕繘鏉ョ殑鎺ュ彛鎸囬拡錛屽繀欏誨湪緇欏畠璧嬪彟澶栦竴涓?/p>

鎺ュ彛鎸囬拡涔嬪墠璋冪敤鍏禦elease銆傚湪鍑芥暟榪斿洖涔嬪墠錛岃繕蹇呴』瀵硅緭鍑哄弬鏁頒腑鎵淇濆瓨鐨勬帴鍙f寚閽堣皟鐢?/p>

AddRef銆傚錛?br />void ExchangeForCachedPtr( int i, IX **ppIX)
{
聽聽聽 (*ppIX)->Fx();聽 //Do something with in-parameter.
聽聽聽 (*ppIX)->Release();//Release in parameter.
聽聽聽 *ppIX = g_Cache[i]錛?/Get cached pointer.
聽聽聽 (*ppIX)->AddRef();//AddRef pointer.
聽聽聽 (*ppIX)->Fx();//Do something with out-parameter.
}
錛?錛夊眬閮ㄥ彉閲忚鍒欙細(xì)瀵逛簬灞閮ㄥ鍒剁殑鎺ュ彛鎸囬拡錛岀敱浜庡畠浠彧鏄湪鍑芥暟鐨勭敓鍛藉懆鏈熷唴鎵嶅瓨鍦紝鍥?/p>

姝ゆ棤闇璋冪敤AddRef鍜孯elease銆?br />錛?錛夊叏灞鍙橀噺瑙勫垯錛氬浜庝繚瀛樺湪鍏ㄥ眬鍙橀噺涓殑鎺ュ彛鎸囬拡錛屽湪灝嗗叾浼犻掔粰鍙﹀涓涓嚱鏁頒箣鍓嶏紝蹇?/p>

欏昏皟鐢ㄥ叾AddRef銆傜敱浜庢鍙橀噺鏄叏灞鐨勶紝鍥犳浠諱綍鍑芥暟閮藉彲浠ラ氳繃璋冪敤鍏禦elease鏉ョ粓姝㈠叾鐢熷懡

鏈熴傚浜庝繚瀛樺湪鎴愬憳鍙橀噺涓殑鎺ュ彛鎸囬拡錛屼篃搴旀寜姝ょ鏂瑰紡榪涜澶勭悊銆傚洜涓虹被涓殑浠諱綍鎴愬憳鍑芥暟閮?/p>

鍙互鏀瑰彉?gòu)啤涓帴鍙f寚閽堢殑鐘舵併?br />錛?錛変笉鑳界‘瀹氭椂鐨勮鍒欙細(xì)瀵逛簬浠諱綍涓嶈兘紜畾鐨勬儏褰紝閮藉簲璋冪敤AddRef鍜孯elease瀵廣?br />聽
////////////////////////////////////////////////////////////////////

絎?绔?鍔ㄦ侀摼鎺?/p>

1銆佷粠DLL涓緭鍑哄嚱鏁幫細(xì)鐢╡xtern "c"鏍囪銆?br />2銆佸湪浣跨敤VC鏃訛紝鍙互鐢―UMPBIN銆侲XE鏉ュ緱鍒版煇涓狣LL涓墍杈撳嚭鐨勭鍙風(fēng)殑娓呭崟銆傚涓嬮潰鐨勫懡浠わ細(xì)

dumpbin -exports Cmpnt1.dll
3銆佽杞紻LL錛歀oadLibrary浠ヨ瑁呰澆鐨凞LL鐨勫悕縐頒綔涓哄弬鏁板茍榪斿洖涓涓寚鍚戞墍瑁呰澆鐨凞LL鐨勫彞鏌勩?/p>

win32鐨凣etProcAddress鍑芥暟鍙互浣跨敤姝ゅ彞鏌勪互鍙?qiáng)寰呯敤鐨勫嚱鏁扮殑鍚嵖U幫紝鐒跺悗榪斿洖涓涓寚鍚戞鍑芥暟

鐨勬寚閽堛?br />4銆佷嬌鐢―LL瀹炵幇緇勪歡鐨勫師鍥狅細(xì)DLL鍙互鍏變韓瀹冧滑鎵閾懼叆鐨勫簲鐢ㄧ▼搴忕殑鍦板潃絀洪棿銆?/p>

//////////////////////////////////////////////////////////////////////

絎?绔?鍏充簬HRESULT銆丟UID銆佹敞鍐岃〃鍙?qiáng)鍏朵粬缁嗚?/p>

1銆丠RESULT鍊肩殑緇撴瀯錛?br />聽_________________________________________________________
|聽聽聽聽|聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽|聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽|聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
|聽聽 聽|聽聽聽聽聽聽聽聽聽聽聽聽聽15bits璁懼浠g爜聽 聽聽聽聽聽聽聽聽聽 |聽聽聽聽聽聽 16bits榪斿洖浠g爜聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽聽聽 聽聽聽聽聽聽聽聽 |
|__|_________________________|______________________________|
聽31 30聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽16聽聽15聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 0聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽


2銆佸父鐢ㄧ殑HRESULT鍊鹼細(xì)
3銆佷竴鑸笉鑳界洿鎺ュ皢HRESULT鍊煎悓鏌愪釜鎴愬姛浠g爜錛堝S_OK錛夎繘琛屾瘮杈冧互鍐沖畾鏌愪釜鍑芥暟鏄惁鎴愬姛涔熶笉

鑳界洿鎺ュ皢鍏跺悓鏌愪釜澶辮觸浠g爜錛堝E_FAIL錛夎繘琛屾瘮杈冧互鍐沖畾鍑芥暟璋冪敤鏄惁澶辮觸銆傚簲璇ヤ嬌鐢?/p>

SECCEEDED鍜孎AILED瀹忋?br />HRESULT hr = CoCreateInstance(...);
if(FAILED(hr))
聽聽聽 return ;
hr = pI->QueryInterface(...);
if(SUCCEEDED(hr))
{
聽聽聽 pIX->Fx();
聽聽聽 pIX->Release();
}
pI->Release();

4銆佸綋鍓嶆墍瀹氫箟鐨勮澶囦唬鐮侊細(xì)
鈥斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺?br />FACILITY_WINDOWS聽聽8
FACILITY_STORAGE聽聽3
FACILITY_SSPI聽聽聽9
FACILITY_RPC聽聽聽1
FACILITY_WIN32聽聽聽7
FACILITY_CONTROL聽聽10
FACILITY_NULL聽聽聽0
FACILITY_ITF聽聽聽4
FACILITY_DISPATCH聽聽2
FACILITY_CERT聽聽聽11
鈥斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺?/p>

5銆佸叧浜庡畾涔夎嚜宸辯殑HRESULT鐨勪竴浜涗竴鑸ц鍒欙細(xì)
錛?錛変笉瑕佸皢0X0000鍙?qiáng)IX01FF鑼冨洿鍐呯殑鍊間綔涓鴻繑鍥炰唬鐮併傝繖浜涘兼槸涓篊OM鎵瀹氫箟鐨凢ACILITY_ITF浠?/p>

鐮佽屼繚鐣欑殑銆傚彧鏈夐伒寰繖涓瑙勫垯錛屾墠涓嶈嚧浣跨敤鎴瘋嚜宸卞畾涔夌殑浠g爜鍚孋OM鎵瀹氫箟鐨勪唬鐮佺浉娣鋒穯銆?br />錛?錛変笉瑕佷紶鎾璅ACILITY_ITF閿欒浠g爜銆?br />錛?錛夊敖鍙兘浣跨敤閫氱敤鐨凜OM鎴愬姛鍙?qiáng)澶辫触浠g爜銆?br />錛?錛夐伩鍏嶅畾涔夎嚜宸辯殑HRESULT錛岃屽彲浠ュ湪鍑芥暟涓嬌鐢ㄤ竴涓緭鍑哄弬鏁般?br />6銆佺敤MAKE_HRESULT瀹忔潵瀹氫箟涓涓狧RESULT鍊鹼紝姝ゅ畯鍙牴鎹墍鎻愪緵鐨勪弗閲嶇駭鍒佽澶囦唬鐮佸強(qiáng)榪斿洖浠?/p>

鐮佺敓鎴愪竴涓狧RESULT鍊箋傚錛?br />MAKE_HRESULT錛圫EVERITY_ERROR錛孎ACILITY_ITF錛?00錛夛紱
7銆丟UID鏄嫳鏂嘒lobally Unique Identifier(鍏ㄥ眬鍞竴鏍囪瘑絎︼級鐨勯瀛楁瘝緙╁啓銆侷ID鏄竴涓?28姣?/p>

鐗癸紙16錛夊瓧鑺傜殑涓涓狦UID緇撴瀯銆?br />8銆佺敓鎴怗UID 錛歎UIDGEN.EXE鍜孏UIDGEN.EXE
9銆丟UID鐨勬瘮杈冿細(xì)鎿嶄綔絎?=;絳変環(huán)鍑芥暟IsEqualGUID,IsEqualIID,IsEqualCLSID銆?br />10銆佸皢GUID浣滀負(fù)緇勪歡鏍囪瘑絎?br />11銆佺敱浜庝竴涓狦UID鍊煎崰鐢ㄤ簡16涓瓧鑺傦紝鍥犳涓鑸笉鐢ㄥ間紶閫扜UID鍙傛暟銆傝屽ぇ閲忎嬌鐢ㄧ殑鏄寜寮曠敤浼?/p>

閫掋?br />12銆丆OM鍙嬌鐢ㄤ簡娉ㄥ唽琛ㄧ殑涓涓垎鏀細(xì)HKEY_CLASSES_ROOT銆?br />13銆佹敞鍐岃〃CLSID鏄竴涓叿鏈夊涓嬫牸寮忕殑涓詫細(xì)
{********-****-****-****-************}
14銆丆LSID鍏抽敭瀛楃殑瀛愬叧閿瓧InprocServer32鍏抽敭瀛楃殑緙虹渷鍊兼槸緇勪歡鎵鍦ㄧ殑DLL鏂囦歡鍚嶇О銆?br />15銆佷竴浜涚壒孌婂叧閿瓧錛?br />錛?錛堿ppID錛氭鍏抽敭瀛椾笅鐨勫瓙鍏抽敭瀛楃殑浣滅敤鏄皢鏌愪釜APPID錛堝簲鐢ㄧ▼搴廔D錛夐殣灝勬垚鏌愪釜榪滅▼鏈嶅姟

鍣ㄥ悕縐般傚垎甯冨紡COM灝嗙敤鍒版鍏抽敭瀛椼?br />錛?錛夌粍瑙佺被鍒細(xì)娉ㄥ唽琛ㄧ殑榪欎竴鍒嗘敮鍙互灝咰ATID錛堢粍浠剁被鍒獻(xiàn)D錛夋槧灝勬垚鏌愪釜鐗瑰畾鐨勭粍浠剁被鍒?br />錛?錛塈nterface錛氱敤浜庡皢IID鏄犲皠鎴愪笌鏌愪釜鎺ュ彛鐩稿叧鐨勪俊鎭?br />錛?錛塋icenses錛氫繚瀛樻巿鏉冧嬌鐢–OM緇勪歡鐨勪竴浜涜鍙俊鎭?br />錛?錛塗ypeLib錛氱被鍨嬪簱鍏抽敭瀛楁墍淇濆瓨鐨勬槸鍏充簬鎺ュ彛鎴愬憳鍑芥暟鎵鐢ㄥ弬鏁扮殑淇℃伅絳夈?br />16銆丳rogID鍛藉悕綰﹀畾錛?br /><Program>.<component>.<version>
17銆佷粠ProgID鍒癈LSID鐨勮漿鎹細(xì)COM搴撳嚱鏁幫細(xì)CLSIDFromProgID鍜孭rogIdFromCLSID:
CLSID clsid;
CLSIDFromProgID("****.****.****",&clsid);
18銆佽嚜娉ㄥ唽錛欴LL涓瀹氳杈撳嚭涓嬭竟涓や釜鍑芥暟錛?br />STDAPI DllRegisterServer();
STDAPI DllUnregisterServer();
鐢ㄦ埛鍙互浣跨敤紼嬪簭REGSVR32.EXE鏉ユ敞鍐屾煇涓粍浠訛紝瀹冨疄闄呬笂鏄氳繃涓婅堪鍑芥暟鏉ュ畬鎴愮粍浠剁殑娉ㄥ唽鐨?

銆?br />19銆佺粍浠剁被鍒嬌寮鍙戜漢鍛樿兘澶熶嬌寮鍙戜漢鍛樻棤闇鍒涘緩緇勪歡瀹炰緥灝辮兘鍐沖畾瀹冩槸鍚︾壒宸ユ墍闇鎺ュ彛銆備竴涓?/p>

緇勪歡綾誨埆瀹為檯涓婂氨鏄竴涓帴鍙i泦鍚堬紝璇ラ泦鍚堝皢琚垎閰嶇粰涓涓狦UID錛屾GUID姝ゆ椂琚О鍋氭槸CATID銆?/p>

瀵逛簬鏌愪釜緇勪歡鑰岃█錛岃嫢瀹冨疄鐜頒簡鏌愪釜緇勪歡綾誨埆鐨勬墍鏈夋帴鍙o紝閭d箞瀹冨彲浠ュ皢鍏舵敞鍐屾垚璇ョ粍浠剁被鍒殑

涓涓垚鍛樸傝繖鏍鳳紝瀹㈡埛灝辮兘澶熼氳繃浠庢敞鍐岃〃涓夋嫨鍙睘浜庢煇涓壒瀹氱粍浠剁被鍒殑緇勪歡鑰屽噯紜壘鍒板畠

鎵闇鐨勭粍浠躲?br />20銆佺粍浠剁被鍒殑鐢ㄩ旓細(xì)鎸囧畾鏌愪釜緇勪歡蹇呴』瀹炵幇鐨勬帴鍙i泦鍚堬紱鐢ㄤ簬鎸囧畾緇勪歡闇瑕佸叾瀹㈡埛鎻愪緵鐨勬帴鍙?/p>

闆嗗悎銆?br />22銆佸湪浣跨敤COM搴撲腑鐨勫叾浠栧嚱鏁幫紙闄oBuildVersion澶栵紝姝ゅ嚱鏁板皢榪斿洖COM搴撶殑鐗堟湰鍙鳳級涔嬪墠錛岃繘

紼嬪繀欏誨厛璋冪敤CoInitialize鏉ュ垵濮嬪寲COM搴撳嚱鏁般傚綋榪涚▼涓嶅啀闇瑕佷嬌鐢–OM搴撳嚱鏁版椂錛屽繀欏昏皟鐢?/p>

CoUninitialize銆傚姣忎竴涓繘紼嬶紝COM搴撳嚱鏁板彧闇鍒濆鍖栦竴嬈°傝繖騫朵笉鏄涓嶈兘澶氭璋冪敤

CoInitailize錛屼絾闇淇濊瘉姣忎竴涓狢oInitialize閮芥湁涓涓浉搴旂殑CoUnoinitialize璋冪敤銆傚綋榪涚▼宸?/p>

緇忚皟鐢ㄨ繃CoInitialize鍚庯紝鍐嶆璋冪敤姝ゅ嚱鏁版墍寰楀埌鐨勮繑鍥炲煎皢鏄疭_FALSE鑰屼笉鍐嶆槸S_OK.
23銆丱LE鏄緩绔嬪湪COM鍩虹涔嬩笂鐨勶紝瀹冨鍔犱簡瀵圭被鍨嬪簱銆佸壀璐存澘銆佹嫋鏀俱丄ctiveX鏂囨。銆佽嚜鍔ㄥ寲浠?/p>

鍙?qiáng)ActiveX鎺т歡鐨勬敮鎸併傚湪OLE搴撲腑鍖呭惈瀵硅繖浜涚壒鎬х殑棰濆鐨勬敮鎸併傚湪闇瑕佷嬌鐢ㄨ繖浜涚壒鎬ф椂錛屽簲璋?/p>

鐢∣leInitailize鍙?qiáng)OleUninitialize,鑰屼笉鏄疌oInitailize鍜?CoUninitialize銆侽le*鍑芥暟灝嗚皟鐢?/p>

Co*鍑芥暟銆備絾鑻ョ▼搴忎腑娌℃湁鐢ㄥ埌閭d簺棰濆鐨勫姛鑳斤紝浣跨敤Ole*灝嗕細(xì)閫犳垚璧勬簮鐨勬氮璐廣?br />24銆丆OM涓垎閰嶅拰閲婃斁鍐呭瓨鐨勬爣鍑嗘柟娉曪細(xì)浠誨姟鍐呭瓨鍒嗛厤鍣ㄣ備嬌鐢ㄦ鍒嗛厤鍣紝緇勪歡鍙互緇欏鎴鋒彁渚?/p>

涓鍧楀彲浠ョ敱瀹㈡埛鍒犻櫎鐨勫唴瀛樸傚彲鍦ㄥ綰跨▼搴旂敤紼嬪簭涓嬌鐢ㄣ?br />涓浜涙柟渚跨殑鍑芥暟錛?br />void聽 *CoTaskMemAlloc(
ULONG cb聽 //size in bytes of block to be allocated
);
void CoTaskMemFree(
void *pv聽 //pointer to memory block to be freed
);
25銆丼tringFromGUID2鍙互灝嗘煇涓狦UID杞崲鎴愪竴涓瓧絎︿覆錛?br />wchar_t szCLSID[39];
int r = ::StringFromGUID2(CLSID_Component1,szCLSID,39);
聽浼犵粰StringFromGUID2鐨勫弬鏁版槸涓涓猆nicode涓詫紙鍗充竴涓瀛楃wchar_t綾誨瀷鐨勬暟緇勮屼笉鏄痗har綾?/p>

鍨嬬殑瀛楃鏁扮粍錛夈傚湪闈濽nicode鐨勭郴緇熶腑錛岄渶瑕佸皢緇撴灉杞寲涓哄崟瀛楄妭瀛楃(char)銆備負(fù)姝わ紝鍙互浣?/p>

鐢ˋNSI鐨剋cstombs鍑芥暟濡備笅錛?br />#ifndef _UNICODE
char szCLSID_single[39];
wcstombs(szCLSID_single,szCLSID,39);
#end if
26銆?br />----------------------------------------------------------------------------
鍑芥暟聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 鐢ㄩ?br />-----------------------------------------------------------------------------
StringFromCLSID聽聽聽聽聽聽 灝咰LSID杞寲鎴愭枃鏈覆
-----------------------------------------------------------------------------
StringFromIID聽聽聽聽聽聽聽聽 灝咺ID杞寲鎴愭枃鏈覆
------------------------------------------------------------------------------
StringFromGUID2聽聽聽聽聽聽 灝咷UID杞寲鎴愭枃鏈覆銆傛涓插皢琚瓨鏀懼湪璋冪敤鑰呮墍鍒嗛厤鐨勭紦鍐插尯涓?br />------------------------------------------------------------------------------
CLSIDFromString聽聽聽聽聽聽 灝嗕竴涓枃鏈覆杞寲鎴怌LSID
------------------------------------------------------------------------------
IIDFromString聽聽聽聽聽聽聽聽 灝嗕竴涓枃鏈覆杞寲鎴怚ID
------------------------------------------------------------------------------



jay 2007-03-22 15:41 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老鸭窝亚洲一区二区三区| av成人国产| 久久精品成人一区二区三区蜜臀| 99国产精品久久久| 国产精品多人| 久久精品欧美日韩精品| 久久久国产精品亚洲一区| 亚洲激情综合| 一本一本久久a久久精品牛牛影视| 欧美日韩国产首页| 性做久久久久久免费观看欧美| 午夜久久影院| 亚洲巨乳在线| 亚洲一区二区三区在线看 | 亚洲私人黄色宅男| 国产一区视频在线观看免费| 免费高清在线一区| 欧美日韩第一区日日骚| 亚洲日本成人女熟在线观看| 日韩写真在线| 国产噜噜噜噜噜久久久久久久久 | 国产视频在线观看一区二区| 久久久久国产一区二区| 久久免费高清| 亚洲影院在线| 久久亚洲免费| 亚洲欧美日韩精品久久| 久久婷婷一区| 午夜精品999| 牛牛影视久久网| 欧美一区日韩一区| 欧美极品欧美精品欧美视频| 久久本道综合色狠狠五月| 免费成人激情视频| 欧美一区二区三区电影在线观看| 欧美国产在线电影| 久久久久久久久岛国免费| 欧美精品一区视频| 美女脱光内衣内裤视频久久影院 | 亚洲日韩视频| 欧美在线观看天堂一区二区三区| 一区二区日韩欧美| 久久性色av| 久久久欧美一区二区| 欧美亚一区二区| 亚洲国产欧美久久| 黄色一区二区在线| 亚洲在线免费观看| 亚洲综合色噜噜狠狠| 欧美韩国一区| 欧美高清影院| 在线观看一区视频| 久久av一区二区三区亚洲| 亚洲欧美日韩国产一区二区| 欧美日本二区| 亚洲精品影院在线观看| 亚洲日本成人网| 欧美精品久久一区二区| 亚洲第一天堂av| 亚洲电影毛片| 麻豆精品传媒视频| 美女视频黄免费的久久| 在线精品观看| 狂野欧美激情性xxxx| 欧美www视频| 亚洲高清一区二| 久久综合久久综合九色| 欧美xx69| 日韩午夜黄色| 欧美色123| 亚洲天堂激情| 久久精品国产91精品亚洲| 国产日韩欧美二区| 久久精品国产在热久久 | 久久精品国产精品亚洲| 国内外成人免费激情在线视频网站| 午夜亚洲视频| 欧美ed2k| 欧美日本精品在线| 久久久久成人网| 亚洲成人在线| 欧美日韩久久久久久| 99综合在线| 久久精品官网| 亚洲精品免费在线| 欧美吻胸吃奶大尺度电影| 亚洲专区欧美专区| 免费在线欧美黄色| 制服丝袜亚洲播放| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲一区二区三区精品视频| 国产精品无码永久免费888| 午夜精品视频在线观看一区二区 | 久久国产66| 亚洲欧洲日本一区二区三区| 欧美日韩一卡| 久久精品一区蜜桃臀影院| 亚洲人成在线观看网站高清| 欧美一区2区三区4区公司二百| 国产在线高清精品| 欧美黄色aaaa| 亚洲永久免费观看| 欧美不卡视频一区| 亚洲一区二区三区色| 激情成人中文字幕| 欧美日韩精品一本二本三本| 亚洲在线一区| 亚洲精品裸体| 麻豆精品一区二区av白丝在线| 亚洲色图在线视频| 亚洲第一成人在线| 国产毛片久久| 欧美新色视频| 欧美经典一区二区| 久久视频在线看| 欧美在线播放视频| 亚洲淫性视频| 一本色道久久加勒比88综合| 欧美福利网址| 久久资源av| 久久国内精品自在自线400部| 99国产精品视频免费观看| 精品成人免费| 一区二区三区自拍| 国产在线欧美| 国外成人在线视频网站| 国产精品丝袜xxxxxxx| 欧美日韩国产综合网| 美女主播精品视频一二三四| 欧美在线播放高清精品| 亚洲综合日韩| 亚洲中字黄色| 亚洲一区二区少妇| 亚洲四色影视在线观看| 在线一区二区三区做爰视频网站| 亚洲国产精品va在线看黑人动漫| 免费在线欧美视频| 欧美国产精品一区| 男女精品视频| 欧美岛国激情| 亚洲国产精品一区制服丝袜| 欧美波霸影院| 亚洲国产福利在线| 亚洲第一在线综合网站| 一本色道婷婷久久欧美| 欧美午夜激情在线| 欧美日韩久久不卡| 欧美系列亚洲系列| 国产欧美精品国产国产专区| 国产精品一区免费视频| 国产精品乱码一区二三区小蝌蚪| 国产精品a久久久久久| 国产精品久久久久久久app| 欧美特黄视频| 国产亚洲欧美另类一区二区三区| 国产亚洲精品资源在线26u| 国内精品一区二区| 最新69国产成人精品视频免费| 亚洲黄色视屏| 亚洲一区二区三区午夜| 性色av一区二区三区| 久久久久久久久综合| 欧美不卡三区| 一区二区三区精密机械公司| 亚洲欧美日韩中文在线制服| 久久精品中文| 欧美伦理在线观看| 国产欧美日韩不卡免费| 在线日韩欧美| 亚洲欧美日本伦理| 欧美成人69| 亚洲一二三区在线| 久久久水蜜桃| 欧美午夜激情视频| 在线观看国产一区二区| 夜夜嗨av一区二区三区中文字幕 | 国产情侣久久| 亚洲卡通欧美制服中文| 欧美一区二区三区免费在线看| 女女同性精品视频| 中日韩视频在线观看| 久久亚洲私人国产精品va| 欧美视频1区| 亚洲国产精品久久91精品| 亚洲影视在线播放| 欧美成人福利视频| 亚洲在线视频网站| 欧美精品18+| 有码中文亚洲精品| 性色av一区二区怡红| 亚洲激情一区二区三区| 欧美一级久久| 欧美日韩综合在线免费观看| 亚洲第一福利在线观看| 欧美一进一出视频| 亚洲免费观看| 欧美精品一区二区三区高清aⅴ| 国内成人精品一区| 午夜一区二区三区不卡视频| 亚洲国产日韩欧美|