Partager via


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