Compartir a través de


Función VDMEnumProcessWOW (vdmdbg.h)

[Esta función no se admite y puede modificarse o no estar disponible en el futuro].

Enumera todas las máquinas DOS virtuales que ejecutan tareas de Windows de 16 bits.

Sintaxis

INT VDMEnumProcessWOW(
  [in] PROCESSENUMPROC fp,
  [in] LPARAM          lparam
);

Parámetros

[in] fp

Puntero a una función de devolución de llamada. Se llama a la función para cada VDM enumerado. Para más información, consulte la función de devolución de llamada ProcessVDMs .

[in] lparam

Valor definido por el usuario que se pasa a la función de devolución de llamada.

Valor devuelto

Número de máquinas virtuales que se ejecutan o el número enumerado antes de que finalice la enumeración.

Comentarios

Estas máquinas virtuales contienen la tarea WowExec.exe. No se enumeran las máquinas virtuales DOS. Para enumerar máquinas virtuales DOS, debe usar otro método. En primer lugar, puede usar VDMEnumProcessWOW() para crear una lista de todas las máquinas virtuales Win16 y, a continuación, enumerar todas las instancias de NTVDM.exe con algún otro esquema (como PSAPI). Cualquier NTVDM.exe de la enumeración completa que no estaba en la lista win16 es un VDM de DOS.

Ejemplos

En el ejemplo siguiente se muestra cómo enumerar máquinas DOS virtuales que ejecutan tareas de Windows de 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;
   }


Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado vdmdbg.h
Library VdmDbg.lib
Archivo DLL VdmDbg.dll