vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: Windows/System22.03.05
CloseServiceHandle-Funktion

Diese Funktion schließt das Handle einer zuvor geöffneten Servicedatenbank oder eines Serviceobjektes und gibt die Ressourcen wieder frei.

Betriebssystem:  WinNT 3.1, WinNT 3.1, Win2000Views:  3.321 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    Deklaration:

    Declare Function CloseServiceHandle Lib "advapi32.dll" ( _
      ByVal hSCObject As Long) As Long

    Beschreibung:
    Diese Funktion schließt das Handle einer zuvor geöffneten Servicedatenbank oder eines Serviceobjektes und gibt die Ressourcen wieder frei.

    Parameter:
    hSCObjectErwartet das Handle eines geöffneten Serviceobjektes oder einer geöffnetenServicedatenbank die mittels der OpenSCManager-Funktion geöffnet wurde.

    Rückgabewert:
    Ist die Funktion erfolgreich, so wird ein Wert "0" zurückgegeben, andernfallsein Wert "ungleich 0". Für erweiterte Fehlerinformationen können Sie die GetLastError-Funktion aufrufen.

    Beispiel:

    Private Declare Function OpenSCManager Lib "advapi32.dll" _
      Alias "OpenSCManagerA" ( _
      ByVal lpMachineName As String, _
      ByVal lpDatabaseName As String, _
      ByVal dwDesiredAccess As Long) As Long
    Private Declare Function EnumServicesStatus Lib "advapi32.dll" _
      Alias "EnumServicesStatusA" ( _
      ByVal hSCManager As Long, _
      ByVal dwServiceType As Long, _
      ByVal dwServiceState As Long, _
      lpServices As Any, _
      ByVal cbBufSize As Long, _
      pcbBytesNeeded As Long, _
      lpServicesReturned As Long, _
      lpResumeHandle As Long) As Long
    Private Declare Function CloseServiceHandle Lib "advapi32.dll" ( _
      ByVal hSCObject As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" _
      Alias "RtlMoveMemory"  ( _
      Destination As Any, _
      Source As Any, _
      ByVal Length As Long)
    Private Declare Function GetLastError Lib "kernel32" () As Long
    Private Declare Function lstrcpy Lib "kernel32" _
      Alias "lstrcpyA" ( _
      lpString1  As Any, _
      lpString2 As Any) As Long
     
    Private Type SERVICE_STATUS
      dwServiceType As Long
      dwCurrentState As Long
      dwControlsAccepted As Long
      dwWin32ExitCode As Long
      dwServiceSpecificExitCode As Long
      dwCheckPoint As Long
      dwWaitHint As Long
    End Type
     
    Private Type ENUM_SERVICE_STATUS
      lpServiceName As Long
      lpDisplayName As Long
      ServiceStatus As SERVICE_STATUS
    End Type
     
    ' OpenSCManager lpDatabaseName-Konstante
    Private Const SERVICES_ACTIVE_DATABASE = "ServicesActive" ' Standarddatenbank
     
    ' OpenSCManager dwDesiredAccess-Konstanten
    Private Const SC_MANAGER_CONNECT = &H1 ' (Autorisierte Benutzer, Lokales  
    ' System, Administrator) Erlaubt das Verbinden mit der Datenbank
    Private Const SC_MANAGER_ENUMERATE_SERVICE = &H4 ' (Autorisierte Benutzer,  
    ' Lokales System, Administrator) Erlaubt das Enumerieren der Datenbank
    Private Const SC_MANAGER_QUERY_LOCK_STATUS = &H10 ' (Autorisierte Benutzer,  
    ' Lokales System, Administrator) Erlaubt die Abfrage von gelockten Datensätzen 
    Private Const SC_MANAGER_MODIFY_BOOT_CONFIG = &H20 ' SC_MANAGER_ALL_ACCESS Konstante 
    Private Const STANDARD_RIGHTS_REQUIRED = &HF0000 ' SC_MANAGER_ALL_ACCESS Konstante 
    Private Const SC_MANAGER_CREATE_SERVICE = &H2 ' SC_MANAGER_ALL_ACCESS Konstante 
    Private Const SC_MANAGER_LOCK = &H8 ' SC_MANAGER_ALL_ACCESS Konstante
    Private Const SC_MANAGER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or  _
      SC_MANAGER_CONNECT Or SC_MANAGER_CREATE_SERVICE Or  _
      SC_MANAGER_ENUMERATE_SERVICE Or SC_MANAGER_LOCK Or  _
      SC_MANAGER_QUERY_LOCK_STATUS Or SC_MANAGER_MODIFY_BOOT_CONFIG)  _
      ' (Administrator) Erlaubt alle Zugriffe auf die Datenbank
    Private Const READ_CONTROL = &H20000 ' STANDARD_RIGHTS_READ Konstante
    Private Const STANDARD_RIGHTS_READ = (READ_CONTROL) ' Erlaubt Standard-Lesezugriffe 
     
    ' EnumServicesStatus dwServiceType-Konstanten
    Private Const SERVICE_KERNEL_DRIVER = &H1 ' SERVICE_DRIVER Konstante
    Private Const SERVICE_FILE_SYSTEM_DRIVER = &H2 ' SERVICE_DRIVER Konstante
    Private Const SERVICE_RECOGNIZER_DRIVER = &H8 ' SERVICE_DRIVER Konstante
    Private Const SERVICE_DRIVER = (SERVICE_KERNEL_DRIVER Or  _
    SERVICE_FILE_SYSTEM_DRIVER Or SERVICE_RECOGNIZER_DRIVER) ' Es sollen Treiber  _
    ' Services enumeriert werden
    Private Const SERVICE_WIN32_OWN_PROCESS = &H10 ' SERVICE_WIN32 Konstante
    Private Const SERVICE_WIN32_SHARE_PROCESS = &H20 ' SERVICE_WIN32 Konstante
    Private Const SERVICE_WIN32 = (SERVICE_WIN32_OWN_PROCESS Or  _
      SERVICE_WIN32_SHARE_PROCESS) ' Es sollen Anwendungs Services enumeriert 'werden 
     
    ' EnumServicesStatus dwServiceState-Konstanten
    Private Const SERVICE_ACTIVE = &H1 ' Der Service muss aktiv sein
    Private Const SERVICE_INACTIVE = &H2 ' Der Service muss Inaktiv sein
    Private Const SERVICE_STATE_ALL = (SERVICE_ACTIVE Or SERVICE_INACTIVE) 
    ' Der Service kann Aktiv oder Inaktiv sein
     
    ' eine der Standard-Fehlerkonstanten
    Private Const ERROR_MORE_DATA = 234 ' Es sind noch Daten verfügbar
    ' Alle registrierten Services ermitteln
    Private Sub Form_Load()
      Dim hSManager As Long, Retval As Long, i As Integer
      Dim BufferSize As Long, CountServices As Long, hNextService As Long
      Dim Buffer() As ENUM_SERVICE_STATUS, TmpStr As String, TmpStr2 As String 
     
      ' Datenbank mit registrierten Services öffnen
      hSManager = OpenSCManager(vbNullString, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE) 
     
      ' Benötigte Puffergröße ermitteln
      Retval = EnumServicesStatus(hSManager, SERVICE_WIN32,  _
      SERVICE_STATE_ALL, ByVal 0&, 0&, BufferSize, 0&, 0&)
      If GetLastError << 234 And Retval = 0 Then
        MsgBox "Die benötigte Puffergröße konnte nicht ermittelt werden."
        Exit Sub
      End If
     
      ' Puffer einrichten und Daten ermitteln
      ReDim Buffer(BufferSize / Len(Buffer(0)))
      Retval = EnumServicesStatus(hSManager, SERVICE_WIN32,  _
      SERVICE_STATE_ALL, Buffer(0), Len(Buffer(0)) * (UBound(Buffer) + 1),  _
      BufferSize, CountServices, hNextService)
     
      ' Servicenamen ausgeben
      For i = 0 To CountServices - 1
        TmpStr = String(257, vbNullChar)
        Call lstrcpy(ByVal TmpStr, ByVal Buffer(i).lpServiceName)
        TmpStr = Trim$(Left$(TmpStr, InStr(1, TmpStr, vbNullChar) - 1))
     
        TmpStr2 = String(257, vbNullChar)
        Call lstrcpy(ByVal TmpStr2, ByVal Buffer(i).lpDisplayName)
        TmpStr2 = Trim$(Left$(TmpStr2, InStr(1, TmpStr2, vbNullChar) - 1))
     
        Debug.Print "Service: " & TmpStr & " (" & TmpStr2 & ")"
      Next i
     
      ' Servicedatenbank schließen
      Call CloseServiceHandle(hSManager)
    End Sub

    Diese Seite wurde bereits 3.321 mal aufgerufen.

    nach obenzurück
     
       

    Druckansicht Druckansicht Copyright ©2000-2015 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.

    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel