|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Querying a Service's Configuration
In the following example, a service configuration program uses the OpenService function to get a handle with SERVICE_QUERY_CONFIG access to an installed service object. Then the program uses the service object handle in the QueryServiceConfig function to retrieve the current configuration of the service.
VOID GetSampleServiceConfig() { LPQUERY_SERVICE_CONFIG lpqscBuf; DWORD dwBytesNeeded; // Open a handle to the service. schService = OpenService( schSCManager, // SCManager database TEXT("Sample_Srv"), // name of service SERVICE_QUERY_CONFIG); // need QUERY access if (schService == NULL) MyErrorExit("OpenService"); // Allocate a buffer for the information configuration.
lpqscBuf = (LPQUERY_SERVICE_CONFIG) LocalAlloc( LPTR, 4096); if (lpqscBuf == NULL) MyErrorExit("LocalAlloc"); // Get and print the information configuration. if (! QueryServiceConfig( schService, lpqscBuf, 4096, &dwBytesNeeded) ) { MyErrorExit("QueryServiceConfig"); } printf("\nSample_Srv configuration: \n"); printf(" Type: 0x%x\n", lpqscBuf->dwServiceType);
printf(" Start Type: 0x%x\n", lpqscBuf->dwStartType); printf(" Err Control: 0x%x\n", lpqscBuf->dwErrorControl); printf(" Binary path: %s\n", lpqscBuf->lpBinaryPathName);
if (lpqscBuf->lpLoadOrderGroup != NULL) printf(" Load order group: %s\n", lpqscBuf->lpLoadOrderGroup); if (lpqscBuf->dwTagId != 0) printf(" Tag ID: %d\n", lpqscBuf->dwTagId); if (lpqscBuf->lpDependencies != NULL) printf(" Dependencies: %s\n", lpqscBuf->lpDependencies);
if (lpqscBuf->lpServiceStartName != NULL) printf(" Start Name: %s\n", lpqscBuf->lpServiceStartName); LocalFree(lpqscBuf); }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Спрашивающая Конфигурация Услуги
В следующем примере, программа конфигурации услуги использует функцию OpenService, чтобы получать ручку с доступом SERVICE_QUERY_CONFIG ко включенному объекту услуги. Затем программа использует объектную ручку услуги в функции QueryServiceConfig, чтобы извлекать текущую конфигурацию услуги.
ПУСТОТА GetSampleServiceConfig() { LPQUERY_SERVICE_CONFIG lpqscBuf; DWORD dwBytesNeeded; // Откройте ручку в услугу. schService = OpenService( schSCManager, // База данных ТЕКСТА SCManager("Sample_Srv"), // имя услуги SERVICE_QUERY_CONFIG); // нужно доступ ЗАПРОСА если (schService == НЕДЕЙСТВИТЕЛЬНЫЙ) MyErrorExit("OpenService"); // Распределите буфер для информационной конфигурации.
lpqscBuf = (LPQUERY_SERVICE_CONFIG) LocalAlloc( LPTR, 4096); если (lpqscBuf == НЕДЕЙСТВИТЕЛЬНЫЙ) MyErrorExit("LocalAlloc"); // Получите и печатайте информационную конфигурацию. если (! QueryServiceConfig( schService, lpqscBuf, 4096, &dwBytesNeeded) ) { MyErrorExit("QueryServiceConfig"); } printf(конфигурация "\nSample_Srv: \n"); printf(" Тип: 0x%x\n", lpqscBuf->dwServiceType);
printf(" Стартовый Тип: 0x%x\n", lpqscBuf->dwStartType); printf(" Управление Err: 0x%x\n", lpqscBuf->dwErrorControl); printf(" путь Двоичного кода: %s\n", lpqscBuf->lpBinaryPathName);
если (lpqscBuf->lpLoadOrderGroup != НЕДЕЙСТВИТЕЛЬНЫЙ) printf(" группа порядка Загрузки: %s\n", lpqscBuf->lpLoadOrderGroup); если (lpqscBuf->dwTagId != 0) printf(" Этикетка ID: %d\n", lpqscBuf->dwTagId); если (lpqscBuf->lpDependencies != НЕДЕЙСТВИТЕЛЬНЫЙ) printf(" Зависимость: %s\n", lpqscBuf->lpDependencies);
если (lpqscBuf->lpServiceStartName != НЕДЕЙСТВИТЕЛЬНЫЙ) printf(" Стартовое Имя: %s\n", lpqscBuf->lpServiceStartName); LocalFree(lpqscBuf); }
|
|
|
|
| |