다음을 통해 공유


VDMEnumProcessWOW 함수(vdmdbg.h)

[이 함수는 지원되지 않으며 나중에 변경되거나 사용할 수 없습니다.]

16비트 Windows 작업을 실행하는 모든 가상 DOS 머신을 열거합니다.

구문

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

매개 변수

[in] fp

콜백 함수에 대한 포인터입니다. 함수는 열거된 각 VDM에 대해 호출됩니다. 자세한 내용은 ProcessVDMs 콜백 함수를 참조하세요.

[in] lparam

콜백 함수에 전달되는 사용자 정의 값입니다.

반환 값

실행 중인 VDM 수 또는 열거형이 종료되기 전에 열거된 수입니다.

설명

이러한 VDM에는 WowExec.exe 작업이 포함됩니다. DOS VDM은 열거되지 않습니다. DOS VDM을 열거하려면 다른 메서드를 사용해야 합니다. 먼저 VDMEnumProcessWOW()를 사용하여 모든 Win16 VDM의 목록을 만들고 다른 구성표(예: PSAPI)를 사용하여 NTVDM.exe 모든 인스턴스를 열거할 수 있습니다. Win16 목록에 없는 전체 열거형의 모든 NTVDM.exe DOS VDM입니다.

예제

다음 예제에서는 16비트 Windows 작업을 실행하는 가상 DOS 머신을 열거하는 방법을 보여 줍니다.

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


요구 사항

요구 사항
대상 플랫폼 Windows
헤더 vdmdbg.h
라이브러리 VdmDbg.lib
DLL VdmDbg.dll