mirror of
https://github.com/fumiama/gozel.git
synced 2026-06-23 03:50:30 +08:00
init: project framework
This commit is contained in:
37
ze_core_driver_windows.go
Normal file
37
ze_core_driver_windows.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package gozel
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
var procZeInitDrivers *syscall.Proc
|
||||
|
||||
// InitDrivers calls zeInitDrivers from ze_loader.dll.
|
||||
// On success pCount contains the number of drivers and phDrivers (if non-nil)
|
||||
// is filled with driver handles.
|
||||
func InitDrivers(desc *ZeInitDriverTypeDesc) ([]ZeDriverHandle, error) {
|
||||
var count uint32
|
||||
r, _, _ := procZeInitDrivers.Call(
|
||||
uintptr(unsafe.Pointer(&count)),
|
||||
0,
|
||||
uintptr(unsafe.Pointer(desc)),
|
||||
)
|
||||
if ZeResult(r) != ZeResultSuccess {
|
||||
return nil, ZeResult(r)
|
||||
}
|
||||
if count == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
handles := make([]ZeDriverHandle, count)
|
||||
r, _, _ = procZeInitDrivers.Call(
|
||||
uintptr(unsafe.Pointer(&count)),
|
||||
uintptr(unsafe.Pointer(&handles[0])),
|
||||
uintptr(unsafe.Pointer(desc)),
|
||||
)
|
||||
if ZeResult(r) != ZeResultSuccess {
|
||||
return nil, ZeResult(r)
|
||||
}
|
||||
return handles, nil
|
||||
}
|
||||
Reference in New Issue
Block a user