Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Az aktív sablontár (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Ezek a funkciók hasznos hibakeresési és nyomkövetési lehetőségeket biztosítanak.
| Név | Description |
|---|---|
| AtlHresultFromLastError | Egy HRESULT formátumú hibakódot ad GetLastError vissza. |
| AtlHresultFromWin32 | Egy Win32 hibakódot HRESULT-sá alakít át. |
| AtlReportError | Beállítja IErrorInfo , hogy hibaadatokat adjon meg egy ügyfélnek. |
| AtlThrow | Dob egy CAtlException. |
| AtlThrowLastWin32 | Hívja meg ezt a függvényt, hogy a Windows függvény GetLastErroreredménye alapján jelezzen egy hibát. |
AtlHresultFromLastError
A híváslánc utolsó hibakódértékét adja vissza HRESULT formátumban.
HRESULT AtlHresultFromLastError();
Megjegyzések
AtlHresultFromLastError meghívja GetLastError az utolsó hibát, és visszaadja a hibát, miután az HRESULT_FROM_WIN32 makróval HRESULT-ra konvertálta.
Requirements
Fejléc: atlcomcli.h
AtlHresultFromWin32
Egy Win32 hibakódot HRESULT-sá alakít át.
AtlHresultFromWin32(DWORD error);
Paraméterek
hiba
Az átalakítandó hibaérték.
Megjegyzések
A Win32 hibakódot HRESULT-vá alakítja át a makró HRESULT_FROM_WIN32 használatával.
Megjegyzés:
A használat HRESULT_FROM_WIN32(GetLastError())helyett használja az AtlHresultFromLastError függvényt.
Requirements
Fejléc: atlcomcli.h
AtlReportError
Beállítja a felületet, IErrorInfo hogy hibainformációt adjon az objektum ügyfeleinek.
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCOLESTR lpszDesc,
const IID& iid = GUID_NULL,
HRESULT hRes = 0);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCOLESTR lpszDesc,
DWORD dwHelpID,
LPCOLESTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCSTR lpszDesc,
const IID& iid = GUID_NULL,
HRESULT hRes = 0);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCSTR lpszDesc,
DWORD dwHelpID,
LPCSTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
UINT nID,
const IID& iid = GUID_NULL,
HRESULT hRes = 0,
HINSTANCE hInst = _AtlBaseModule.GetResourceInstance());
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
UINT nID,
DWORD dwHelpID,
LPCOLESTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0,
HINSTANCE hInst = _AtlBaseModule.GetResourceInstance());
Paraméterek
clsid
[in] A hibát jelentő objektum CLSID azonosítója.
lpszDesc
[in] A hibát leíró sztring. A Unicode-verziók megadják, hogy az lpszDesc LPCOLESTR típusú; az ANSI-verzió az LPCSTR típusát határozza meg.
iid
[in] A hibát meghatározó interfész IID azonosítója, vagy GUID_NULL, ha a hibát az operációs rendszer határozza meg.
hRes
[in] A hívónak visszaadni kívánt HRESULT.
nID
[in] Az erőforrás-azonosító, ahol a hibaleírási sztringet tárolja. Ennek az értéknek 0x0200 és 0xFFFF közé kell esnie, beleértve azokat is. Hibakeresési buildekben az ASSERT függvény akkor jön létre, ha az nID nem indexel érvényes sztringet. A kiadási buildekben a hibaleírási sztring "Ismeretlen hiba" értékre lesz állítva.
dwHelpID
[in] A hiba súgókörnyezet-azonosítója.
lpszHelpFile
[in] A hibát leíró súgófájl elérési útja és neve.
hInst
[in] Az erőforrás leírója. Alapértelmezés szerint ez a __AtlBaseModuleModule::GetResourceInstance__AtlBaseModuleModule paraméter a CAtlBaseModule globális példánya vagy az abból származtatott osztály.
Visszaadott érték
Ha a hRes paraméter nem nulla, a hRes értékét adja vissza. Ha a hRes értéke nulla, akkor a visszatérés első négy verziója AtlReportError DISP_E_EXCEPTION. Az utolsó két verzió a makró MAKE_HRESULT(1, FACILITY_ITF;nID)eredményét adja vissza.
Megjegyzések
A hiba szöveges leírása az lpszDesc sztring. Amikor az ügyfél megkapja a visszaadott AtlReportErrorhRe-ket, az ügyfél hozzáférhet a struktúrához a IErrorInfo hiba részleteiért.
Example
STDMETHODIMP CMyControl::MyErrorProneMethod()
{
BOOL bSucceeded = ErrorProneFunc();
if (bSucceeded)
return S_OK;
else
// hRes is set to DISP_E_EXCEPTION
return AtlReportError(GetObjectCLSID(), L"My error message");
}
Caution
Ne használja AtlReportError a C++ fogáskezelőket. Ezen függvények egyes felülbírálásai belsőleg használják az ATL-sztring-konverziós makrókat, amelyek belsőleg használják a _alloca függvényt. A AtlReportError C++ fogáskezelő használata kivételeket okozhat a C++ fogáskezelőkben.
Requirements
Fejléc: atlcom.h
AtlThrow
Hívja meg ezt a függvényt egy HRESULT állapotkódon alapuló hiba jelzéséhez.
__declspec(noreturn) inline void AtlThrow(HRESULT hr);
Paraméterek
hr
Standard HRESULT érték.
Megjegyzések
Ezt a függvényt az ATL és az MFC-kód használja hibaállapot esetén. Saját kódból is meghívható. A függvény alapértelmezett implementációja a szimbólum _ATL_NO_EXCEPTIONS definíciójától és a projekt típusától, az MFC-től vagy az ATL-től függ.
Ez a függvény minden esetben a hibakeresőhöz lenyomozza a HRESULT-t.
A Visual Studio 2015 3. és újabb frissítésében ez a függvény __declspec(noreturn) attribútummal van elosztva a hamis SAL-figyelmeztetések elkerülése érdekében.
Ha _ATL_NO_EXCEPTIONS nincs definiálva egy MFC-projektben, ez a függvény A HRESULT értéke alapján CMemoryException vagy COleException értéket ad.
Ha _ATL_NO_EXCEPTIONS nincs meghatározva ATL-projektben, a függvény CAtlException értéket ad.
Ha _ATL_NO_EXCEPTIONS van definiálva, a függvény a kivétel kivetése helyett helyességi hibát okoz.
ATL-projektek esetén lehetőség van a függvény saját implementálására, amelyet az ATL használ meghibásodás esetén. Ehhez definiálja saját függvényét ugyanazzal az aláírással, mint AtlThrow és #define AtlThrow , hogy a függvény neve legyen. Ezt az atlexcept.h felvétele előtt kell megtenni (ami azt jelenti, hogy az ATL-fejlécek felvétele előtt kell megtenni, mivel az atlbase.h tartalmazza az atlexcept.h-t). Rendelje hozzá a függvényt __declspec(noreturn) a hamis SAL-figyelmeztetések elkerülése érdekében.
Example
// Constructors and operators cannot return error codes, and
// so they are the place where exceptions are generally used.
class CMyClass
{
private:
CComPtr<IBuddy> m_spBuddy;
public:
CMyClass()
{
HRESULT hr = m_spBuddy.CoCreateInstance(CLSID_Buddy);
if (FAILED(hr))
AtlThrow(hr);
}
// methods ..
};
Requirements
Fejléc: atldef.h
AtlThrowLastWin32
Hívja meg ezt a függvényt, hogy a Windows függvény GetLastErroreredménye alapján jelezzen egy hibát.
inline void AtlThrowLastWin32();
Megjegyzések
Ez a függvény a hibakereső eredményének GetLastError nyomon követésére használható.
Ha _ATL_NO_EXCEPTIONS nincs definiálva egy MFC-projektben, ez a függvény a visszaadott GetLastErrorérték alapján CMemoryException vagy COleException értéket ad vissza.
Ha _ATL_NO_EXCEPTIONS nincs meghatározva ATL-projektben, a függvény CAtlException értéket ad.
Ha _ATL_NO_EXCEPTIONS van definiálva, a függvény a kivétel kivetése helyett helyességi hibát okoz.
Requirements
Fejléc: atldef.h