1

在创建 Windows Workflow Foundation 运行时实例时,偶尔会出现本文标题中定义的消息以及 HResult 0x8007007A。

错误文本很容易解释,并且在 Workflow Foundation 程序集中使用反射器我已将问题缩小到 ADVAPI32.DLL 中的以下调用之一。

SetKernelObjectSecurity RevertToSelf OpenProcessToken GetKernelObjectSecurity

我已经消除了 RevertToSelf() 因为它不接受输入参数,所以不能传入太小的数据结构。

GetKernelObjectSecurity 将结构作为输入,这可能是错误的,但此错误是暂时的,没有明显的再现步骤。

认为它与应用程序中某处的内存管理有关,但无法找到 HResult 含义的良好定义。谁能指出我对这个 HResult 的良好定义的方向?

4

1 回答 1

1

我可以提供一些推测。

正如您所说,错误消息听起来很容易解释。

OpenProcessToken 似乎不太可能作为候选对象,因为您从不直接将内存区域的大小传递给它。

GetKernelObjectSecurity 或 SetKernelObjectSecurity 似乎是不错的选择。我认为您没有直接调用它们,因此您不知道使用什么逻辑将内存区域传递给这些函数。是否有可能,例如,您正在使用的某个库中有一个固定大小的安全描述符缓冲区,一旦缓冲区用尽,它会占用缓冲区的剩余大小(例如零)并将其传递给 GetKernelObjectSecurity ?

(一般来说,我希望它更有可能来自这样的 WF 运行时实现错误,而不是操作系统错误。)

于 2008-11-03T18:26:59.663 回答