Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Deze functies bieden nuttige foutopsporings- en traceringsfaciliteiten.
| Naam | Description |
|---|---|
| AtlHresultFromLastError | Retourneert een GetLastError foutcode in de vorm van een HRESULT. |
| AtlHresultFromWin32 | Converteert een Win32-foutcode naar een HRESULT. |
| AtlReportError |
IErrorInfo Hiermee stelt u foutdetails voor een client in. |
| AtlThrow | Gooit een CAtlException. |
| AtlThrowLastWin32 | Roep deze functie aan om een fout te signaleren op basis van het resultaat van de Windows-functie GetLastError. |
AtlHresultFromLastError
Retourneert de laatste foutcodewaarde van de aanroepende thread in de vorm van een HRESULT.
HRESULT AtlHresultFromLastError();
Opmerkingen
AtlHresultFromLastError roept GetLastError aan om de laatste fout op te halen en retourneert de fout nadat deze is geconverteerd naar een HRESULT met behulp van de HRESULT_FROM_WIN32 macro.
Requirements
Koptekst: atlcomcli.h
AtlHresultFromWin32
Converteert een Win32-foutcode naar een HRESULT.
AtlHresultFromWin32(DWORD error);
Parameterwaarden
fout
De foutwaarde die moet worden geconverteerd.
Opmerkingen
Converteert een Win32-foutcode naar een HRESULT met behulp van de macro HRESULT_FROM_WIN32.
Opmerking
Gebruik in plaats van HRESULT_FROM_WIN32(GetLastError())de functie AtlHresultFromLastError.
Requirements
Koptekst: atlcomcli.h
AtlReportError
Hiermee stelt u de IErrorInfo interface in om foutinformatie te verstrekken aan clients van het object.
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());
Parameterwaarden
clsid
[in] De CLSID van het object dat de fout rapporteert.
lpszDesc
[in] De tekenreeks die de fout beschrijft. De Unicode-versies geven aan dat lpszDesc van het type LPCOLESTR is; de ANSI-versie specificeert een type LPCSTR.
iid
[in] De IID van de interface die de fout definieert of GUID_NULL als de fout is gedefinieerd door het besturingssysteem.
hRes
[in] Het HRESULT dat u wilt terugsturen naar de beller.
nID
[in] De resource-id waarin de tekenreeks voor foutbeschrijving wordt opgeslagen. Deze waarde moet liggen tussen 0x0200 en 0xFFFF, inclusief. In builds voor foutopsporing resulteert een ASSERT als nID geen geldige tekenreeks indexeert. In release-builds wordt de tekenreeks voor foutbeschrijving ingesteld op 'Onbekende fout'.
dwHelpID
[in] De Help-context-id voor de fout.
lpszHelpFile
[in] Het pad en de naam van het Help-bestand waarin de fout wordt beschreven.
hInst
[in] De ingang voor de resource. Deze parameter is __AtlBaseModuleModule::GetResourceInstancestandaard, waar __AtlBaseModuleModule is het globale exemplaar van CAtlBaseModule of een klasse die ervan is afgeleid.
Retourwaarde
Als de parameter hRes niet-nul is, wordt de waarde van hRes geretourneerd. Als hRes nul is, worden de eerste vier versies van AtlReportError retour DISP_E_EXCEPTION. De laatste twee versies retourneren het resultaat van de macro MAKE_HRESULT( 1, FACILITY_ITF,nID).
Opmerkingen
De tekenreeks lpszDesc wordt gebruikt als de tekstbeschrijving van de fout. Wanneer de client de hRes ontvangt waaruit u terugkeert AtlReportError, heeft de client toegang tot de IErrorInfo structuur voor meer informatie over de fout.
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");
}
Waarschuwing
Niet gebruiken AtlReportError in C++ catch handlers. Sommige onderdrukkingen van deze functies maken intern gebruik van de ATL-tekenreeksconversiemacro's, die op hun beurt de _alloca functie intern gebruiken. Het gebruik AtlReportError in een C++ catch-handler kan uitzonderingen veroorzaken in C++ catch handlers.
Requirements
Koptekst: atlcom.h
AtlThrow
Roep deze functie aan om een fout te signaleren op basis van een HRESULT-statuscode.
__declspec(noreturn) inline void AtlThrow(HRESULT hr);
Parameterwaarden
hr-
StandaardWAARDE HRESULT.
Opmerkingen
Deze functie wordt gebruikt door ATL- en MFC-code in het geval van een foutvoorwaarde. Het kan ook worden aangeroepen vanuit uw eigen code. De standaard implementatie van deze functie is afhankelijk van de definitie van het symbool _ATL_NO_EXCEPTIONS en van het type project, MFC of ATL.
In alle gevallen traceert deze functie het HRESULT naar het foutopsporingsprogramma.
In Visual Studio 2015 Update 3 en hoger wordt deze functie toegeschreven __declspec(noreturn) om valse SAL-waarschuwingen te voorkomen.
Als _ATL_NO_EXCEPTIONS niet is gedefinieerd in een MFC-project, genereert deze functie een CMemoryException of een COleException op basis van de waarde van het HRESULT.
Als _ATL_NO_EXCEPTIONS niet is gedefinieerd in een ATL-project, genereert de functie een CAtlException.
Als _ATL_NO_EXCEPTIONS is gedefinieerd, veroorzaakt de functie een assertiefout in plaats van een uitzondering te genereren.
Voor ATL-projecten is het mogelijk om uw eigen implementatie van deze functie te bieden die door ATL moet worden gebruikt in het geval van een storing. U doet dit door uw eigen functie te definiƫren met dezelfde handtekening als AtlThrow en #define AtlThrow de naam van uw functie te zijn. Dit moet worden gedaan voordat u atlexcept.h opneemt (wat betekent dat het moet worden gedaan voordat u ATL-headers opneemt sinds atlbase.h atlexcept.h bevat). Geef uw functie __declspec(noreturn) een kenmerk om valse SAL-waarschuwingen te voorkomen.
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
Koptekst: atldef.h
AtlThrowLastWin32
Roep deze functie aan om een fout te signaleren op basis van het resultaat van de Windows-functie GetLastError.
inline void AtlThrowLastWin32();
Opmerkingen
Deze functie traceert het resultaat van GetLastError het foutopsporingsprogramma.
Als _ATL_NO_EXCEPTIONS niet is gedefinieerd in een MFC-project, genereert deze functie een CMemoryException of een COleException op basis van de waarde die wordt geretourneerd door GetLastError.
Als _ATL_NO_EXCEPTIONS niet is gedefinieerd in een ATL-project, genereert de functie een CAtlException.
Als _ATL_NO_EXCEPTIONS is gedefinieerd, veroorzaakt de functie een assertiefout in plaats van een uitzondering te genereren.
Requirements
Koptekst: atldef.h