Fungsi EnumDependentServicesA (winsvc.h)

Mengambil nama dan status setiap layanan yang bergantung pada layanan yang ditentukan; artinya, layanan yang ditentukan harus berjalan sebelum layanan dependen dapat berjalan.

Sintaks

BOOL EnumDependentServicesA(
  [in]            SC_HANDLE              hService,
  [in]            DWORD                  dwServiceState,
  [out, optional] LPENUM_SERVICE_STATUSA lpServices,
  [in]            DWORD                  cbBufSize,
  [out]           LPDWORD                pcbBytesNeeded,
  [out]           LPDWORD                lpServicesReturned
);

Parameter

[in] hService

Handel ke layanan. Handel ini dikembalikan oleh fungsi OpenService atau CreateService , dan harus memiliki hak akses SERVICE_ENUMERATE_DEPENDENTS . Untuk informasi selengkapnya, lihat Keamanan Layanan dan Hak Akses.

[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 berikut: SERVICE_ACTIVE dan SERVICE_INACTIVE.

[out, optional] lpServices

Penunjuk ke array struktur ENUM_SERVICE_STATUS yang menerima informasi nama dan status layanan untuk setiap layanan dependen dalam database. Buffer harus cukup besar untuk menahan struktur, ditambah string yang ditunjukkan anggotanya.

Urutan layanan dalam array ini adalah kebalikan dari urutan awal layanan. Dengan kata lain, layanan pertama dalam array adalah layanan yang akan dimulai terakhir, dan layanan terakhir dalam array adalah layanan yang akan dimulai terlebih dahulu.

Ukuran maksimum array ini adalah 64.000 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.

[in] cbBufSize

Ukuran buffer yang diacu oleh parameter lpServices , dalam byte.

[out] pcbBytesNeeded

Penunjuk ke variabel yang menerima jumlah byte yang diperlukan untuk menyimpan array entri layanan. Variabel hanya menerima nilai ini jika buffer yang ditunjukkan oleh lpServices terlalu kecil, ditunjukkan oleh kegagalan fungsi dan kesalahan ERROR_MORE_DATA ; jika tidak, isi pcbBytesNeeded tidak terdefinisi.

[out] lpServicesReturned

Penunjuk ke variabel yang menerima jumlah entri layanan yang dikembalikan.

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.

Kode kesalahan berikut dapat diatur oleh manajer kontrol layanan. Kode kesalahan lainnya dapat diatur oleh fungsi registri yang dipanggil oleh manajer kontrol layanan.

Menampilkan kode Deskripsi
ERROR_ACCESS_DENIED
Handel tidak memiliki hak akses SERVICE_ENUMERATE_DEPENDENTS .
ERROR_INVALID_HANDLE
Handel yang ditentukan tidak valid.
ERROR_INVALID_PARAMETER
Parameter yang ditentukan tidak valid.
ERROR_MORE_DATA
Buffer yang diacu oleh lpServices tidak cukup besar. Fungsi ini mengatur variabel yang diacu oleh lpServicesReturned ke jumlah entri layanan aktual yang disimpan ke dalam buffer. Fungsi mengatur variabel yang ditunjukkan oleh pcbBytesNeeded ke jumlah byte yang diperlukan untuk menyimpan semua entri layanan.

Keterangan

Entri layanan yang dikembalikan diurutkan dalam urutan terbalik dari urutan mulai, dengan urutan grup yang dipertahankan. Jika Anda perlu menghentikan layanan dependen, Anda dapat menggunakan urutan entri yang ditulis ke buffer lpServices untuk menghentikan layanan dependen dalam urutan yang tepat.

Contoh

Misalnya, lihat Menghentikan Layanan.

Catatan

Header winsvc.h mendefinisikan EnumDependentServices 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

CreateService

ENUM_SERVICE_STATUS

EnumServicesStatusEx

OpenService

Fungsi Layanan

Penginstalan, Penghapusan, dan Enumerasi Layanan