Bagikan melalui


Fungsi VDMEnumProcessWOW (vdmdbg.h)

[Fungsi ini tidak didukung dan dapat diubah atau tidak tersedia di masa mendatang.]

Menghitung semua komputer DOS virtual yang menjalankan tugas Windows 16-bit.

Sintaks

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

Parameter

[in] fp

Penunjuk ke fungsi panggilan balik. Fungsi ini dipanggil untuk setiap VDM yang dijumlahkan. Untuk detailnya, lihat fungsi panggilan balik ProcessVDMs .

[in] lparam

Nilai yang ditentukan pengguna yang diteruskan ke fungsi panggilan balik.

Nilai kembali

Jumlah VDM yang berjalan, atau jumlah yang dijumlahkan sebelum enumerasi dihentikan.

Keterangan

VDM ini berisi tugas WowExec.exe. DOS VDM tidak dijumlahkan. Untuk menghitung DOS VDM, Anda perlu menggunakan metode lain. Pertama, Anda dapat menggunakan VDMEnumProcessWOW() untuk membuat daftar semua VDM Win16, dan kemudian menghitung semua instans NTVDM.exe menggunakan beberapa skema lain (seperti PSAPI). Setiap NTVDM.exe dari enumerasi lengkap yang tidak ada dalam daftar Win16 adalah DOS VDM.

Contoh

Contoh berikut menunjukkan cara menghitung komputer DOS virtual yang menjalankan tugas Windows 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;
   }


Persyaratan

Persyaratan Nilai
Target Platform Windows
Header vdmdbg.h
Pustaka VdmDbg.lib
DLL VdmDbg.dll