better kext service handling

This commit is contained in:
Vladimir
2022-11-07 16:09:41 +01:00
parent 5e8569dfdd
commit 101bf16727
2 changed files with 68 additions and 22 deletions

View File

@@ -46,28 +46,27 @@ func Start() error {
kextLock.Lock()
defer kextLock.Unlock()
filename := `\\.\` + driverName
// check if driver is already installed
var err error
kextHandle, err = openDriver(filename)
if err == nil {
return nil // device was already initialized
}
// initialize and start driver service
service, err = createKextService(driverName, driverPath)
service, err := createKextService(driverName, driverPath)
if err != nil {
log.Warningf("winkext: failed to create service: %s", err)
return fmt.Errorf("failed to create service: %w", err)
}
err = service.start()
running, err := service.isRunning()
if err == nil && !running {
err = service.start(true)
if err != nil {
return fmt.Errorf("failed to start service: %w", err)
if err != nil {
log.Warningf("winkext: failed to start service: %s", err)
return fmt.Errorf("failed to start service: %w", err)
}
} else if err != nil {
return fmt.Errorf("service not initialized: %w", err)
}
// open the driver
// Open the driver
filename := `\\.\` + driverName
kextHandle, err = openDriver(filename)
// driver was not installed
@@ -88,7 +87,7 @@ func Stop() error {
log.Warningf("winkext: failed to close the handle: %s", err)
}
err = service.stop()
err = service.stop(true)
if err != nil {
log.Warningf("winkext: failed to stop service: %s", err)
}