Condividi tramite


Funzione VDMEnumProcessWOW (vdmdbg.h)

[Questa funzione non è supportata e potrebbe essere modificata o non disponibile in futuro.]

Enumera tutte le macchine dos virtuali che eseguono attività windows a 16 bit.

Sintassi

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

Parametri

[in] fp

Puntatore a una funzione di callback. La funzione viene chiamata per ogni VDM enumerato. Per informazioni dettagliate, vedere la funzione di callback ProcessVDMs .

[in] lparam

Valore definito dall'utente passato alla funzione di callback.

Valore restituito

Numero di macchine virtuali in esecuzione o numero enumerato prima dell'interruzione dell'enumerazione.

Commenti

Queste macchine virtuali contengono l'attività WowExec.exe. Le macchine virtuali DOS non sono enumerate. Per enumerare macchine virtuali DOS, è necessario usare un altro metodo. In primo luogo, è possibile usare VDMEnumProcessWOW() per creare un elenco di tutte le VM Win16 e quindi enumerare tutte le istanze di NTVDM.exe usando un altro schema (ad esempio PSAPI). Qualsiasi NTVDM.exe dall'enumerazione completa non presente nell'elenco Win16 è un DOS VDM.

Esempio

L'esempio seguente illustra come enumerare le macchine DOS virtuali che eseguono attività di Windows a 16 bit.

   // 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;
   }


Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione vdmdbg.h
Libreria VdmDbg.lib
DLL VdmDbg.dll