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

Function RemoveObCallbackNotify

KernelLibrary/SysMon.cpp:800–829  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

798}
799
800bool RemoveObCallbackNotify(POBJECT_TYPE objectType, ULONG callbackListOffset, void* handle) {
801 PLIST_ENTRY callbackListHead = nullptr;
802 PLIST_ENTRY nextEntry = nullptr;
803 POB_CALLBACK_ENTRY callbackEntry = nullptr;
804 ULONG count = 0;
805
806 if (!objectType) {
807 return false;
808 }
809
810 callbackListHead = (PLIST_ENTRY)((PUCHAR)objectType + callbackListOffset);
811 nextEntry = callbackListHead->Flink;
812 int i = 0;
813 while (nextEntry != callbackListHead) {
814 callbackEntry = CONTAINING_RECORD(nextEntry, OB_CALLBACK_ENTRY, EntryItemList);
815 if (ExAcquireRundownProtection(&callbackEntry->RundownProtect)) {
816 if (callbackEntry->RegistrationHandle == handle) {
817 break;
818 }
819 i++;
820 ExReleaseRundownProtection(&callbackEntry->RundownProtect);
821 }
822 nextEntry = nextEntry->Flink;
823 }
824 if (callbackEntry && callbackEntry->RegistrationHandle == handle) {
825 callbackEntry->RegistrationHandle->Count = 0;
826 RemoveEntryList(nextEntry);
827 }
828 return false;
829}
830
831NTSTATUS EnumMiniFilterOperations(MiniFilterData* pData, OperationInfo* pInfo) {
832 NTSTATUS status = STATUS_SUCCESS;

Callers 1

RemoveSystemNotifyFunction · 0.85

Calls 1

RemoveEntryListFunction · 0.85

Tested by

no test coverage detected