ServiceType Enumeration
Represents the type of the service.
This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.
[Visual Basic] <Flags> <Serializable> Public Enum ServiceType [C#] [Flags] [Serializable] public enum ServiceType [C++] [Flags] [Serializable] __value public enum ServiceType [JScript] public Flags Serializable enum ServiceType
Remarks
The service type indicates how the service is used by the system. The ServiceController that passes commands to the service stores a value for the service type.
The value of a ServiceType instance represents a set of flags combined using the bitwise OR operator.
The creation of interactive services is not supported. To workaround this, you can create a non-interactive service and a separate control GUI application that communicates with the service using sockets or remoting. For code samples on remoting, see Remoting Examples.
Members
| Member name | Description | Value |
|---|---|---|
| Adapter | A service for a hardware device that requires its own driver. | 4 |
| FileSystemDriver | A file system driver, which is also a Kernel device driver. | 2 |
| InteractiveProcess | A service that can communicate with the desktop. | 256 |
| KernelDriver | A Kernel device driver such as a hard disk or other low-level hardware device driver. | 1 |
| RecognizerDriver | A file system driver used during startup to determine the file systems present on the system. | 8 |
| Win32OwnProcess | A Win32 program that can be started by the Service Controller and that obeys the service control protocol. This type of Win32 service runs in a process by itself. | 16 |
| Win32ShareProcess | A Win32 service that can share a process with other Win32 services. | 32 |
Example
[Visual Basic, C#, C++] The following example uses the ServiceController class to display the device driver services on the local computer.
[Visual Basic] 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) [C#] 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); [C++] 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 (int i=0; i < scDevices->Length; i++) { ServiceController *scTemp = scDevices[i]; // Display the status and the service name, for example, // [Running] PCI Bus Driver // Type = KernelDriver if (scTemp) { Console::WriteLine(" [{0}] {1}", __box(scTemp->Status), scTemp->DisplayName); Console::WriteLine(" Type = {0}", __box(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.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());
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System.ServiceProcess
Platforms: Windows NT Server 4.0, Windows NT Workstation 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Assembly: System.Serviceprocess (in System.Serviceprocess.dll)
See Also
System.ServiceProcess Namespace | ServiceController.ServiceType | ServiceController