Bagikan melalui


Fungsi QueryServiceStatusEx (winsvc.h)

Mengambil status layanan yang ditentukan saat ini berdasarkan tingkat informasi yang ditentukan.

Sintaks

BOOL QueryServiceStatusEx(
  [in]            SC_HANDLE      hService,
  [in]            SC_STATUS_TYPE InfoLevel,
  [out, optional] LPBYTE         lpBuffer,
  [in]            DWORD          cbBufSize,
  [out]           LPDWORD        pcbBytesNeeded
);

Parameter

[in] hService

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

[in] InfoLevel

Atribut layanan yang akan dikembalikan. Gunakan SC_STATUS_PROCESS_INFO untuk mengambil informasi status layanan. Parameter lpBuffer adalah penunjuk ke struktur SERVICE_STATUS_PROCESS .

Saat ini, tidak ada tingkat informasi lain yang ditentukan.

[out, optional] lpBuffer

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

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

[in] cbBufSize

Ukuran buffer yang diacu oleh parameter lpBuffer , dalam byte.

[out] pcbBytesNeeded

Penunjuk ke variabel yang menerima jumlah byte yang diperlukan untuk menyimpan semua informasi status, jika fungsi gagal dengan ERROR_INSUFFICIENT_BUFFER.

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_INVALID_HANDLE
Handel tidak valid.
ERROR_ACCESS_DENIED
Handel tidak memiliki hak akses SERVICE_QUERY_STATUS.
ERROR_INSUFFICIENT_BUFFER
Buffer terlalu kecil untuk struktur SERVICE_STATUS_PROCESS . Tidak ada yang ditulis ke struktur.
ERROR_INVALID_PARAMETER
Anggota cbSizedari SERVICE_STATUS_PROCESS tidak valid.
ERROR_INVALID_LEVEL
Parameter InfoLevel berisi nilai yang tidak didukung.
ERROR_SHUTDOWN_IN_PROGRESS
Sistem dimatikan; fungsi ini tidak dapat dipanggil.

Keterangan

Fungsi QueryServiceStatusEx mengembalikan informasi status layanan terbaru yang dilaporkan ke manajer kontrol layanan. Jika layanan baru saja mengubah statusnya, layanan mungkin belum memperbarui manajer kontrol layanan.

Pengidentifikasi proses yang dikembalikan dalam struktur SERVICE_STATUS_PROCESS valid asalkan status layanan adalah salah satu dari SERVICE_RUNNING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED, atau SERVICE_CONTINUE_PENDING. Namun, jika layanan dalam status SERVICE_START_PENDING atau SERVICE_STOP_PENDING, pengidentifikasi proses mungkin tidak valid, dan jika layanan dalam status SERVICE_STOPPED, layanan tidak pernah valid.

Contoh

Misalnya, lihat Memulai Layanan atau Menghentikan Layanan.

Persyaratan

Persyaratan Nilai
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

SERVICE_STATUS_PROCESS

Fungsi Layanan

Startup Layanan