ServiceType Enumeration

Definition

Stellt den Diensttyp dar.

Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.

public enum class ServiceType
[System.Flags]
public enum ServiceType
[<System.Flags>]
type ServiceType = 
Public Enum ServiceType
Vererbung
ServiceType
Attribute

Felder

Name Wert Beschreibung
KernelDriver 1

Ein Kernelgerätetreiber wie eine Festplatte oder ein anderer Hardwaregerätetreiber auf niedriger Ebene.

FileSystemDriver 2

Ein Dateisystemtreiber, der auch ein Kernelgerätetreiber ist.

Adapter 4

Ein Dienst für ein Hardwaregerät, das einen eigenen Treiber erfordert.

RecognizerDriver 8

Ein Dateisystemtreiber, der beim Start verwendet wird, um die Dateisysteme zu ermitteln, die auf dem System vorhanden sind.

Win32OwnProcess 16

Ein Win32-Programm, das vom Service Controller gestartet werden kann und dem Dienststeuerungsprotokoll gehorcht. Diese Art von Win32-Dienst wird in einem Prozess selbst ausgeführt.

Win32ShareProcess 32

Ein Win32-Dienst, der einen Prozess für andere Win32-Dienste freigeben kann.

InteractiveProcess 256

Ein Dienst, der mit dem Desktop kommunizieren kann.

Beispiele

Im folgenden Beispiel wird die ServiceController Klasse verwendet, um die Gerätetreiberdienste auf dem lokalen Computer anzuzeigen.

array<ServiceController^>^scDevices = ServiceController::GetDevices();
if ( scDevices->Length )
{
   int numAdapter = 0,numFileSystem = 0,numKernel = 0,numRecognizer = 0;

   // Display the list of device driver services.
   Console::WriteLine(  "Device driver services on the local computer:" );

   for each (ServiceController^ scTemp in scDevices)
   {
      // Display the status and the service name, for example,
      //   [Running] PCI Bus Driver
      //             Type = KernelDriver
      Console::WriteLine(  " [{0}] {1}", scTemp->Status, scTemp->DisplayName );
      Console::WriteLine(  "           Type = {0}", scTemp->ServiceType );

      // Update counters using the service type bit flags.
      if ( (scTemp->ServiceType & ServiceType::Adapter) != (ServiceType)0 )
      {
         numAdapter++;
      }
      if ( (scTemp->ServiceType & ServiceType::FileSystemDriver) != (ServiceType)0 )
      {
         numFileSystem++;
      }
      if ( (scTemp->ServiceType & ServiceType::KernelDriver) != (ServiceType)0 )
      {
         numKernel++;
      }
      if ( (scTemp->ServiceType & ServiceType::RecognizerDriver) != (ServiceType)0 )
      {
         numRecognizer++;
      }
   }
   Console::WriteLine();
   Console::WriteLine(  "Total of {0} device driver services", scDevices->Length.ToString() );
   Console::WriteLine(  "  {0} are adapter drivers", numAdapter.ToString() );
   Console::WriteLine(  "  {0} are file system drivers", numFileSystem.ToString() );
   Console::WriteLine(  "  {0} are kernel drivers", numKernel.ToString() );
   Console::WriteLine(  "  {0} are file system recognizer drivers", numRecognizer.ToString() );
ServiceController[] scDevices;
scDevices = ServiceController.GetDevices();

int numAdapter = 0,
    numFileSystem = 0,
    numKernel = 0,
    numRecognizer = 0;

// Display the list of device driver services.
Console.WriteLine("Device driver services on the local computer:");

foreach (ServiceController scTemp in scDevices)
{
   // Display the status and the service name, for example,
   //   [Running] PCI Bus Driver
   //             Type = KernelDriver

   Console.WriteLine(" [{0}] {1}",
                     scTemp.Status, scTemp.DisplayName);
   Console.WriteLine("           Type = {0}", scTemp.ServiceType);

   // Update counters using the service type bit flags.
   if ((scTemp.ServiceType & ServiceType.Adapter) != 0)
   {
      numAdapter++;
   }
   if ((scTemp.ServiceType & ServiceType.FileSystemDriver) != 0)
   {
      numFileSystem++;
   }
   if ((scTemp.ServiceType & ServiceType.KernelDriver) != 0)
   {
      numKernel++;
   }
   if ((scTemp.ServiceType & ServiceType.RecognizerDriver) != 0)
   {
      numRecognizer++;
   }
}

Console.WriteLine();
Console.WriteLine("Total of {0} device driver services", scDevices.Length);
Console.WriteLine("  {0} are adapter drivers", numAdapter);
Console.WriteLine("  {0} are file system drivers", numFileSystem);
Console.WriteLine("  {0} are kernel drivers", numKernel);
Console.WriteLine("  {0} are file system recognizer drivers", numRecognizer);

Dim scDevices() As ServiceController
scDevices = ServiceController.GetDevices()

Dim numAdapter As Integer
Dim numFileSystem As Integer
Dim numKernel As Integer
Dim numRecognizer As Integer

' Display the list of device driver services.
Console.WriteLine("Device driver services on the local computer:")

Dim scTemp As ServiceController
For Each scTemp In  scDevices
   ' Display the status and the service name, for example,
   '   [Running] PCI Bus Driver
   '             Type = KernelDriver

   Console.WriteLine(" [{0}] {1}", scTemp.Status, scTemp.DisplayName)
   Console.WriteLine("           Type = {0}", scTemp.ServiceType)

   ' Update counters using the service type bit flags.
   If (scTemp.ServiceType And ServiceType.Adapter) <> 0 Then
      numAdapter = numAdapter + 1
   End If
   If (scTemp.ServiceType And ServiceType.FileSystemDriver) <> 0 Then
      numFileSystem = numFileSystem + 1
   End If
   If (scTemp.ServiceType And ServiceType.KernelDriver) <> 0 Then
      numKernel = numKernel + 1
   End If
   If (scTemp.ServiceType And ServiceType.RecognizerDriver) <> 0 Then
      numRecognizer = numRecognizer + 1
   End If

Next scTemp

Console.WriteLine()
Console.WriteLine("Total of {0} device driver services", scDevices.Length)
Console.WriteLine("  {0} are adapter drivers", numAdapter)
Console.WriteLine("  {0} are file system drivers", numFileSystem)
Console.WriteLine("  {0} are kernel drivers", numKernel)
Console.WriteLine("  {0} are file system recognizer drivers", numRecognizer)

Hinweise

Der Diensttyp gibt an, wie der Dienst vom System verwendet wird. Die ServiceController Befehle werden an den Dienst übergeben, um einen Wert für den Diensttyp zu speichern.

Der Wert einer ServiceType-Instanz stellt eine Reihe von Flags dar, die mit dem bitweisen OR-Operator kombiniert werden.

Die Erstellung interaktiver Dienste wird nicht unterstützt. Um dies zu umgehen, können Sie einen nicht interaktiven Dienst und eine separate Steuerelement-GUI-Anwendung erstellen, die mit dem Dienst über Sockets oder Remoting kommuniziert.

Gilt für:

Weitere Informationen