首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏walterlv - 吕毅的博客

    Windows 中的 HRESULT

    Windows 协议文档中所描述的协议规范中,错误码使用 HRESULT、Win32 错误码和 NTSTATUS 来描述。本文科普一下 HRESULT。 一个简单的例子 我们先举一个大家可能常用的 HRESULT 例子,这样后面的介绍能更简单一点。 规范中的 HRESULT 按照规范,HRESULT 的格式如下,其中首行的数字代表第几位(bit): 0 1 2 3 4 5~15 16~31 S R C N X Facility Code S: 1 break; } } 由于磁盘空间已满没有对应的 .NET Exception,所以我们只能通过提取 IOException 中的 HResult 属性来判断操作的 HRESULT 值。 & 0xFFFF; return errorCode == ERROR_DISK_FULL; } 参考资料 MS-ERREF: HRESULT - Microsoft Docs HRESULT

    1.2K30编辑于 2023-10-22
  • 来自专栏黄腾霄的博客

    2018-9-25-HResult比较有问题?

    在c#代码中处理一些系统出现的异常的时候,常常需要对异常的HResult属性进行处理。 ---- 于是我们就会写出以下代码 if(e.HResult==0x80030005) { ... } 然而有时候会惊奇的发现结果并没有如预期的进入if分支 so why 事实上如果你安装了Resharper 因为我们的HResult的值是uint,而Exception.HResult是int所以比较结果必然是false 那么怎么办呢? 都转成uint if((uint)e.HResult==0x80030005) { ... } 都转成int if(e.HResult==uncheck((int)0x80030005) { ... for an HRESULT of S_OK - Stack Overflow ---- 本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/HResult

    46410发布于 2020-06-10
  • 来自专栏明年我18

    对 COM 组件的调用返回了错误 HRESULT E_FAIL。

    win7系统,用c#调用Interop.SHDocVw.dll时,报了个对“ COM 组件的调用返回了错误 HRESULT E_FAIL”的错误。

    6.5K30发布于 2019-09-18
  • 来自专栏Windows技术交流

    Failed to delete child registry keys HRESULT = 0x80070005 - E_ACCESSDENIED

    registry keys: Microsoft-Hyper-V-Integration-Services-Package~31bf3856ad364e35~amd64~~6.3.9600.17388 [HRESULT

    37010编辑于 2024-04-16
  • COM开发中的Win32 SDK头文件、宏定义和HRESULT

    在组件对象模型(COM)开发中,Win32 SDK头文件、宏定义和HRESULT扮演着至关重要的角色。 HRESULT HRESULT是一个32位的值,用于表示函数调用的结果。它由以下几个部分组成: S (Severity):严重性,1表示失败,0表示成功。 使用HRESULT 在COM中,HRESULT的使用遵循以下规则: 成功与失败:使用SUCCEEDED和FAILED宏来判断函数调用是否成功或失败。 错误消息:使用FormatMessage函数可以根据HRESULT值获取错误消息的字符串表示。 例如,当你调用一个COM方法时,你可以通过检查其返回的HRESULT值来确定调用是否成功: HRESULT hr = CoCreateInstance(CLSID_MyComObject, NULL,

    5K00编辑于 2024-10-14
  • 来自专栏全栈程序员必看

    hresult 0x80070005错误原因_win10灾难性故障

    在Winform里面用AxWindowsMediaPlayer控件 ,控件放在tabControl里面,当切换选项卡时报了“灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED tabControl1_SelectedIndexChanged(object sender, EventArgs e) { #region 避免 灾难性故障 (异常来自 HRESULT

    62210编辑于 2022-11-08
  • 来自专栏网络安全攻防

    Understanding-and-bypassing-AMSI

    << "[-] AmsiInitialize Failed" << std::endl; return hResult; } hResult = AmsiOpenSession (amsiContext, &hSession); if (hResult ! << "[-] AmsiOpenSession Failed" << std::endl; return hResult; } hResult = AmsiScanBuffer << "[-] AmsiInitialize Failed" << std::endl; return hResult; } hResult = AmsiOpenSession << "[-] AmsiOpenSession Failed" << std::endl; return hResult; } hResult = AmsiScanBuffer

    67210编辑于 2022-08-29
  • 来自专栏方亮

    如何定制一款12306抢票浏览器——实现自动查询和预订功能

    > & spDoc, CComPtr<IHTMLDocument2> & spInnerDoc ) { HRESULT hr = E_FAIL; do { hr HRESULT CDeal12306WebPage::InsertButtonInQueryPage( CComPtr<IHTMLDocument2> & spDoc ) { HRESULT hr 其查找该节点的方法如下 HRESULT CDeal12306WebPage::QueryTicketsInfo( CComPtr<IHTMLDocument2> & spDoc ) { HRESULT HRESULT CDeal12306WebPage::GetQueryInfoInTr( CComPtr<IHTMLElement> & spElem) { HRESULT hr = E_FAIL HRESULT CDeal12306WebPage::StartQueryInQueryPage( CComPtr<IHTMLDocument2> & spDoc ) { HRESULT hr

    98220发布于 2019-01-16
  • 来自专栏帘卷西风的专栏

    S_OK,S_FALSE,E_FAIL

    在此记录一下: 断言报错的代码如下: HRESULT CIoCPWorker::UnregIoTask(HRESULT hIokey) { ENTER_CALL("CIoCPWorker_UnregIoTask 看了一下S_OK和SUCCEEDED的声明: #define E_FAIL _HRESULT_TYPEDEF_(0x80004005L) #define S_OK ((HRESULT)0x00000000L ) #define S_FALSE ((HRESULT)0x00000001L) #define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) #define FAILED (hr) ((HRESULT)(hr) < 0) 和S_OK放在一起的是S_FALSE,怀疑和这个有关,上网查了一下,果然如此! 当自己写的函数接口返回值为HRESULT的时候,如果想要指明其出错,并且必须被处理时,应返回E_FAIL。

    1K10发布于 2018-08-03
  • 来自专栏流媒体人生

    ATL源码学习---线程模型支持

     Lock() throw()       {           EnterCriticalSection(&m_sec);   return S_OK;       }       HRESULT  Unlock() throw()       {           LeaveCriticalSection(&m_sec);   return S_OK;       }       HRESULT CComAutoCriticalSection::Init should never be called     HRESULT Term(); // Not implemented.   S_OK; }       HRESULT Unlock() throw() { return S_OK; }       HRESULT Init() throw() { return S_OK;   CComCritSecLock< TLock >::Lock() throw()   {   HRESULT hr;       ATLASSERT( !

    1K30发布于 2018-08-02
  • 来自专栏全栈程序员必看

    网络游戏开发基础篇

    常量定义 typedef long HRESULT; enum HResult { S_OK = ((HRESULT)0x00000000), E_POINTER = _HRESULT_TYPEDEF_(0x80004003), /**< 无效指针 */ E_HANDLE = _HRESULT_TYPEDEF */ }; /// 判定 HRESULT 值是否为成功值 #define SUCCEEDED(Status) ((HRESULT)(Status) >= 0) /// 判定 常量定义 typedef long HRESULT; enum HResult { S_OK = ((HRESULT)0x00000000), /**< 成功,值为0 */ S_FALSE SUCCEEDED(Status) ((HRESULT)(Status) >= 0) /// 判定 HRESULT 值是否为失败值 #define FAILED(Status) ((HRESULT)(

    1.7K40编辑于 2022-07-22
  • 来自专栏流媒体人生

    ATL源码学习3---接口的查询支持

    DWORD_PTR dw) throw()/     {/         _ComMapClass* p = (_ComMapClass*)pv;/         p->Lock();/         HRESULT [cpp] view plain copy static HRESULT WINAPI InternalQueryInterface(void* pThis,   const _ATL_INTMAP_ENTRY * pEntries, REFIID iid, void** ppvObject)   {   HRESULT hRes = AtlInternalQueryInterface(pThis, pEntries *ppvObject = pUnk;   return S_OK;               }   else //actual function call             {   HRESULT [cpp] view plain copy HRESULT _InternalQueryInterface(REFIID iid, void** ppvObject) throw() /   { return

    1K30发布于 2018-08-02
  • 来自专栏方亮

    如何定制一款12306抢票浏览器——用户界面

    *Cancel = VARIANT_TRUE; CComPtr<IWebBrowser2> spWeb; HRESULT & stTrainPassenger ) { HRESULT hr = E_FAIL; do { CComPtr<IHTMLElement> spBody; 其中几个经常用的函数是 HRESULT GetElementCollection(CComPtr & spElem, CComPtr & spElemCollection ); enum & cstrClassName, CComPtr<IHTMLElement> & spResElem); // 通过TagName获取指定节点下第一个tag为cstrTagName的子节点 HRESULT ); enum EQUERYTYPE { EID, ETAGNAME, ECLASSNAME, }; // 通过ID获取指定节点下第一个ID为cstrID的子节点 HRESULT

    82630发布于 2019-01-16
  • 来自专栏方亮

    WMI技术介绍和应用——VC开发WMI应用的基本步骤

    (); HRESULT SetComSecLevels(); HRESULT ObtainLocator2WMI(CComPtr<IWbemLocator>& pLoc); HRESULT HRESULT CWMI::InitialCom() { HRESULT hr = E_FAIL; do { hr = CoInitializeEx(0, COINIT_MULTITHREADED HRESULT CWMI::ObtainLocator2WMI(CComPtr<IWbemLocator>& pLoc) { HRESULT hr = E_FAIL; do { HRESULT CWMI::Connect2WMI( CComPtr<IWbemLocator> pLoc,CComPtr<IWbemServices>& pSvc ) { HRESULT hr HRESULT CWMI::SetProxySecLevels( CComPtr<IWbemServices> pSvc ) { HRESULT hr = E_FAIL; do {

    1.6K40发布于 2019-01-16
  • 来自专栏InCerry

    使用C#编写.NET分析器-完结

    ; } ptr = IntPtr.Zero; return HResult.E_NOTIMPL; } // 为了简洁起见,这里省略了接口中所有70 然后我们只需要调用它们,确保将对象的地址作为第一个参数传递,因为它们是实例方法: public HResult QueryInterface(in Guid guid, out IntPtr ptr) { var func = (delegate* unmanaged<IntPtr, in Guid, out IntPtr, HResult>)(*VTable); return func(_self); } 我们的包装器可以直接在 ICorProfilerCallback.Initialize中使用,以检索 ICorProfilerInfo的实例: public HResult var result = unknown.QueryInterface(iCorProfilerInfo3Guid, out var ptr); if (result == HResult.S_OK

    45030编辑于 2023-08-31
  • 来自专栏方亮

    如何定制一款12306抢票浏览器——处理预订页面和验证码自动识别功能

    BOOL CDeal12306WebPage::IsBookingPage( CComPtr<IHTMLDocument2> & spDoc, CComBSTR & bstrUrl ) { HRESULT & vecStSingleinfo ) { HRESULT hr = E_FAIL; do { // 下标没有从0开始! HRESULT CDeal12306WebPage::AddPassenger( CComPtr<IHTMLElement> & spTableQrTbody ) { HRESULT hr = HRESULT CDeal12306WebPage::SetCaptchaEx( CComPtr<IHTMLElement>& spTableQrTbody ) { HRESULT hr = E_FAIL 于是完整的预订流程是 HRESULT CDeal12306WebPage::BookTickets( CComPtr<IHTMLDocument2> & spDoc ) { HRESULT hr

    1.1K40发布于 2019-01-16
  • 来自专栏帘卷西风的专栏

    从零开始编写网络游戏--基础篇(1)

    常量定义 typedef long HRESULT; enum HResult { S_OK = ((HRESULT)0x00000000), /**< 成功,值为0 */ S_FALSE = _HRESULT_TYPEDEF_(0x80004001), /**< 接口未实现 */ E_OUTOFMEMORY = _HRESULT_TYPEDEF_(0x8007000E), /**< = _HRESULT_TYPEDEF_(0x80070005), /**< 访问拒绝 */ E_PENDING = _HRESULT_TYPEDEF_(0x8000000A), /**< 操作被挂起 */ E_UNEXPECTED = _HRESULT_TYPEDEF_(0x8000FFFF) /**< 未预料的错误 */ }; /// 判定 HRESULT 值是否为成功值 #define SUCCEEDED(Status) ((HRESULT)(Status) >= 0) /// 判定 HRESULT 值是否为失败值 #define FAILED(Status) ((HRESULT)

    1K10发布于 2018-08-03
  • 来自专栏InCerry

    使用C#编写.NET分析器-第三部分

    在C++中的原型是: HRESULT JITInlining(FunctionID callerId, FunctionID calleeId, BOOL *pfShouldInline); 一个简单的 C#版本转换可能是: HResult JITInlining(FunctionId callerId, FunctionId calleeId, in bool pfShouldInline); CreateInstance(IntPtr outer, in Guid guid, out IntPtr instance); HResult LockServer(bool @lock); ; } public HResult LockServer(bool @lock) { return default; } public HResult ; } ptr = IntPtr.Zero; return HResult.E_NOTIMPL; } public int AddRef()

    46730编辑于 2023-08-31
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】p7zip 交叉编译 Android 版本 NDK 报错 ( error: case value evaluates to -2 , which cannot be narrowed )

    \Common/MyWindows.h:83:19: note: expanded from macro 'E_NOTIMPL' #define E_NOTIMPL ((HRESULT)0x80004001L \Common/MyWindows.h:84:23: note: expanded from macro 'E_NOINTERFACE' #define E_NOINTERFACE ((HRESULT) \Common/MyWindows.h:85:17: note: expanded from macro 'E_ABORT' #define E_ABORT ((HRESULT)0x80004004L) MyWindows.h:87:31: note: expanded from macro 'STG_E_INVALIDFUNCTION' #define STG_E_INVALIDFUNCTION ((HRESULT \Common/MyWindows.h:88:23: note: expanded from macro 'E_OUTOFMEMORY' #define E_OUTOFMEMORY ((HRESULT)

    72620编辑于 2023-03-29
  • 来自专栏方亮

    WMI技术介绍和应用——事件通知

    我们再来关注下主要方法——Excute方法的实现 template<typename T> HRESULT CAsynNotifyQuery<T>::Excute( CComPtr<IWbemServices > pSvc ) { HRESULT hr = WBEM_S_FALSE; do { CComPtr<IUnsecuredApartment> pUnsecApp = virtual ULONG STDMETHODCALLTYPE AddRef(); virtual ULONG STDMETHODCALLTYPE Release(); virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppv); virtual HRESULT STDMETHODCALLTYPE Indicate SetStatus(LONG lFlags, HRESULT hResult, BSTR strParam, IWbemClassObject __RPC_FAR* pObjParam); HRESULT

    1.5K20发布于 2019-01-16
领券