gpt4 book ai didi

c# - 检查 S_OK 的 HRESULT 方法的返回值

转载 作者:行者123 更新时间:2023-11-30 13:27:16 26 4
gpt4 key购买 nike

如何比较方法返回的值与 HRESULT?我试过了,但它不起作用:

FPropStg.DeleteMultiple(1, psProp) == VSConstants.S_OK

DeleteMultiple() 的类型定义是:

HRESULT IPropertyStorage.DeleteMultiple(Ulong, Propspec)

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

我还根据 Windows common system-wide codes 检查了 HRESULT .但是我收到的 HRESULT 值不在该列表中。请注意,我已经包含了命名空间 System.ExceptionSystem.Security.Cryptography.StrongNameSignatureInformation

综上所述,我基本上有两个问题:

  1. 有没有一种方法可以编写 S_OK 而不是 VSConstants.S_OK
  2. 如何将方法的返回值与 S_OK 进行比较?
HRESULT hr = FPropStg.DeleteMultiple(1, psProp);

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

最佳答案

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

你声明的函数与此类似(我编的,我不知道确切的签名......但你知道)

[DllImport("ole32.dll", EntryPoint = "DeleteMultiple", ExactSpelling = true, PreserveSig = false)]
public static extern void DeleteMultiple(ulong cpspec, PropSpec[] rgpspec);

这样称呼

try
{
FPropStg.DeleteMultiple(1, psProp);
}
catch (Exception exp)
{
MessageBox.Show(exp.Message, "Error on DeleteMutiple");
}

说明:PreserveSigfalse 时,您可以省略返回的 HRESULT 值,但在内部该值是实际上已检查,因此如果 HRESULTS_OK 不同,则会引发异常。

关于c# - 检查 S_OK 的 HRESULT 方法的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com