首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从S_OK的HRESULT方法中检查返回值

从S_OK的HRESULT方法中检查返回值
EN

Stack Overflow用户
提问于 2012-10-30 18:39:14
回答 3查看 5.5K关注 0票数 3

如何将方法返回的值与HRESULT进行比较?我试过了,但没有用:

代码语言:javascript
复制
FPropStg.DeleteMultiple(1, psProp) == VSConstants.S_OK

DeleteMultiple()的类型定义是:

代码语言:javascript
复制
HRESULT IPropertyStorage.DeleteMultiple(Ulong, Propspec)

我写了VSConstants.S_OK。有什么方法可以直接写S_OK吗?我尝试这样做,但得到了一个错误,表明S_OK在当前上下文中不存在。

我还检查了HRESULTWindows通用系统代码。但是,我所收到的HRESULT值不在该列表中。请注意,我已经包含了名称空间System.ExceptionSystem.Security.Cryptography.StrongNameSignatureInformation

总之,我基本上有两个问题:

  1. 有没有办法写S_OK而不是VSConstants.S_OK
  2. 如何比较方法的返回值和S_OK
代码语言:javascript
复制
HRESULT hr = FPropStg.DeleteMultiple(1, psProp);

if (hr == S_OK) // S_OK does not exist in the current context...
{
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-30 19:33:38

如果您将PreserveSig设置为false会怎样?就像这样:

您声明了类似于此的函数(我创建了它,我不知道确切的signature...but )

代码语言:javascript
复制
[DllImport("ole32.dll", EntryPoint = "DeleteMultiple", ExactSpelling = true, PreserveSig = false)]
public static extern void DeleteMultiple(ulong cpspec, PropSpec[] rgpspec);

就这样说吧

代码语言:javascript
复制
try
{
    FPropStg.DeleteMultiple(1, psProp);
}
catch (Exception exp)
{
    MessageBox.Show(exp.Message, "Error on DeleteMutiple");
}

解释:PreserveSigfalse时,可以省略返回的HRESULT值,但是在内部实际检查该值,因此如果HRESULT与S_OK不同,则抛出异常。

票数 6
EN

Stack Overflow用户

发布于 2012-10-30 18:50:20

您可以使用这个枚举来定义OK,它来自[医] pinvoke

代码语言:javascript
复制
enum HRESULT : long
{
S_FALSE = 0x0001,
S_OK = 0x0000,
E_INVALIDARG = 0x80070057,
E_OUTOFMEMORY = 0x8007000E
}
票数 4
EN

Stack Overflow用户

发布于 2012-10-30 18:50:05

是一个没有符号的32位整数值。。您可以构建自己的常量类以帮助您进行以下比较:

代码语言:javascript
复制
public static class HResults
{
    public static readonly int S_OK = 0;
    public static readonly int STG_E_ACCESSDENIED =  unchecked((int)0x80030005);
}

用于:

代码语言:javascript
复制
if (HResults.S_OK == FPropStg.DeleteMultiple(1, psProp))
{
    // ...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13145585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档