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 |