59 m_hWininet = other.m_hWininet;
60 m_hSession = other.m_hSession;
85 bool Open(LPCTSTR lpszAgent, LPCTSTR lpszServerName, LPCTSTR lpszUserName = NULL, LPCTSTR lpszPassword = NULL)
88 if ( ! m_hWininet.
Open(lpszAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0) )
92 m_hSession = m_hWininet.
Connect(lpszServerName, INTERNET_DEFAULT_FTP_PORT,
93 lpszUserName, lpszPassword, INTERNET_SERVICE_FTP, 0, 0);
190 bool GetRemoteFile(LPCTSTR lpszNewLocalFile, LPCTSTR lpszRemoteFile, BOOL fFailIfExists, DWORD dwFlagsAndAttributes, DWORD dwFlags, DWORD_PTR dwContext = 0)
192 return m_hSession.
GetFile(lpszRemoteFile, lpszNewLocalFile, fFailIfExists, dwFlagsAndAttributes, dwFlags, dwContext);
215 bool PutLocalFile(LPCTSTR lpszNewRemoteFile, LPCTSTR lpszLocalFile, DWORD dwFlags, DWORD_PTR dwContext = 0)
217 return m_hSession.
PutFile(lpszLocalFile, lpszNewRemoteFile, dwFlags, dwContext);
241 return m_hSession.
RenameFile(lpszOldName, lpszNewName);
268 DWORD_PTR m_dwContext;
278 size_t m_Padding(
size_t size)
const
296 void m_SetFilePointer(DWORD dw)
const
298 m_phdwPointer =
new DWORD(dw);
305 DWORD m_GetFilePointer(
void)
const
307 if ( m_phdwPointer.
IsNull() )
311 return *m_phdwPointer;
321 void m_SetParamForOpen(LPCTSTR lpszFileName, DWORD dwAccess, DWORD dwFlags, DWORD_PTR dwContext)
323 m_strFileName = lpszFileName;
324 m_dwAccess = GENERIC_READ;
326 m_dwContext = dwContext;
335 bool m_Reopen(
void)
const
341 m_hFile = h.
OpenFile(m_strFileName, m_dwAccess, m_dwFlags, m_dwContext);
352 void m_AddFilePointer(DWORD dw)
const
354 if ( m_phdwPointer.
IsNull() )
356 m_phdwPointer =
new DWORD(dw);
360 *m_phdwPointer += dw;
386 bool Open(
CFtpSession& sec, LPCTSTR lpszFileName, DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD_PTR dwContext = 0)
390 m_SetParamForOpen(lpszFileName, GENERIC_READ, dwFlags, dwContext);
401 virtual size_t Read(
size_t size, LPVOID _P)
const
406 m_AddFilePointer(dwRead);
418 return m_strFileName;
446 int ofs =
ToInt(llOffset);
447 DWORD current = m_GetFilePointer();
451 if ( ofs >= 0 && ofs <= size )
464 if ( (-ofs) >= 0 && (-ofs) <= size )
475 INT_PTR i = r - current;
494 r = m_GetFilePointer();
507 ::SetLastError(NO_ERROR);
510 if ( ::GetLastError() != NO_ERROR )
514 return static_cast<LONGLONG
>(r.QuadPart);
571 bool Open(
CFtpSession& sec, LPCTSTR lpszFileName, DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD_PTR dwContext = 0)
574 m_ftp.m_hSession = sec;
575 m_ftp.m_SetParamForOpen(lpszFileName, GENERIC_READ | GENERIC_WRITE, dwFlags, dwContext);
576 return m_ftp.m_Reopen();
599 bool New(
CFtpSession& sec, LPCTSTR lpszFileName, DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD_PTR dwContext = 0)
606 return Open(sec, lpszFileName, dwFlags, dwContext);
615 return m_ftp.m_strFileName;
625 return m_ftp.m_hFile.
IsValid();
635 return CanRead() && (m_ftp.m_dwAccess & GENERIC_WRITE) != 0;
645 virtual size_t Read(
size_t size, LPVOID _P)
const
647 return m_ftp.
Read(size, _P);
665 virtual void Write(
size_t size, LPCVOID P)
670 m_ftp.m_AddFilePointer(dwWriten);
671 if ( size == dwWriten )
692 return m_ftp.
Seek(llOffset, eSeek);
virtual size_t Read(size_t size, LPVOID _P) const
[取得] ファイル読み込み
LPCTSTR GetOpenName(void) const
[取得] オープン名取得
virtual bool CanRead(void) const
[確認] 読み込み可能か
void Close(void)
[設定] ファイルクローズ.
LONGLONG GetSize(void) const
[取得] サイズ取得
LONGLONG Seek(LONGLONG llOffset, ESeekMode eSeek=TOP) const
[操作] シーク.
bool Open(CFtpSession &sec, LPCTSTR lpszFileName, DWORD dwFlags=FTP_TRANSFER_TYPE_BINARY, DWORD_PTR dwContext=0)
[設定] ファイルオープン.
virtual size_t Read(size_t size, LPVOID _P) const
[取得] 読み込み
LPCTSTR GetOpenName(void) const
[取得] オープン名取得
virtual LONGLONG GetSize(void) const
[取得] サイズ取得
virtual bool CanRead(void) const
[確認] 読み込み可能か
virtual void Close(void)
[操作] クローズ
virtual void Write(size_t size, LPCVOID P)
[保存] ファイル書き込み
virtual void SetEnd(void)
[設定] EOFを指定.
bool New(CFtpSession &sec, LPCTSTR lpszFileName, DWORD dwFlags=FTP_TRANSFER_TYPE_BINARY, DWORD_PTR dwContext=0)
[取得] ファイルオープン.
LONGLONG Seek(LONGLONG llOffset, ESeekMode eSeek=TOP) const
[操作] シーク.
bool Open(CFtpSession &sec, LPCTSTR lpszFileName, DWORD dwFlags=FTP_TRANSFER_TYPE_BINARY, DWORD_PTR dwContext=0)
[取得] ファイルオープン.
virtual bool CanWrite(void) const
[確認] 書込み可能か
CFtpSession(const CFtpSession &other)
コピーコンストラクタ
bool Open(LPCTSTR lpszAgent, LPCTSTR lpszServerName, LPCTSTR lpszUserName=NULL, LPCTSTR lpszPassword=NULL)
[設定] オープン.
bool PutLocalFile(LPCTSTR lpszNewRemoteFile, LPCTSTR lpszLocalFile, DWORD dwFlags, DWORD_PTR dwContext=0)
[送信] ローカルファイル送信.
bool CreateRemoteDir(LPCTSTR lpszRemoteDir)
[作成] リモートディレクトリ作成.
bool DeleteRemoteFile(LPCTSTR lpszRemoteFile)
[削除] リモートファイル削除.
bool RenameRemoteFile(LPCTSTR lpszOldName, LPCTSTR lpszNewName)
[変更] 名前変更.
bool IsValid(void) const
[確認] ハンドル有効確認
bool GetCurrentRemoteDir(LPTSTR _lpszCurrentRemoteDir, DWORD &_length)
[取得] カレントリモートディレクトリ取得.
void Close(void)
[設定] クローズ.
CFtpSession & operator=(const CFtpSession &other)
[代入] コピーオペレータ
bool RemoveRemoteDir(LPCTSTR lpszRemoteDir)
[削除] リモートディレクトリ削除.
bool GetRemoteFile(LPCTSTR lpszNewLocalFile, LPCTSTR lpszRemoteFile, BOOL fFailIfExists, DWORD dwFlagsAndAttributes, DWORD dwFlags, DWORD_PTR dwContext=0)
[取得] リモートファイル取得.
bool SetCurrentRemoteDir(LPCTSTR lpszRemoteDir)
[設定] カレントリモートディレクトリ設定.
CInternetHandle Connect(LPCTSTR lpszServerName, INTERNET_PORT tPort, LPCTSTR lpszUserName, LPCTSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext=0)
[接続] 指定名サーバ接続.
bool GetFile(LPCTSTR lpszRemoteFile, LPCTSTR lpszLocalFile, BOOL fFailIfExists, DWORD dwFlagsAndAttributes, DWORD dwFlags, DWORD_PTR dwContext=0) const
[取得] ローカルへ読込み.
CInternetHandle OpenFile(LPCTSTR lpszFileName, DWORD dwAccess, DWORD dwFlags, DWORD_PTR dwContext=0)
[取得] ファイルオープン.
DWORD GetFileSize(LPDWORD _lpdwFileSizeHigh) const
[取得] ファイルサイズ取得.
bool RenameFile(LPCTSTR lpszOldFileName, LPCTSTR lpszNewFileName)
[変更] 名前変更.
bool Open(LPCTSTR lpszAgent, DWORD dwAccessType, LPCTSTR lpszProxy=NULL, LPCTSTR lpszProxyBypass=NULL, DWORD dwFlags=0)
[設定] 初期化.
bool GetCurrentDirectory(LPTSTR _lpszCurrentDirectory, LPDWORD _lpdwLength) const
[取得] カレントディレクトリ取得.
bool SetCurrentDirectory(LPCTSTR lpszDirName)
[設定] カレントディレクトリ設定.
bool IsValid(void) const
[確認] ハンドル有効確認
bool ReadFile(LPVOID _lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD _lpdwNumberOfBytesRead) const
[取得] ファイル読み込み.
bool WriteFile(LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, LPDWORD lpdwNumberOfBytesWritten)
[出力] ファイル書き込み.
bool CreateDirectory(LPCTSTR lpszDirName)
[作成] 指定ディレクトリ作成.
void Close(void)
[設定] クローズ.
bool PutFile(LPCTSTR lpszLocalFile, LPCTSTR lpszNewRemoteFile, DWORD dwFlags, DWORD_PTR dwContext)
[送信] ローカルからファイル送信.
bool RemoveDirectory(LPCTSTR lpszDirName)
[削除] ディレクトリ削除.
bool DeleteFile(LPCTSTR lpszFileName)
[削除] 指定ファイル削除.
bool IsNull(void) const
[確認] NULLチェック
void OnCatch(void) const
[表示] 内容表示
DWORD ToDword(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
int ToInt(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
CByteVector ReadInto(size_t size=0) const
[取得] 読み込み