MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / OnRemove

Method OnRemove

WinArk/MiniFilterTable.cpp:341–370  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

339}
340
341LRESULT CMiniFilterTable::OnRemove(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
342 int selected = m_Table.data.selected;
343 ATLASSERT(selected >= 0);
344 auto& info = m_Table.data.info[selected];
345
346 auto len = info.FilterName.length();
347 DWORD size = len * sizeof(WCHAR) + sizeof(MiniFilterData);
348
349 auto pData = std::make_unique<BYTE[]>(size);
350 if (!pData)
351 return FALSE;
352
353 ULONG offset = SymbolHelper::GetFltmgrStructMemberOffset("_FLT_OBJECT", "RundownRef");
354
355 auto data = reinterpret_cast<MiniFilterData*>(pData.get());
356 data->OperationsOffset = 0;
357 data->RundownRefOffset = offset;
358 data->Length = len;
359 ::wcscpy_s(data->Name, len + 1, info.FilterName.c_str());
360
361 bool ok = DriverHelper::RemoveMiniFilter(data, size);
362 if (!ok) {
363 AtlMessageBox(m_hWnd, L"�Ƴ�ʧ��!", L"Error", MB_ICONERROR);
364 }
365 if (ok) {
366 Refresh();
367 Invalidate();
368 }
369 return TRUE;
370}

Callers

nothing calls this directly

Calls 1

RemoveMiniFilterFunction · 0.85

Tested by

no test coverage detected