真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HRESULT宏的介紹-創(chuàng)新互聯(lián)

COM編程或涉及到使用COM組件的時(shí)候,常使用HRESULT作為函數(shù)的返回值,來(lái)表示函數(shù)執(zhí)行的成功與否。HRESULT返回的成功與否,可用以下兩個(gè)宏來(lái)判斷:

  1. SUCCEEDED

原型如下:

成都創(chuàng)新互聯(lián)主要業(yè)務(wù)有網(wǎng)站營(yíng)銷策劃、做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、小程序制作、H5場(chǎng)景定制、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過(guò)程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、營(yíng)銷型網(wǎng)站建設(shè)資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。 
BOOL SUCCEEDED(  HRESULT hr
);

對(duì)應(yīng)的定義(具體的實(shí)現(xiàn)):#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)

2. FAILED

原型如下:

BOOL FAILED(  HRESULT hr
);

對(duì)應(yīng)的定義(具體的實(shí)現(xiàn)):#define FAILED(hr) (((HRESULT)(hr)) < 0)

注意:

使用這兩個(gè)宏來(lái)對(duì)COM組件的返回值HRESULT進(jìn)行判斷;

因?yàn)镠RESULT值為返回狀態(tài),失敗的情況下有很多種狀態(tài),所以不能直接判斷

關(guān)于HRESULT

如果函數(shù)正常執(zhí)行,則返回S_OK,同時(shí)真正的函數(shù)運(yùn)行結(jié)果則通過(guò)參數(shù)指針?lè)祷?。如果遇到了異常情況,則COM系統(tǒng)經(jīng)過(guò)判斷,會(huì)返回相應(yīng)的錯(cuò)誤值。

HRESULT        值          含義
S_OK            0x00000000  成功
S_FALSE        0x00000001  函數(shù)成功執(zhí)行完成,但返回時(shí)出現(xiàn)錯(cuò)誤
E_INVALIDARG    0x80070057  參數(shù)有錯(cuò)誤
E_OUTOFMEMORY  0x8007000E  內(nèi)存申請(qǐng)錯(cuò)誤
E_UNEXPECTED    0x8000FFFF  未知的異常
E_NOTIMPL      0x80004001  未實(shí)現(xiàn)功能
E_FAIL          0x80004005  沒(méi)有詳細(xì)說(shuō)明的錯(cuò)誤。一般需要取得 Rich Error 錯(cuò)誤信息(注1)
E_POINTER      0x80004003  無(wú)效的指針
E_HANDLE        0x80070006  無(wú)效的句柄
E_ABORT        0x80004004  終止操作
E_ACCESSDENIED  0x80070005  訪問(wèn)被拒絕
E_NOINTERFACE  0x80004002  不支持接口

HRESULT 其實(shí)是一個(gè)雙字節(jié)的值,其最高位(bit)如果是0表示成功,1表示錯(cuò)誤。具體參見 MSDN 之"Structure of COM Error Codes"說(shuō)明。我們?cè)诔绦蛑腥绻枰袛喾祷刂?,則可以使用比較運(yùn)算符號(hào);switch開關(guān)語(yǔ)句;也可以使用VC提供的宏:

    HRESULT hr = 調(diào)用組件函數(shù);
      if( SUCCEEDED( hr ) ){...} // 如果成功
      ......
      if( FAILED( hr ) ){...} // 如果失敗
      ......

大多數(shù)COM 函數(shù)以及一些接口成員函數(shù)的返回值類型均為HRESULT 類型。HRESULT 類型的返回值反映了函數(shù)中的一些情況,其類型定義規(guī)范如下:

  31 30 29 28                    16 15                                0
  |-----|--|------------------------|-----------------------------------|

類別碼 (30-31) 反映函數(shù)調(diào)用結(jié)果:
                00 調(diào)用成功
                01 包含一些信息
                10 警告
                11 錯(cuò)誤
自定義標(biāo)記(29) 反映結(jié)果是否為自定義標(biāo)識(shí),1 為是,0 則不是;
操作碼 (16-28) 標(biāo)識(shí)結(jié)果操作來(lái)源,在 Windows 平臺(tái)上,其定義如下:
                #define FACILITY_WINDOWS        8
                #define FACILITY_STORAGE        3
                #define FACILITY_RPC            1
                #define FACILITY_SSPI            9
                #define FACILITY_WIN32          7
                #define FACILITY_CONTROL        10
                #define FACILITY_NULL            0
                #define FACILITY_INTERNET        12
                #define FACILITY_ITF            4
                #define FACILITY_DISPATCH        2
                #define FACILITY_CERT            11
操作結(jié)果碼(0-15) 反映操作的狀態(tài),WinError.h 定義了 Win32 函數(shù)所有可能返回結(jié)果。
                以下是一些經(jīng)常用到的返回值和宏定義:
                S_OK            函數(shù)執(zhí)行成功,其值為 0 (注意,其值與 TRUE 相反)
                S_FALSE        函數(shù)執(zhí)行成功,其值為 1
                S_FAIL          函數(shù)執(zhí)行失敗,失敗原因不確定
                E_OUTOFMEMORY  函數(shù)執(zhí)行失敗,失敗原因?yàn)閮?nèi)存分配不成功
                E_NOTIMPL      函數(shù)執(zhí)行失敗,成員函數(shù)沒(méi)有被實(shí)現(xiàn)
                E_NOTINTERFACE  函數(shù)執(zhí)行失敗,組件沒(méi)有實(shí)現(xiàn)指定的接口

注意:不能簡(jiǎn)單地把返回值與S_OK和S_FALSE比較,而要用SECCEEDED 和FAILED 宏進(jìn)行判斷

FAILED和SUCCEEDED是windows中定義的宏函數(shù),而S_OK只是一個(gè)特定的值。

#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)

#define FAILED(Status) ((HRESULT)(Status) <0)

成功的代碼有多個(gè),失敗的代碼也有多個(gè)一個(gè)函數(shù)在各種情況下返回的狀態(tài)代碼通常將包含多個(gè)成功代碼及多個(gè)失敗代碼。

這就是我們?yōu)槭裁匆褂肧UCCEEDED及FAILED宏的原因。一般不能直接將HRESULT值同某個(gè)成功代碼(如S_OK)進(jìn)行比較以決定某個(gè)函數(shù)是否成功。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁(yè)名稱:HRESULT宏的介紹-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/dpceed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部