Question

J'utilise NTFS transactionnelles pour lire et écrire des fichiers sur le système de fichiers et je l'ai remarqué que l'application rencontre des défauts intermittents qui, comme seulement résolu par un redémarrage de l'application. La trace de pile pour l'erreur est:

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 est une interface COM que je reçois une poignée à:

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

ici

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

Mon code est très similaire à http://msdn.microsoft.com/ fr-fr / bibliothèque / cc303707.aspx

Le problème est que je ne trouve aucune information de cette erreur COM 0xD0190052. Il suffit de savoir ce que ce code d'erreur est serait extrêmement utile.

Merci

Était-ce utile?

La solution

Pure spéculation
Le HRESULT 0xD0190052 est très similaire à STATUS_TRANSACTIONMANAGER_NOT_ONLINE qui est 0xC0190052 ... la différence est dans le « N » -Bit qui indique si le code est un soi-disant NTSTATUS (voir http://msdn.microsoft.com/en-us/library/0642cb2f- 2075-4469-918c-4441e69c548a% 28PROT.10% 29.aspx et http://msdn.microsoft.com/en-us/library/cc231200%28v=PROT.10%29.aspx et http://msdn.microsoft.com/en-us/library/cc704588%28v= PROT.10% 29.aspx ) ...

D'après ce que vous décrivez, il semble soit votre demande parfois desserre la connexion au gestionnaire de transactions ou le gestionnaire de transactions est instable / redémarré ou similaire ...

definig également PreserveSig(true) sur votre importation COM pourrait aider à obtenir une description de HRESULT ...

Espérons que cela a un sens dans votre cas ...

EDIT:

Je ne suis pas sûr que le code lié à prend en compte toutes les possibilités ... dans la méthode TransactedFile.Open il y a un appel à scope.Complete(); ce qui est bon et nécessaire, mais si un code avant cet appel à l'aide dans le bloc jette une exception qu'il ne soit pas appelé ce qui est mauvais selon http://msdn.microsoft .com / fr-fr / bibliothèque / ms172152.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top