Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Toolhelp32

16K
13 мая 2006 года
Golar
5 / / 13.05.2006
Добрый вечер, помогите пожалуйста с использованием библиотеки Toolhelp32. мне нужно узнать размер модуля, владельцем которого является определенный процесс.
Я что-то запуталась.
у нас есть тип TProcessEntry32 и тип TModuleEntry32
я не пойму что такое th32ModuleID в первом случае. Пожалуйста помогите разобраться!:(
Правильно ли то, что один процесс может быть владельцем только одного модуля? или нет?
1.8K
24 мая 2006 года
SeregaLBN
62 / / 03.10.2003
Цитата:
Originally posted by Golar
есть тип TProcessEntry32 и тип TModuleEntry32
я не пойму что такое th32ModuleID в первом случае.



th32ModuleID - идентификатор процесса принадлежащий модулю. Причём этот идентификатор действителен только для ToolHelp ф-ций. Как я понял, это что-то вроде порядкового номера модуля в данном процессе. Т.е., практически безполезный праметр...

Цитата из SDK:

Цитата:

MODULEENTRY32

Describes an entry from a list that enumerates the modules used by a specified process.

Код:
typedef struct tagMODULEENTRY32 {
  DWORD dwSize;
  DWORD th32ModuleID;
  DWORD th32ProcessID;
  DWORD GlblcntUsage;
  DWORD ProccntUsage;
  BYTE* modBaseAddr;
  DWORD modBaseSize;
  HMODULE hModule;
  TCHAR szModule[MAX_MODULE_NAME32 + 1];
  TCHAR szExePath[MAX_PATH];
} MODULEENTRY32, *PMODULEENTRY32;

Members

dwSize - Size of the structure, in bytes. Before calling the Module32First function, set this member to sizeof(MODULEENTRY32). If you do not initialize dwSize, Module32First will fail.

th32ModuleID - Module identifier in the context of the owning process. The contents of this member has meaning only to the tool help functions. It is not a handle, nor is it usable by functions other than the ToolHelp functions.

th32ProcessID - Identifier of the process to be examined.

GlblcntUsage - Global usage count on the module.

ProccntUsage - Module usage count in the context of the owning process.

modBaseAddr - Base address of the module in the context of the owning process.

modBaseSize - Size of the module, in bytes.

hModule - Handle to the module in the context of the owning process.

szModule - Pointer to a null-terminated string that specifies the module name.

szExePath - Pointer to a null-terminated string that specifies the module path.

Note
The modBaseAddr and hModule members are valid only in the context of the process specified by th32ProcessID.



Цитата:

PROCESSENTRY32

Describes an entry from a list that enumerates the processes residing in the system address space when a snapshot was taken.

Код:
typedef struct tagPROCESSENTRY32 {
  DWORD dwSize;
  DWORD cntUsage;
  DWORD th32ProcessID;
  ULONG_PTR th32DefaultHeapID;
  DWORD th32ModuleID;
  DWORD cntThreads;
  DWORD th32ParentProcessID;
  LONG pcPriClassBase;
  DWORD dwFlags;
  TCHAR szExeFile[MAX_PATH];
} PROCESSENTRY32, *PPROCESSENTRY32;

Members
dwSize - Size of the structure, in bytes. Before calling the Process32First function, set this member to sizeof (PROCESSENTRY32). If you do not initialize dwSize, Process32First will fail.

cntUsage - Number of references to the process. A process exists as long as its usage count is nonzero. As soon as its usage count becomes zero, a process terminates.

th32ProcessID - Identifier of the process.

th32DefaultHeapID - Identifier of the default heap for the process. The contents of this member has meaning only to the tool help functions. It is not a handle, nor is it usable by functions other than the ToolHelp functions.

th32ModuleID - Module identifier of the process. The contents of this member has meaning only to the tool help functions. It is not a handle, nor is it usable by functions other than the ToolHelp functions.

cntThreads - Number of execution threads started by the process.

th32ParentProcessID - Identifier of the process that created the process being examined.

pcPriClassBase - Base priority of any threads created by this process.

dwFlags - Reserved; do not use.

szExeFile - Pointer to a null-terminated string that specifies the name of the executable file for the process.

Windows Me/98/95: The file name includes the path.



Цитата:
Originally posted by Golar
Правильно ли то, что один процесс может быть владельцем только одного модуля? или нет?


Некорректный вопрос. Модули - это загруженные в адресное пространство процесса библиотеки (dll, ocx, ...). Их много, обычно очень много. Но процесс, в которые они загружены, не является их владельцем, т.к. эти же библиотеки в этоже время могут использоваться и др. процессами.

16K
25 мая 2006 года
Golar
5 / / 13.05.2006
Спасибо, я уже разобралась, ясно, что вопрос некорректный - потому и мучилась с ним (так вопрос был поставлен преподавателем)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог