Freigeben über


VDMEnumProcessWOW-Funktion (vdmdbg.h)

[Diese Funktion wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]

Listet alle virtuellen DOS-Computer auf, auf denen 16-Bit-Windows-Aufgaben ausgeführt werden.

Syntax

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

Parameter

[in] fp

Ein Zeiger auf eine Rückruffunktion. Die Funktion wird für jeden aufgezählten VDM aufgerufen. Weitere Informationen finden Sie in der Rückruffunktion ProcessVDMs .

[in] lparam

Ein benutzerdefinierter Wert, der an die Rückruffunktion übergeben wird.

Rückgabewert

Die Anzahl der ausgeführten VDMs oder die Nummer, die vor dem Beenden der Enumeration aufgezählt wurde.

Hinweise

Diese VDMs enthalten den WowExec.exe Task. DOS-VDMs werden nicht aufgelistet. Zum Aufzählen von DOS-VDMs müssen Sie eine andere Methode verwenden. Zunächst können Sie VDMEnumProcessWOW() verwenden, um eine Liste aller Win16-VDMs zu erstellen und dann alle Instanzen von NTVDM.exe mit einem anderen Schema (z. B. PSAPI) aufzulisten. Jede NTVDM.exe aus der vollständigen Enumeration, die nicht in der Win16-Liste enthalten war, ist ein DOS VDM.

Beispiele

Im folgenden Beispiel wird gezeigt, wie virtuelle DOS-Computer aufgezählt werden, auf denen 16-Bit-Windows-Aufgaben ausgeführt werden.

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


Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile vdmdbg.h
Bibliothek VdmDbg.lib
DLL VdmDbg.dll