mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-01-22 07:14:15 +08:00
Fix #266: CloseHandle close an invalid handle
This commit is contained in:
@@ -85,7 +85,7 @@ long WINAPI whenbuged(_EXCEPTION_POINTERS *excp)
|
||||
MINIDUMP_EXCEPTION_INFORMATION einfo = {::GetCurrentThreadId(), excp, FALSE};
|
||||
::MiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(),
|
||||
hFile, MiniDumpWithFullMemory, &einfo, NULL, NULL);
|
||||
::CloseHandle(hFile);
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
}
|
||||
|
||||
return EXCEPTION_EXECUTE_HANDLER;
|
||||
@@ -259,7 +259,7 @@ BOOL CMy2015RemoteApp::InitInstance()
|
||||
{
|
||||
m_Mutex = CreateMutex(NULL, FALSE, mu.c_str());
|
||||
if (ERROR_ALREADY_EXISTS == GetLastError()) {
|
||||
CloseHandle(m_Mutex);
|
||||
SAFE_CLOSE_HANDLE(m_Mutex);
|
||||
m_Mutex = NULL;
|
||||
MessageBox("一个主控程序已经在运行,请检查任务管理器。",
|
||||
"提示", MB_ICONINFORMATION);
|
||||
@@ -341,7 +341,7 @@ BOOL CMy2015RemoteApp::InitInstance()
|
||||
}
|
||||
|
||||
if (hEvent) {
|
||||
CloseHandle(hEvent);
|
||||
SAFE_CLOSE_HANDLE(hEvent);
|
||||
Mprintf("[InitInstance] 关闭事件句柄。\n");
|
||||
}
|
||||
|
||||
@@ -354,7 +354,7 @@ BOOL CMy2015RemoteApp::InitInstance()
|
||||
int CMy2015RemoteApp::ExitInstance()
|
||||
{
|
||||
if (m_Mutex) {
|
||||
CloseHandle(m_Mutex);
|
||||
SAFE_CLOSE_HANDLE(m_Mutex);
|
||||
m_Mutex = NULL;
|
||||
}
|
||||
__try {
|
||||
|
||||
@@ -1339,7 +1339,7 @@ DWORD WINAPI CMy2015RemoteDlg::StartFrpClient(LPVOID param)
|
||||
#ifdef _WIN64
|
||||
usingFRP = ip.empty() ? 0 : THIS_CFG.GetInt("frp", "UseFrp");
|
||||
#else
|
||||
CloseHandle(This->m_hFRPThread);
|
||||
SAFE_CLOSE_HANDLE(This->m_hFRPThread);
|
||||
This->m_hFRPThread = NULL;
|
||||
return 0x20250820;
|
||||
#endif
|
||||
@@ -1380,7 +1380,7 @@ DWORD WINAPI CMy2015RemoteDlg::StartFrpClient(LPVOID param)
|
||||
// MemoryFreeLibrary(hDLL);
|
||||
} while (false);
|
||||
|
||||
CloseHandle(This->m_hFRPThread);
|
||||
SAFE_CLOSE_HANDLE(This->m_hFRPThread);
|
||||
This->m_hFRPThread = NULL;
|
||||
Mprintf("[FRP] Proxy thread stop running\n");
|
||||
|
||||
@@ -1553,7 +1553,7 @@ void CMy2015RemoteDlg::OnTimer(UINT_PTR nIDEvent)
|
||||
static std::string eventName = EventName();
|
||||
HANDLE hEvent = OpenEventA(SYNCHRONIZE, FALSE, eventName.c_str());
|
||||
if (hEvent) {
|
||||
CloseHandle(hEvent);
|
||||
SAFE_CLOSE_HANDLE(hEvent);
|
||||
} else if (++count == 10) {
|
||||
THIS_APP->UpdateMaxConnection(count);
|
||||
}
|
||||
@@ -1634,7 +1634,7 @@ void CMy2015RemoteDlg::Release()
|
||||
SAFE_DELETE(m_gridDlg);
|
||||
g_2015RemoteDlg = NULL;
|
||||
SetEvent(m_hExit);
|
||||
CloseHandle(m_hExit);
|
||||
SAFE_CLOSE_HANDLE(m_hExit);
|
||||
m_hExit = NULL;
|
||||
Sleep(500);
|
||||
|
||||
@@ -2142,12 +2142,12 @@ std::string exec(const std::string& cmd)
|
||||
&si,
|
||||
&pi
|
||||
)) {
|
||||
CloseHandle(hReadPipe);
|
||||
CloseHandle(hWritePipe);
|
||||
SAFE_CLOSE_HANDLE(hReadPipe);
|
||||
SAFE_CLOSE_HANDLE(hWritePipe);
|
||||
return "";
|
||||
}
|
||||
|
||||
CloseHandle(hWritePipe);
|
||||
SAFE_CLOSE_HANDLE(hWritePipe);
|
||||
|
||||
char buffer[256];
|
||||
std::string result;
|
||||
@@ -2158,10 +2158,10 @@ std::string exec(const std::string& cmd)
|
||||
result += buffer;
|
||||
}
|
||||
|
||||
CloseHandle(hReadPipe);
|
||||
SAFE_CLOSE_HANDLE(hReadPipe);
|
||||
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
SAFE_CLOSE_HANDLE(pi.hProcess);
|
||||
SAFE_CLOSE_HANDLE(pi.hThread);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -2246,7 +2246,7 @@ BOOL CALLBACK CMy2015RemoteDlg::NotifyProc(CONTEXT_OBJECT* ContextObject)
|
||||
}
|
||||
if (!g_2015RemoteDlg->PostMessage(WM_HANDLEMESSAGE, (WPARAM)hEvent, (LPARAM)ContextObject)) {
|
||||
Mprintf("===> NotifyProc PostMessage FAILED: %p <===\n", ContextObject);
|
||||
if (hEvent) CloseHandle(hEvent);
|
||||
if (hEvent) SAFE_CLOSE_HANDLE(hEvent);
|
||||
return FALSE;
|
||||
}
|
||||
if (hEvent) {
|
||||
@@ -2284,7 +2284,7 @@ LRESULT CMy2015RemoteDlg::OnHandleMessage(WPARAM wParam, LPARAM lParam)
|
||||
MessageHandle(ContextObject);
|
||||
if (hEvent) {
|
||||
SetEvent(hEvent);
|
||||
CloseHandle(hEvent);
|
||||
SAFE_CLOSE_HANDLE(hEvent);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
@@ -3179,8 +3179,8 @@ int run_cmd(std::string cmdLine)
|
||||
DWORD exitCode;
|
||||
GetExitCodeProcess(pi.hProcess, &exitCode);
|
||||
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
SAFE_CLOSE_HANDLE(pi.hProcess);
|
||||
SAFE_CLOSE_HANDLE(pi.hThread);
|
||||
|
||||
return static_cast<int>(exitCode);
|
||||
}
|
||||
|
||||
@@ -1417,7 +1417,7 @@ BOOL CFileManagerDlg::SendUploadJob()
|
||||
dwSizeLow = GetFileSize (hFile, &dwSizeHigh);
|
||||
m_nOperatingFileLength = (dwSizeHigh * (MAXDWORD+long long(1))) + dwSizeLow;
|
||||
|
||||
CloseHandle(hFile);
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
int nPacketSize = fileRemote.GetLength() + 10;
|
||||
BYTE *bPacket = (BYTE *)LocalAlloc(LPTR, nPacketSize);
|
||||
@@ -1615,7 +1615,7 @@ void CFileManagerDlg::CreateLocalRecvFile()
|
||||
::MessageBox(m_hWnd, m_strReceiveLocalFile + " <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK|MB_ICONWARNING);
|
||||
return;
|
||||
}
|
||||
CloseHandle(hFile);
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
|
||||
ShowProgress();
|
||||
if (m_bIsStop)
|
||||
@@ -1680,7 +1680,7 @@ void CFileManagerDlg::WriteLocalRecvFile()
|
||||
::MessageBox(m_hWnd, m_strReceiveLocalFile + " <20>ļ<EFBFBD>д<EFBFBD><D0B4>ʧ<EFBFBD><CAA7>!", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK|MB_ICONWARNING);
|
||||
m_bIsStop = true;
|
||||
}
|
||||
CloseHandle(hFile);
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
// Ϊ<>˱Ƚϣ<C8BD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_nCounter += dwBytesWrite;
|
||||
ShowProgress();
|
||||
@@ -1956,7 +1956,7 @@ void CFileManagerDlg::SendFileData()
|
||||
// <20><><EFBFBD><EFBFBD>ֵ
|
||||
bool bRet = true;
|
||||
ReadFile(hFile, lpBuffer + nHeadLength, nNumberOfBytesToRead, &nNumberOfBytesRead, NULL);
|
||||
CloseHandle(hFile);
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
|
||||
if (nNumberOfBytesRead > 0) {
|
||||
int nPacketSize = nNumberOfBytesRead + nHeadLength;
|
||||
|
||||
@@ -185,7 +185,7 @@ void IOCPKCPServer::Destroy()
|
||||
|
||||
if (m_hThread) {
|
||||
WaitForSingleObject(m_hThread, INFINITE);
|
||||
CloseHandle(m_hThread);
|
||||
SAFE_CLOSE_HANDLE(m_hThread);
|
||||
m_hThread = NULL;
|
||||
}
|
||||
|
||||
@@ -193,7 +193,7 @@ void IOCPKCPServer::Destroy()
|
||||
m_kcpUpdateThread.join();
|
||||
|
||||
if (m_hIOCP) {
|
||||
CloseHandle(m_hIOCP);
|
||||
SAFE_CLOSE_HANDLE(m_hIOCP);
|
||||
m_hIOCP = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ void IOCPServer::Destroy()
|
||||
|
||||
if (m_hKillEvent != NULL) {
|
||||
SetEvent(m_hKillEvent);
|
||||
CloseHandle(m_hKillEvent);
|
||||
SAFE_CLOSE_HANDLE(m_hKillEvent);
|
||||
m_hKillEvent = NULL;
|
||||
}
|
||||
|
||||
@@ -83,12 +83,12 @@ void IOCPServer::Destroy()
|
||||
}
|
||||
|
||||
if (m_hCompletionPort != INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(m_hCompletionPort);
|
||||
SAFE_CLOSE_HANDLE(m_hCompletionPort);
|
||||
m_hCompletionPort = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
if (m_hListenEvent != WSA_INVALID_EVENT) {
|
||||
CloseHandle(m_hListenEvent);
|
||||
SAFE_CLOSE_HANDLE(m_hListenEvent);
|
||||
m_hListenEvent = WSA_INVALID_EVENT;
|
||||
}
|
||||
}
|
||||
@@ -262,13 +262,13 @@ BOOL IOCPServer::InitializeIOCP(VOID)
|
||||
0,
|
||||
NULL);
|
||||
if (hWorkThread == NULL ) {
|
||||
CloseHandle(m_hCompletionPort);
|
||||
SAFE_CLOSE_HANDLE(m_hCompletionPort);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
AddWorkThread(1);
|
||||
|
||||
CloseHandle(hWorkThread);
|
||||
SAFE_CLOSE_HANDLE(hWorkThread);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@@ -327,7 +327,7 @@ DWORD IOCPServer::WorkThreadProc(LPVOID lParam)
|
||||
|
||||
This->AddWorkThread(hThread ? 1:0);
|
||||
|
||||
CloseHandle(hThread);
|
||||
SAFE_CLOSE_HANDLE(hThread);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ void IOCPUDPServer::WorkerThread()
|
||||
|
||||
PostRecv(); // <20><><EFBFBD><EFBFBD><EFBFBD>ύ
|
||||
}
|
||||
CloseHandle(m_hThread);
|
||||
SAFE_CLOSE_HANDLE(m_hThread);
|
||||
m_hThread = NULL;
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ VOID IOCPUDPServer::Destroy()
|
||||
}
|
||||
|
||||
if (m_hIOCP) {
|
||||
CloseHandle(m_hIOCP);
|
||||
SAFE_CLOSE_HANDLE(m_hIOCP);
|
||||
m_hIOCP = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,10 +230,10 @@ static void WINAPI ServiceMain(DWORD argc, LPTSTR* argv)
|
||||
HANDLE hThread = CreateThread(NULL, 0, ServerService_WorkerThread, NULL, 0, NULL);
|
||||
if (hThread) {
|
||||
WaitForSingleObject(hThread, INFINITE);
|
||||
CloseHandle(hThread);
|
||||
SAFE_CLOSE_HANDLE(hThread);
|
||||
}
|
||||
|
||||
CloseHandle(g_StopEvent);
|
||||
SAFE_CLOSE_HANDLE(g_StopEvent);
|
||||
|
||||
g_ServiceStatus.dwControlsAccepted = 0;
|
||||
g_ServiceStatus.dwCurrentState = SERVICE_STOPPED;
|
||||
|
||||
@@ -134,7 +134,7 @@ void ServerSessionMonitor_Stop(ServerSessionMonitor* self)
|
||||
Mprintf("WARNING: Monitor thread did not exit in time, terminating...");
|
||||
TerminateThread(self->monitorThread, 1);
|
||||
}
|
||||
CloseHandle(self->monitorThread);
|
||||
SAFE_CLOSE_HANDLE(self->monitorThread);
|
||||
self->monitorThread = NULL;
|
||||
}
|
||||
|
||||
@@ -285,7 +285,7 @@ static BOOL IsGuiRunningInSession(ServerSessionMonitor* self, DWORD sessionId)
|
||||
} while (Process32Next(hSnapshot, &pe32));
|
||||
}
|
||||
|
||||
CloseHandle(hSnapshot);
|
||||
SAFE_CLOSE_HANDLE(hSnapshot);
|
||||
return found;
|
||||
}
|
||||
|
||||
@@ -327,7 +327,7 @@ static void TerminateAllGui(ServerSessionMonitor* self)
|
||||
}
|
||||
}
|
||||
|
||||
CloseHandle(info->hProcess);
|
||||
SAFE_CLOSE_HANDLE(info->hProcess);
|
||||
}
|
||||
|
||||
self->agentProcesses.count = 0; // 清空列表
|
||||
@@ -355,7 +355,7 @@ static void CleanupDeadProcesses(ServerSessionMonitor* self)
|
||||
(int)info->processId, (int)exitCode);
|
||||
Mprintf(buf);
|
||||
|
||||
CloseHandle(info->hProcess);
|
||||
SAFE_CLOSE_HANDLE(info->hProcess);
|
||||
AgentArray_RemoveAt(&self->agentProcesses, i);
|
||||
continue; // 不增加 i,因为删除了元素
|
||||
}
|
||||
@@ -365,7 +365,7 @@ static void CleanupDeadProcesses(ServerSessionMonitor* self)
|
||||
(int)info->processId);
|
||||
Mprintf(buf);
|
||||
|
||||
CloseHandle(info->hProcess);
|
||||
SAFE_CLOSE_HANDLE(info->hProcess);
|
||||
AgentArray_RemoveAt(&self->agentProcesses, i);
|
||||
continue;
|
||||
}
|
||||
@@ -405,7 +405,7 @@ static BOOL LaunchGuiInSession(ServerSessionMonitor* self, DWORD sessionId)
|
||||
SecurityImpersonation, TokenPrimary, &hDupToken)) {
|
||||
sprintf_s(buf, sizeof(buf), "DuplicateTokenEx failed: %d", (int)GetLastError());
|
||||
Mprintf(buf);
|
||||
CloseHandle(hToken);
|
||||
SAFE_CLOSE_HANDLE(hToken);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -413,8 +413,8 @@ static BOOL LaunchGuiInSession(ServerSessionMonitor* self, DWORD sessionId)
|
||||
if (!SetTokenInformation(hDupToken, TokenSessionId, &sessionId, sizeof(sessionId))) {
|
||||
sprintf_s(buf, sizeof(buf), "SetTokenInformation failed: %d", (int)GetLastError());
|
||||
Mprintf(buf);
|
||||
CloseHandle(hDupToken);
|
||||
CloseHandle(hToken);
|
||||
SAFE_CLOSE_HANDLE(hDupToken);
|
||||
SAFE_CLOSE_HANDLE(hToken);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -424,8 +424,8 @@ static BOOL LaunchGuiInSession(ServerSessionMonitor* self, DWORD sessionId)
|
||||
char exePath[MAX_PATH];
|
||||
if (!GetModuleFileNameA(NULL, exePath, MAX_PATH)) {
|
||||
Mprintf("GetModuleFileName failed");
|
||||
CloseHandle(hDupToken);
|
||||
CloseHandle(hToken);
|
||||
SAFE_CLOSE_HANDLE(hDupToken);
|
||||
SAFE_CLOSE_HANDLE(hToken);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -437,8 +437,8 @@ static BOOL LaunchGuiInSession(ServerSessionMonitor* self, DWORD sessionId)
|
||||
if (fileAttr == INVALID_FILE_ATTRIBUTES) {
|
||||
sprintf_s(buf, sizeof(buf), "ERROR: Executable not found at: %s", exePath);
|
||||
Mprintf(buf);
|
||||
CloseHandle(hDupToken);
|
||||
CloseHandle(hToken);
|
||||
SAFE_CLOSE_HANDLE(hDupToken);
|
||||
SAFE_CLOSE_HANDLE(hToken);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ static BOOL LaunchGuiInSession(ServerSessionMonitor* self, DWORD sessionId)
|
||||
if (!CreateEnvironmentBlock(&lpEnvironment, hUserToken, FALSE)) {
|
||||
Mprintf("CreateEnvironmentBlock failed");
|
||||
}
|
||||
CloseHandle(hUserToken);
|
||||
SAFE_CLOSE_HANDLE(hUserToken);
|
||||
}
|
||||
|
||||
// 在用户会话中创建进程(GUI程序,不隐藏窗口)
|
||||
@@ -497,7 +497,7 @@ static BOOL LaunchGuiInSession(ServerSessionMonitor* self, DWORD sessionId)
|
||||
AgentArray_Add(&self->agentProcesses, &info);
|
||||
LeaveCriticalSection(&self->csProcessList);
|
||||
|
||||
CloseHandle(pi.hThread); // 线程句柄可以关闭
|
||||
SAFE_CLOSE_HANDLE(pi.hThread); // 线程句柄可以关闭
|
||||
} else {
|
||||
DWORD err = GetLastError();
|
||||
sprintf_s(buf, sizeof(buf), "CreateProcessAsUser failed: %d", (int)err);
|
||||
@@ -513,8 +513,8 @@ static BOOL LaunchGuiInSession(ServerSessionMonitor* self, DWORD sessionId)
|
||||
}
|
||||
}
|
||||
|
||||
CloseHandle(hDupToken);
|
||||
CloseHandle(hToken);
|
||||
SAFE_CLOSE_HANDLE(hDupToken);
|
||||
SAFE_CLOSE_HANDLE(hToken);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -502,11 +502,11 @@ void CFileManagerDlg::OnClose()
|
||||
DestroyCursor(m_hCursor);
|
||||
|
||||
if (m_hFileSend != INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(m_hFileSend);
|
||||
SAFE_CLOSE_HANDLE(m_hFileSend);
|
||||
m_hFileSend = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
if (m_hFileRecv != INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(m_hFileRecv);
|
||||
SAFE_CLOSE_HANDLE(m_hFileRecv);
|
||||
m_hFileRecv = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
@@ -1175,14 +1175,14 @@ BOOL CFileManagerDlg::SendUploadJob()
|
||||
m_strFileName = m_strUploadRemoteFile = fileRemote;
|
||||
|
||||
if (m_hFileSend != INVALID_HANDLE_VALUE)
|
||||
CloseHandle(m_hFileSend);
|
||||
SAFE_CLOSE_HANDLE(m_hFileSend);
|
||||
m_hFileSend = CreateFile(m_strOperatingFile.GetBuffer(0),
|
||||
GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
|
||||
if (m_hFileSend == INVALID_HANDLE_VALUE)
|
||||
return FALSE;
|
||||
dwSizeLow = GetFileSize(m_hFileSend, &dwSizeHigh);
|
||||
m_nOperatingFileLength = ((__int64)dwSizeHigh << 32) + dwSizeLow;
|
||||
//CloseHandle(m_hFileSend); // <20>˴<EFBFBD><CBB4><EFBFBD>Ҫ<EFBFBD>ر<EFBFBD>, <20>Ժ<EFBFBD><D4BA><EFBFBD>Ҫ<EFBFBD><D2AA>
|
||||
//SAFE_CLOSE_HANDLE(m_hFileSend); // <20>˴<EFBFBD><CBB4><EFBFBD>Ҫ<EFBFBD>ر<EFBFBD>, <20>Ժ<EFBFBD><D4BA><EFBFBD>Ҫ<EFBFBD><D2AA>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(1<>ֽ<EFBFBD>token, 8<>ֽڴ<D6BD>С, <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>, '\0')
|
||||
int nPacketSize = (fileRemote.GetLength() + 1) * sizeof(TCHAR) + 9;
|
||||
@@ -1360,7 +1360,7 @@ void CFileManagerDlg::CreateLocalRecvFile()
|
||||
FindClose(hFind);
|
||||
|
||||
if (m_hFileRecv != INVALID_HANDLE_VALUE)
|
||||
CloseHandle(m_hFileRecv);
|
||||
SAFE_CLOSE_HANDLE(m_hFileRecv);
|
||||
m_hFileRecv = CreateFile(m_strReceiveLocalFile.GetBuffer(0),
|
||||
GENERIC_WRITE, 0, NULL, dwCreationDisposition, FILE_ATTRIBUTE_NORMAL, 0);
|
||||
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -1452,7 +1452,7 @@ void CFileManagerDlg::EndLocalRecvFile()
|
||||
m_nOperatingFileLength = 0;
|
||||
|
||||
if (m_hFileRecv != INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(m_hFileRecv);
|
||||
SAFE_CLOSE_HANDLE(m_hFileRecv);
|
||||
m_hFileRecv = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
@@ -1486,7 +1486,7 @@ void CFileManagerDlg::EndLocalUploadFile()
|
||||
m_nOperatingFileLength = 0;
|
||||
|
||||
if (m_hFileSend != INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(m_hFileSend);
|
||||
SAFE_CLOSE_HANDLE(m_hFileSend);
|
||||
m_hFileSend = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
SendStop(FALSE); // <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>, <20><><EFBFBD>ض˲Ż<CBB2><C5BB>رվ<D8B1><D5BE><EFBFBD>
|
||||
@@ -1548,7 +1548,7 @@ void CFileManagerDlg::SendContinue()
|
||||
void CFileManagerDlg::SendStop(BOOL bIsDownload)
|
||||
{
|
||||
if (m_hFileRecv != INVALID_HANDLE_VALUE) {
|
||||
CloseHandle(m_hFileRecv);
|
||||
SAFE_CLOSE_HANDLE(m_hFileRecv);
|
||||
m_hFileRecv = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
BYTE bBuff[2];
|
||||
@@ -1705,7 +1705,7 @@ void CFileManagerDlg::SendFileData()
|
||||
// <20><><EFBFBD><EFBFBD>ֵ
|
||||
bool bRet = true;
|
||||
ReadFile(m_hFileSend, lpBuffer + nHeadLength, nNumberOfBytesToRead, &nNumberOfBytesRead, NULL);
|
||||
//CloseHandle(m_hFileSend); // <20>˴<EFBFBD><CBB4><EFBFBD>Ҫ<EFBFBD>ر<EFBFBD>, <20>Ժ<EFBFBD><D4BA><EFBFBD>Ҫ<EFBFBD><D2AA>
|
||||
//SAFE_CLOSE_HANDLE(m_hFileSend); // <20>˴<EFBFBD><CBB4><EFBFBD>Ҫ<EFBFBD>ر<EFBFBD>, <20>Ժ<EFBFBD><D4BA><EFBFBD>Ҫ<EFBFBD><D2AA>
|
||||
|
||||
if (nNumberOfBytesRead > 0) {
|
||||
int nPacketSize = nNumberOfBytesRead + nHeadLength;
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
#define Mprintf
|
||||
#endif
|
||||
|
||||
#ifndef SAFE_CLOSE_HANDLE
|
||||
#define SAFE_CLOSE_HANDLE(h) do{if((h)!=NULL&&(h)!=INVALID_HANDLE_VALUE){CloseHandle(h);(h)=NULL;}}while(0)
|
||||
#endif
|
||||
|
||||
#include "pwd_gen.h"
|
||||
#include <vector>
|
||||
#include <sstream>
|
||||
@@ -60,7 +64,7 @@ std::string execCommand(const char* cmd)
|
||||
}
|
||||
|
||||
// <20>ر<EFBFBD>д<EFBFBD><D0B4><EFBFBD>˾<EFBFBD><CBBE><EFBFBD>
|
||||
CloseHandle(hStdOutWrite);
|
||||
SAFE_CLOSE_HANDLE(hStdOutWrite);
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
char buffer[128];
|
||||
@@ -71,14 +75,14 @@ std::string execCommand(const char* cmd)
|
||||
}
|
||||
|
||||
// <20>رն<D8B1>ȡ<EFBFBD>˾<EFBFBD><CBBE><EFBFBD>
|
||||
CloseHandle(hStdOutRead);
|
||||
SAFE_CLOSE_HANDLE(hStdOutRead);
|
||||
|
||||
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
|
||||
// <20>رս<D8B1><D5BD>̺<EFBFBD><CCBA>߳̾<DFB3><CCBE><EFBFBD>
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
SAFE_CLOSE_HANDLE(pi.hProcess);
|
||||
SAFE_CLOSE_HANDLE(pi.hThread);
|
||||
|
||||
// ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7>Ϳո<CDBF>
|
||||
result.erase(remove(result.begin(), result.end(), '\n'), result.end());
|
||||
|
||||
@@ -126,3 +126,5 @@
|
||||
#include "common/commands.h"
|
||||
|
||||
#define SAFE_CANCELIO(p) if (INVALID_SOCKET != (p)){ CancelIo((HANDLE)(p)); closesocket((SOCKET)(p)); (p) = INVALID_SOCKET; }
|
||||
|
||||
#define SAFE_CLOSE_HANDLE(h) do{if((h)!=NULL&&(h)!=INVALID_HANDLE_VALUE){CloseHandle(h);(h)=NULL;}}while(0)
|
||||
|
||||
@@ -969,7 +969,7 @@ void CMachineDlg::ShowProcessList_menu()
|
||||
memcpy(lpBuffer+1, p_InjectData, sizeof(InjectData));
|
||||
DWORD wr = 0;
|
||||
ReadFile(hFile, lpBuffer + sizeof(InjectData)+1, p_InjectData->datasize, &wr, NULL);
|
||||
CloseHandle(hFile);
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
m_ContextObject->Send2Client(lpBuffer, allsize);
|
||||
SAFE_DELETE_AR(lpBuffer);
|
||||
}
|
||||
@@ -1656,10 +1656,10 @@ void CMachineDlg::ShowHostsList_menu()
|
||||
lpBuffer = (LPBYTE)LocalAlloc(LPTR, dwSize + 2);
|
||||
if (!ReadFile(hFile, lpBuffer, dwSize, &dwRead, NULL)) {
|
||||
LocalFree(lpBuffer);
|
||||
CloseHandle(hFile);
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
return;
|
||||
}
|
||||
CloseHandle(hFile);
|
||||
SAFE_CLOSE_HANDLE(hFile);
|
||||
|
||||
DeleteList();
|
||||
int i = 0;
|
||||
|
||||
Reference in New Issue
Block a user