Bagikan melalui


Fungsi EnumServicesStatusExA (winsvc.h)

Menghitung layanan dalam database manajer kontrol layanan yang ditentukan. Nama dan status setiap layanan disediakan, bersama dengan data tambahan berdasarkan tingkat informasi yang ditentukan.

Sintaks

BOOL EnumServicesStatusExA(
  [in]                SC_HANDLE    hSCManager,
  [in]                SC_ENUM_TYPE InfoLevel,
  [in]                DWORD        dwServiceType,
  [in]                DWORD        dwServiceState,
  [out, optional]     LPBYTE       lpServices,
  [in]                DWORD        cbBufSize,
  [out]               LPDWORD      pcbBytesNeeded,
  [out]               LPDWORD      lpServicesReturned,
  [in, out, optional] LPDWORD      lpResumeHandle,
  [in, optional]      LPCSTR       pszGroupName
);

Parameter

[in] hSCManager

Handel ke database manajer kontrol layanan. Handel ini dikembalikan oleh fungsi OpenSCManager , dan harus memiliki hak akses SC_MANAGER_ENUMERATE_SERVICE . Untuk informasi selengkapnya, lihat Keamanan Layanan dan Hak Akses.

[in] InfoLevel

Atribut layanan yang akan dikembalikan. Gunakan SC_ENUM_PROCESS_INFO untuk mengambil informasi nama dan status layanan untuk setiap layanan dalam database. Parameter lpServices adalah penunjuk ke buffer yang menerima array struktur ENUM_SERVICE_STATUS_PROCESS . Buffer harus cukup besar untuk menahan struktur serta string yang ditunjukkan anggotanya.

Saat ini, tidak ada tingkat informasi lain yang ditentukan.

[in] dwServiceType

Jenis layanan yang akan dijumlahkan. Parameter ini bisa menjadi satu atau beberapa nilai berikut.

Nilai Makna
SERVICE_DRIVER
0x0000000B
Layanan jenis SERVICE_KERNEL_DRIVER dan SERVICE_FILE_SYSTEM_DRIVER.
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Layanan driver sistem file.
SERVICE_KERNEL_DRIVER
0x00000001
Layanan driver.
SERVICE_WIN32
0x00000030
Layanan jenis SERVICE_WIN32_OWN_PROCESS dan SERVICE_WIN32_SHARE_PROCESS.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Layanan yang berjalan dalam proses mereka sendiri.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Layanan yang berbagi proses dengan satu atau beberapa layanan lainnya. Untuk informasi selengkapnya, lihat Program Layanan.

[in] dwServiceState

Status layanan yang akan dijumlahkan. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
SERVICE_ACTIVE
0x00000001
Menghitung layanan yang berada dalam status berikut: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, dan SERVICE_PAUSED.
SERVICE_INACTIVE
0x00000002
Menghitung layanan yang berada dalam status SERVICE_STOPPED .
SERVICE_STATE_ALL
0x00000003
Menggabungkan status SERVICE_ACTIVE dan SERVICE_INACTIVE .

[out, optional] lpServices

Penunjuk ke buffer yang menerima informasi status. Format data ini tergantung pada nilai parameter InfoLevel .

Ukuran maksimum array ini adalah 256K byte. Untuk menentukan ukuran yang diperlukan, tentukan NULL untuk parameter ini dan 0 untuk parameter cbBufSize . Fungsi akan gagal dan GetLastError akan mengembalikan ERROR_MORE_DATA. Parameter pcbBytesNeeded akan menerima ukuran yang diperlukan.

Windows Server 2003 dan Windows XP: Ukuran maksimum array ini adalah 64K byte. Batas ini ditingkatkan pada Windows Server 2003 dengan SP1 dan Windows XP dengan SP2.

[in] cbBufSize

Ukuran buffer yang diacu oleh parameter lpServices , dalam byte.

[out] pcbBytesNeeded

Penunjuk ke variabel yang menerima jumlah byte yang diperlukan untuk mengembalikan entri layanan yang tersisa, jika buffer terlalu kecil.

[out] lpServicesReturned

Penunjuk ke variabel yang menerima jumlah entri layanan yang dikembalikan.

[in, out, optional] lpResumeHandle

Penunjuk ke variabel yang, pada input, menentukan titik awal enumerasi. Anda harus mengatur nilai ini ke nol saat pertama kali fungsi EnumServicesStatusEx dipanggil. Pada output, nilai ini nol jika fungsi berhasil. Namun, jika fungsi mengembalikan nol dan fungsi GetLastError mengembalikan ERROR_MORE_DATA, nilai ini menunjukkan entri layanan berikutnya untuk dibaca ketika fungsi EnumServicesStatusEx dipanggil untuk mengambil data tambahan.

[in, optional] pszGroupName

Nama grup urutan beban. Jika parameter ini adalah string, satu-satunya layanan yang dijumlahkan adalah layanan yang termasuk dalam grup yang memiliki nama yang ditentukan oleh string. Jika parameter ini adalah string kosong, hanya layanan yang bukan milik grup apa pun yang dijumlahkan. Jika parameter ini NULL, keanggotaan grup diabaikan dan semua layanan dijumlahkan.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Kesalahan berikut dapat dikembalikan.

Menampilkan kode Deskripsi
ERROR_ACCESS_DENIED
Handel tidak memiliki hak akses SC_MANAGER_ENUMERATE_SERVICE .
ERROR_MORE_DATA
Buffer terlalu kecil. Tidak semua data dalam database aktif dapat dikembalikan. Parameter pcbBytesNeeded berisi jumlah byte yang diperlukan untuk menerima entri yang tersisa.
ERROR_INVALID_PARAMETER
Nilai parameter ilegal digunakan.
ERROR_INVALID_HANDLE
Handel tidak valid.
ERROR_INVALID_LEVEL
Parameter InfoLevel berisi nilai yang tidak didukung.
ERROR_SHUTDOWN_IN_PROGRESS
Sistem dimatikan; fungsi ini tidak dapat dipanggil.

Keterangan

Jika penelepon tidak memiliki hak akses SERVICE_QUERY_STATUS ke layanan, layanan diam-diam dihilangkan dari daftar layanan yang dikembalikan ke klien.

Catatan

Header winsvc.h mendefinisikan EnumServicesStatusEx sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header winsvc.h (sertakan Windows.h)
Pustaka Advapi32.lib
DLL Advapi32.dll

Lihat juga

ENUM_SERVICE_STATUS_PROCESS

Fungsi Layanan

Penginstalan, Penghapusan, dan Enumerasi Layanan