protected virtual SafeFileHandle GetFileHandleForInfo(string source, KtmTransactionHandle tranHandle,
     out NativeMethods.WIN32_FIND_DATA data)
 {
     var safeHandle = NativeMethods.FindFirstFileTransacted(source, NativeMethods.FINDEX_INFO_LEVELS.FindExInfoStandard,
                                                            out data,
                                                            NativeMethods.FINDEX_SEARCH_OPS.FindExSearchNameMatch,
                                                            IntPtr.Zero, 0, tranHandle);
     return safeHandle;
 }
 protected virtual SafeFileHandle GetFileHandleForInfo(string source, KtmTransactionHandle tranHandle)
 {
     NativeMethods.WIN32_FIND_DATA data;
     return GetFileHandleForInfo(source, tranHandle, out data);
 }
 protected virtual SafeFileHandle GetFileHandle(string source, KtmTransactionHandle tranHandle, FileMode fileMode,
     FileAccess fileAccess, FileShare fileShare)
 {
     return NativeMethods.CreateFileTransacted(
         source, NativeFileEnums.TranslateFileAccess(fileAccess),
         NativeFileEnums.TranslateFileShare(fileShare), IntPtr.Zero,
         NativeFileEnums.TranslateFileMode(fileMode), 0, IntPtr.Zero,
         tranHandle, IntPtr.Zero, IntPtr.Zero);
 }