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 |