Share via


Função VDMEnumProcessWOW (vdmdbg.h)

[Essa função não tem suporte e pode ser alterada ou indisponível no futuro.]

Enumera todas as máquinas virtuais dos DOS que executam tarefas do Windows de 16 bits.

Sintaxe

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

Parâmetros

[in] fp

Um ponteiro para uma função de retorno de chamada. A função é chamada para cada VDM enumerada. Para obter detalhes, consulte a função de retorno de chamada ProcessVDMs .

[in] lparam

Um valor definido pelo usuário que é passado para a função de retorno de chamada.

Retornar valor

O número de VDMs em execução ou o número enumerado antes da enumeração ser encerrada.

Comentários

Essas VDMs contêm a tarefa WowExec.exe. As VDMs dos DOS não são enumeradas. Para enumerar as VDMs dos DOS, você precisa usar outro método. Primeiro, você pode usar VDMEnumProcessWOW() para fazer uma lista de todas as VDMs win16 e, em seguida, enumerar todas as instâncias de NTVDM.exe usando algum outro esquema (como PSAPI). Qualquer NTVDM.exe da enumeração completa que não estava na lista do Win16 é uma VDM dos DOS.

Exemplos

O exemplo a seguir mostra como enumerar máquinas DOS virtuais executando tarefas do 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 Valor
Plataforma de Destino Windows
Cabeçalho vdmdbg.h
Biblioteca VdmDbg.lib
DLL VdmDbg.dll