/// <summary> /// Enumerates the currently transfered files. /// </summary> /// <returns>List of active transfer names.</returns> public static IEnumerable <FileInfo> GetActiveTransfers() { int dwReadEntries; int dwTotalEntries; var pBuffer = IntPtr.Zero; var pCurrent = new NativeMethods.FILE_INFO_3(); if (NativeMethods.NetFileEnum(null, null, null, 3, ref pBuffer, -1, out dwReadEntries, out dwTotalEntries, IntPtr.Zero) != NativeMethods.NET_API_STATUS.NERR_Success) { yield break; } for (var i = 0; i < dwReadEntries; i++) { var iPtr = new IntPtr(pBuffer.ToInt32() + (i * Marshal.SizeOf(pCurrent))); pCurrent = (NativeMethods.FILE_INFO_3)Marshal.PtrToStructure(iPtr, typeof(NativeMethods.FILE_INFO_3)); if (File.Exists(pCurrent.fi3_pathname)) { yield return(new FileInfo(pCurrent.fi3_pathname)); } } NativeMethods.NetApiBufferFree(pBuffer); }
/// <summary> /// Enumerates the currently transfered files. /// </summary> /// <returns>List of active transfer names.</returns> public static IEnumerable<FileInfo> GetActiveTransfers() { int dwReadEntries; int dwTotalEntries; var pBuffer = IntPtr.Zero; var pCurrent = new NativeMethods.FILE_INFO_3(); if (NativeMethods.NetFileEnum(null, null, null, 3, ref pBuffer, -1, out dwReadEntries, out dwTotalEntries, IntPtr.Zero) != NativeMethods.NET_API_STATUS.NERR_Success) { yield break; } for (var i = 0; i < dwReadEntries; i++) { var iPtr = new IntPtr(pBuffer.ToInt32() + (i * Marshal.SizeOf(pCurrent))); pCurrent = (NativeMethods.FILE_INFO_3)Marshal.PtrToStructure(iPtr, typeof(NativeMethods.FILE_INFO_3)); if (File.Exists(pCurrent.fi3_pathname)) { yield return new FileInfo(pCurrent.fi3_pathname); } } NativeMethods.NetApiBufferFree(pBuffer); }