Функция VDMEnumProcessWOW (vdmdbg.h)
[Эта функция не поддерживается и может быть изменена или недоступна в будущем.]
Перечисляет все виртуальные машины DOS, на которых выполняются 16-разрядные задачи Windows.
Синтаксис
INT VDMEnumProcessWOW(
[in] PROCESSENUMPROC fp,
[in] LPARAM lparam
);
Параметры
[in] fp
Указатель на функцию обратного вызова. Функция вызывается для каждого перечисленного VDM. Дополнительные сведения см. в разделе Функция обратного вызова ProcessVDMs .
[in] lparam
Определяемое пользователем значение, передаваемое функции обратного вызова.
Возвращаемое значение
Число запущенных виртуальных машин или число, перечисленное до завершения перечисления.
Комментарии
Эти виртуальные машины содержат задачу WowExec.exe. Виртуальные машины DOS не перечисляются. Для перечисления виртуальных машин DOS необходимо использовать другой метод. Сначала можно использовать VDMEnumProcessWOW(), чтобы создать список всех виртуальных машин Win16, а затем перечислить все экземпляры NTVDM.exe с помощью другой схемы (например, PSAPI). Все NTVDM.exe из полного перечисления, отсутствующее в списке Win16, являются dos VDM.
Примеры
В следующем примере показано, как перечислить виртуальные компьютеры DOS, выполняющие 16-разрядные задачи Windows.
// Enumerate all 16-bit tasks on the system.
#include <windows.h>
#include <stdio.h>
#include <vdmdbg.h>
BOOL WINAPI ProcessVDMs( DWORD, DWORD, LPARAM );
BOOL WINAPI ProcessTasks( DWORD, WORD, WORD, PSZ, PSZ, LPARAM );
#pragma comment( lib, "vdmdbg.lib" )
void main()
{
// Enumerate VDMs
VDMEnumProcessWOW(
(PROCESSENUMPROC)ProcessVDMs,
(LPARAM)NULL
);
}
BOOL WINAPI ProcessVDMs( DWORD dwProcessId, DWORD dwAttrib,
LPARAM t )
{
printf("\nProcess ID: %d\n", dwProcessId);
// Use process ID of VDM to enumerate through its tasks
VDMEnumTaskWOWEx(
dwProcessId,
(TASKENUMPROCEX)ProcessTasks,
(LPARAM)NULL
);
// Keep enumerating
return FALSE;
}
BOOL WINAPI ProcessTasks( DWORD dwThreadId, WORD hMod16, WORD hTask16,
PSZ pszModName, PSZ pszFileName, LPARAM lParam )
{
// Print task's information
printf("Thread ID: %d\n", dwThreadId);
printf("Module handle: %d\n", hMod16);
printf("Task handle: %d\n", hTask16);
printf("Module Name: %s\n", pszModName);
printf("File Name: %s\n", pszFileName);
// Keep enumerating
return FALSE;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | vdmdbg.h |
Библиотека | VdmDbg.lib |
DLL | VdmDbg.dll |