Fonction VDMEnumProcessWOW (vdmdbg.h)
[Cette fonction n’est pas prise en charge et peut être modifiée ou indisponible à l’avenir.]
Énumère toutes les machines DOS virtuelles exécutant des tâches Windows 16 bits.
Syntaxe
INT VDMEnumProcessWOW(
[in] PROCESSENUMPROC fp,
[in] LPARAM lparam
);
Paramètres
[in] fp
Pointeur vers une fonction de rappel. La fonction est appelée pour chaque VDM énuméré. Pour plus d’informations, consultez la fonction de rappel ProcessVDMs .
[in] lparam
Valeur définie par l’utilisateur qui est passée à la fonction de rappel.
Valeur retournée
Nombre de machines virtuelles en cours d’exécution ou nombre énuméré avant la fin de l’énumération.
Remarques
Ces machines virtuelles contiennent la tâche WowExec.exe. Les machines virtuelles DOS ne sont pas énumérées. Pour énumérer les machines virtuelles DOS, vous devez utiliser une autre méthode. Tout d’abord, vous pouvez utiliser VDMEnumProcessWOW() pour créer une liste de toutes les machines virtuelles Win16, puis énumérer toutes les instances de NTVDM.exe à l’aide d’un autre schéma (tel que PSAPI). Toute NTVDM.exe de l’énumération complète qui n’était pas dans la liste Win16 est un VDM DOS.
Exemples
L’exemple suivant montre comment énumérer des machines DOS virtuelles exécutant des tâches Windows 16 bits.
// 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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | vdmdbg.h |
Bibliothèque | VdmDbg.lib |
DLL | VdmDbg.dll |