BOOLEAN
ExEnumHandleTable(
IN PHANDLE_TABLE HandleTable,
IN EX_ENUMERATE_HANDLE_ROUTINE EnumHandleProcedure,
IN PVOID EnumParameter,
OUT PHANDLE Handle OPTIONAL
)/*++
Routine Description:
This function enumerates all the valid handles in a handle table.
For each valid handle in the handle table, the specified eumeration
function is called. If the enumeration function returns TRUE, then
the enumeration is stopped, the current handle is returned to the
caller via the optional Handle parameter, and this function returns
TRUE to indicated that the enumeration stopped at a specific handle.
Arguments:
HandleTable - Supplies a pointer to a handle table.
EnumHandleProcedure - Supplies a pointer to a fucntion to call for
each valid handle in the enumerated handle table.
EnumParameter - Supplies an uninterpreted 32-bit value that is passed
to the EnumHandleProcedure each time it is called.
Handle - Supplies an optional pointer a variable that receives the
Handle value that the enumeration stopped at. Contents of the
variable only valid if this function returns TRUE.
Return Value:
If the enumeration stopped at a specific handle, then a value of TRUE
is returned. Otherwise, a value of FALSE is returned.
--*/{
PHANDLE_ENTRY HandleEntry;
BOOLEAN ResultValue;
PHANDLE_ENTRY TableEntries;
PHANDLE_ENTRY TableBound;
ULONG TableIndex;
PAGED_CODE();
ASSERT(HandleTable!=NULL);Lock the handle table exclusive and enumerate the handle entries.//ResultValue=FALSE;
ExLockHandleTableShared(HandleTable);
TableBound=HandleTable->TableBound;
TableEntries=HandleTable->TableEntries;
HandleEntry=&TableEntries[1];while(HandleEntry
TableIndex=HandleEntry-TableEntries;if((*EnumHandleProcedure)(HandleEntry,
INDEX_TO_HANDLE(TableIndex),
EnumParameter)) {if(ARGUMENT_PRESENT(Handle)) {*Handle=INDEX_TO_HANDLE(TableIndex);
}
ResultValue=TRUE;break;
}
}
HandleEntry+=1;
}
ExUnlockHandleTableShared(HandleTable);returnResultValue;
}
最后
以上就是淡定爆米花最近收集整理的关于bcb隐藏窗口_[转载] 检测隐藏进程的全部内容,更多相关bcb隐藏窗口_[转载]内容请搜索靠谱客的其他文章。
发表评论 取消回复