Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Список mutex'ов для приложения


Автор: Purple_Light 12.9.2008, 11:06
Всем привет!

Задача: Написать приложение которое выводит список mutex'ов которых создало приложение. Т.е. на вход идет имя файла или ID процесса, на выход соответственно список всех mutex'ов которых использует приложение.

Даже не знаю с чего начать. Погуглил. Нашел ссылку на обсуждение, но там говориться только, что некоторые продукты от SysInternals умеют это делать. Но как они это делают я не нашел.

Автор: chipset 14.9.2008, 22:42
http://www.cs.miami.edu/~burt/journal/NT/handle_table.html

Код

void GetHandleTableListHead()
{
PSYSTEM_MODULE_INFORMATION_EX Info = GetInfoTable(SystemModuleInformation);
ULONG NtoskrnlBase = (ULONG)Info->Modules[0].Base;
ULONG NtoskrnlSize = Info->Modules[0].Size;
PHANDLE_TABLE HandleTable = *(PHANDLE_TABLE *)((ULONG)PsGetCurrentProcess()
+ HandleTableOffset);
PLIST_ENTRY HandleTableList = (PLIST_ENTRY)((ULONG)HandleTable +
HandleTableListOffset);
PLIST_ENTRY CurrTable;

ExFreePool(Info);

for (CurrTable = HandleTableList->Flink;
CurrTable != HandleTableList;
CurrTable = CurrTable->Flink)
{
if ((ULONG)CurrTable > NtoskrnlBase && (ULONG)CurrTable < NtoskrnlBase +
NtoskrnlSize)
{
HandleTableListHead = CurrTable;
break;
}
}}after
this we parse list withvoid ScanHandleTablesList()
{
PLIST_ENTRY CurrTable;
PEPROCESS QuotaProcess;

for (CurrTable =  HandleTableListHead->Flink;
CurrTable != HandleTableListHead;
CurrTable =  CurrTable->Flink)
{
QuotaProcess = *(PEPROCESS *)((PUCHAR)CurrTable - HandleTableListOffset +
QuotaProcessOffset);
if (QuotaProcess) CollectProcess(QuotaProcess);
}
}

- отсюда http://www.eggheadcafe.com/software/aspnet/31023465/handle-table-offset.aspx

Что-то ещё интересненькое найдешь, пости сюда.

Автор: EnergoHokum 14.9.2008, 23:04
http://groups.google.com/group/microsoft.public.win32.programmer.kernel/browse_thread/thread/84ed4f830cdc9cd8/fa936ad965d7f4d9

Автор: Purple_Light 15.9.2008, 10:09
спасибо  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)