gpt4 book ai didi

c# - 使用 TxNTFS 出现奇怪的间歇性错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:46 24 4
gpt4 key购买 nike

我正在使用事务性 NTFS 读取和写入文件系统上的文件,我注意到应用程序遇到间歇性故障,只能通过应用程序重启来解决。错误的堆栈跟踪是:

System.Runtime.InteropServices.COMException (0xD0190052): Exception from HRESULT: 0xD0190052
at ...KtmTransactionHandle.IKernelTransaction.GetHandle(IntPtr& handle)
at ...KtmTransactionHandle.CreateKtmTransactionHandle(Transaction managedTransaction)
at ...KtmTransactionHandle.CreateKtmTransactionHandle()
at ...TransactedFile.Open(String path, FileMode mode, FileAccess access, FileShare share)
at ...TransactedFile.ReadAllText(String path)

IKernelTransaction 是我获取句柄的 COM 接口(interface):

    [ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("79427A2B-F895-40e0-BE79-B57DC82ED231")]
private interface IKernelTransaction
{
void GetHandle([Out] out IntPtr handle);
}

这里

IKernelTransaction tx = (IKernelTransaction)TransactionInterop.GetDtcTransaction(Transaction.Current);

我的代码与http://msdn.microsoft.com/en-us/library/cc303707.aspx 非常相似

问题是我找不到这个 COM 错误 0xD0190052 的任何信息。只要知道这个错误代码是什么就会非常有帮助。

谢谢

最佳答案

纯属猜测
HRESULT 0xD0190052 与 STATUS_TRANSACTIONMANAGER_NOT_ONLINE 非常相似,即 0xC0190052...不同之处在于“N”位,它指示代码是否为所谓的 NTSTATUS(请参阅 http://msdn.microsoft.com/en-us/library/0642cb2f-2075-4469-918c-4441e69c548a%28PROT.10%29.aspxhttp://msdn.microsoft.com/en-us/library/cc231200%28v=PROT.10%29.aspxhttp://msdn.microsoft.com/en-us/library/cc704588%28v=PROT.10%29.aspx )。 ..

根据您的描述,您的应用程序有时会失去与事务管理器的连接,或者事务管理器不稳定/重新启动或类似情况...

同时在 COM 导入上定义 PreserveSig(true) 可以帮助获得一些 HRESULT 描述...

希望这对您的情况有意义...

编辑:

我不确定您链接到的代码是否考虑了所有可能性...在方法 TransactedFile.Open 中调用了 scope.Complete(); 这是好的和必要的但是如果在使用 block 中的这个调用之前的一些代码抛出一些异常它不会被调用根据 http://msdn.microsoft.com/en-us/library/ms172152.aspx 这是不好的

关于c# - 使用 TxNTFS 出现奇怪的间歇性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832385/

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