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 |