|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Vova Golubkov 2:5020/440 08 Nov 2000 18:24:00 To : news.co.ru Subject : Win32::Service -------------------------------------------------------------------------------- 08 Nov 00 12:26, news.co.ru wrote to All: nr> Привет. nr> Hе подскажите как использовать GetStatus в библиотеке Win32::Service, nr> дока ссылается на Win32 SDK, которого я не имею. Hепонятно вот nr> что: GetStatus(hostname, servicename, status), где статус - must be a nr> hash reference that will be populated with entries corresponding to nr> the SERVICE_STATUS structure of the Win32 API. что же такое статус? не nr> кинет ли кто примерчик? Комментариев нету, но все довльно прозрачно. Описание структуры SERVICE_STATUS лежит на http://msdn.microsoft.com/library/psdk/winbase/services_9s36.htm ===== use strict; use Win32::Service; my $host = ""; #localhost; my $ServiceName="eventlog"; my %SERVICE_TYPE = (0x1 => "SERVICE_KERNEL_DRIVER", 0x2 => "SERVICE_FILE_SYSTEM_DRIVER", 0x10 => "SERVICE_WIN32_OWN_PROCESS", 0x20 => "SERVICE_WIN32_SHARE_PROCESS", 0x100 => "SERVICE_INTERACTIVE_PROCESS" ); my %CURRENT_STATE = ( 0x1 => "SERVICE_STOPPED", 0x2 => "SERVICE_START_PENDING", 0x3 => "SERVICE_STOP_PENDING", 0x4 => "SERVICE_RUNNING", 0x5 => "SERVICE_CONTINUE_PENDING", 0x6 => "SERVICE_PAUSE_PENDING", 0x7 => "SERVICE_PAUSED" ); my %CONTROLS_ACCEPTED = ( 0x1 => "SERVICE_ACCEPT_STOP", 0x2 => "SERVICE_ACCEPT_PAUSE_CONTINUE", 0x4 => "SERVICE_ACCEPT_SHUTDOWN", 0x8 => "SERVICE_ACCEPT_PARAMCHANGE", 0x10 => "SERVICE_ACCEPT_NETBINDCHANGE" ); my $ERROR_SERVICE_SPECIFIC_ERROR = 1066; my %status; my $and; my $ccode = Win32::Service::GetStatus($host,$ServiceName,\%status); if ($ccode) { print "Service name:\t$ServiceName\n"; print "Service type [$status{ServiceType}]:\t"; for (keys %SERVICE_TYPE) { $and = $_ & $status{ServiceType}; if ($and) { print "$SERVICE_TYPE{$and} "; } } print "\n"; print "Current state [$status{CurrentState}]:\t$CURRENT_STATE{$status{CurrentState}}\n"; print "Controls Accepted [$status{ControlsAccepted}]:\t"; for (keys %CONTROLS_ACCEPTED) { $and = $_ & $status{ControlsAccepted}; if ($and) { print "$CONTROLS_ACCEPTED{$and} "; } } print "\n"; print "Win32ExitCode:\t$status{Win32ExitCode}"; if ($status{Win32ExitCode} == $ERROR_SERVICE_SPECIFIC_ERROR) { print " (see service specific exit code)\n"; print "ServiceSpecificExitCode:\t$status{ServiceSpecificExitCode}"; } print "\n"; print "CheckPoint:\t$status{CheckPoint}\n"; print "WaitHint:\t$status{WaitHint}\n"; } else { print "Cannot obtain information on service \"$ServiceName\"\n"; } Vova --- * Origin: надо жить эпохою (2:5020/440) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/22423a098ddb.html, оценка из 5, голосов 10
|