コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }