/// <summary>
        /// Gets the specified file's size
        /// </summary>
        /// <param name="file">The file to get the size for</param>
        /// <returns>The file size in bytes</returns>
        public long GetFileSize(string file)
        {
            IntPtr hFile = new IntPtr(
                WININET.FtpOpenFile(_hConnect, file, WINAPI.GENERIC_READ, WININET.FTP_TRANSFER_TYPE_BINARY, IntPtr.Zero)
                );

            if (hFile == IntPtr.Zero)
            {
                Error();
            }
            else
            {
                try
                {
                    int sizeHigh = 0;
                    int sizeLo   = WININET.FtpGetFileSize(hFile, ref sizeHigh);

                    long fileSize = ((long)sizeHigh << 32) | sizeLo;

                    return(fileSize);
                }
                catch (Exception)
                {
                    Error();
                }
                finally
                {
                    WININET.InternetCloseHandle(hFile);
                }
            }

            return(0);
        }