ServiceType Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет тип службы.
Это перечисление поддерживает побитовую комбинацию значений его членов.
public enum class ServiceType
[System.Flags]
public enum ServiceType
[<System.Flags>]
type ServiceType =
Public Enum ServiceType
- Наследование
- Атрибуты
Поля
Adapter | 4 | Служба для аппаратного устройства, которому требуется собственный драйвер. |
FileSystemDriver | 2 | Драйвер файловой системы, который также является драйвером устройства ядра. |
InteractiveProcess | 256 | Служба, которая может взаимодействовать с рабочим столом. |
KernelDriver | 1 | Драйвер устройства ядра, например драйвер жесткого диска или другого аппаратного устройства нижнего уровня. |
RecognizerDriver | 8 | Драйвер файловой системы, используемый при запуске системы для определения файловых систем, имеющихся в системе. |
Win32OwnProcess | 16 | Программа Win32, которую может запустить контроллер домена и которая подчиняется протоколу управления службами. Этот тип службы Win32 самостоятельно выполняется в процессе. |
Win32ShareProcess | 32 | Служба Win32, которая может использовать процесс совместно с другими службами Win32. |
Примеры
В следующем примере класс используется ServiceController для отображения служб драйверов устройств на локальном компьютере.
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)
Комментарии
Тип службы указывает, как служба используется системой. Команда ServiceController , которая передается в службу, сохраняет значение для типа службы.
Значение экземпляра ServiceType представляет набор флагов, объединенных с помощью битового оператора OR.
Создание интерактивных служб не поддерживается. Чтобы обойти эту проблему, можно создать неинтерактивную службу и отдельное приложение графического пользовательского интерфейса элемента управления, которое взаимодействует со службой с помощью сокетов или удаленного взаимодействия.