To gain access to the ports, use the driver pbdriverio.
Code: Select all
DeclareModule PortIO
Interface PortIO
GetByte(Port.u)
SetByte(Port.u, Bute.a)
Status()
DriverID()
Free()
EndInterface
Enumeration
#Status_OK
#Status_ErrCopyDriver
#Status_ErrInstallDriver
#Status_ErrAccess
EndEnumeration
Declare New()
EndDeclareModule
Module PortIO
#IOCTL_READ_PORT_UCHAR = $200
#IOCTL_WRITE_PORT_UCHAR = $400
EnableExplicit
Structure PortParam
*vt ;pointer to virtual table as first entry
hDriver.i
ErrorCode.l
EndStructure
Define DriverPath.s = GetTemporaryDirectory()+"pbdriverio"
Define DriverName.s = "pbdriverio"
Define *DriverMem=0, DriverLen=0
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
Prototype pIsWow64Process(hProcess.i, *Wow64Process)
Procedure OSbits()
Protected Is64BitOS = 0 ; Returns 1 for 64bit, else 0.
Protected hDLL, IsWow64Process
Is64BitOS=0
hDll = LoadLibrary_("kernel32.dll")
If hDll
IsWow64Process.pIsWow64Process = GetProcAddress_(hDll,"IsWow64Process")
If IsWow64Process
IsWow64Process(GetCurrentProcess_(), @Is64BitOS)
EndIf
FreeLibrary_(hDll)
EndIf
ProcedureReturn Is64BitOS
EndProcedure
If OSbits() ; x64.
DriverPath+"_x64"
DriverName+"_x64"
*DriverMem = ?Driver_x64
DriverLen = ?Driver_x64_End - ?Driver_x64
Else
*DriverMem = ?Driver_x86
DriverLen = ?Driver_x86_End - ?Driver_x86
EndIf
DriverPath+".sys"
CompilerElse
DriverPath+"_x64.sys"
DriverName+"_x64"
*DriverMem = ?Driver_x64
DriverLen = ?Driver_x64_End - ?Driver_x64
CompilerEndIf
Procedure Driver_Start(Drivers_Name.s)
Protected hSCManager.i, hServ.i
Protected ErrorCode, Result
Result=#False
hSCManager = OpenSCManager_(#Null, #Null, #SC_MANAGER_ALL_ACCESS)
If hSCManager = 0
If GetLastError_() = #ERROR_ACCESS_DENIED
hSCManager = OpenSCManager_(#Null, #Null, #GENERIC_READ)
hServ = OpenService_(hSCManager, Drivers_Name, #GENERIC_EXECUTE)
If StartService_(hServ, 0, #Null)
Result=#True
EndIf
EndIf
Else
hServ = OpenService_(hSCManager, Drivers_Name, #GENERIC_EXECUTE)
If StartService_(hServ, 0, #Null)
Result=#True
Else
ErrorCode=GetLastError_()
If ErrorCode=1056
Result=#True
EndIf
EndIf
EndIf
If hServ : CloseServiceHandle_(hServ) : EndIf
If hSCManager : CloseServiceHandle_(hSCManager) : EndIf
ProcedureReturn Result
EndProcedure
Procedure Driver_UnInstall(Drivers_Name.s)
Protected hSCManager.i, hServ.i
Protected ServiceStatus.SERVICE_STATUS
hSCManager = OpenSCManager_(#Null, #Null, #SC_MANAGER_ALL_ACCESS)
hServ = OpenService_(hSCManager, Drivers_Name, #SERVICE_ALL_ACCESS)
If hServ<>#Null
ControlService_(hServ, #SERVICE_CONTROL_STOP, @ServiceStatus)
DeleteService_(hServ)
EndIf
If hServ : CloseServiceHandle_(hServ) : EndIf
If hSCManager : CloseServiceHandle_(hSCManager) : EndIf
EndProcedure
Procedure Driver_Install(Driver_Name.s, *this.PortParam)
Shared DriverPath, *DriverMem, DriverLen
Protected Result, FileID, File.s, Mgr
Protected ErrorCode, Ser, Count
Result=#False
Count=0 : FileID=0 : Mgr=0 : Ser=0
If FileSize(DriverPath) <> DriverLen
FileID=CreateFile(#PB_Any, DriverPath)
If FileID
WriteData(FileID, *DriverMem, DriverLen)
CloseFile(FileID)
ElseIf *this\ErrorCode = #Status_OK
*this\ErrorCode = #Status_ErrCopyDriver
EndIf
Else
FileID=2
EndIf
If FileID
M1:
Mgr = OpenSCManager_(#Null, #Null, #SC_MANAGER_ALL_ACCESS)
If Mgr
Ser = CreateService_(Mgr, Driver_Name, Driver_Name, #SERVICE_ALL_ACCESS,
#SERVICE_KERNEL_DRIVER, #SERVICE_DEMAND_START, #SERVICE_ERROR_NORMAL,
DriverPath, #Null, 0, 0, 0, 0)
ErrorCode=GetLastError_()
If Ser
Result=#True
ElseIf ErrorCode=1073
Result=#True
ElseIf ErrorCode=1072
If Count=0
If Ser : CloseServiceHandle_(Ser) : EndIf
If Mgr : CloseServiceHandle_(Mgr) : EndIf
Driver_UnInstall(Driver_Name)
Count+1
Goto M1
EndIf
EndIf
EndIf
EndIf
If Ser : CloseServiceHandle_(Ser) : EndIf
If Mgr : CloseServiceHandle_(Mgr) : EndIf
If Result=#False And *this\ErrorCode = #Status_OK
*this\ErrorCode = #Status_ErrInstallDriver
EndIf
ProcedureReturn Result
EndProcedure
Procedure OpenDriver(*this.PortParam, DriverName.s)
Protected Result, hDriver
Result=0
hDriver = CreateFile_("\\.\"+DriverName, #GENERIC_READ | #GENERIC_WRITE, 0, 0,
#OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0)
If hDriver=#INVALID_HANDLE_VALUE
If Driver_Install(DriverName, *this)
If Driver_Start(DriverName)
hDriver = CreateFile_("\\.\"+DriverName, #GENERIC_READ | #GENERIC_WRITE, 0, 0,
#OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0)
If hDriver <> #INVALID_HANDLE_VALUE
Result=hDriver
EndIf
EndIf
EndIf
Else
Result=hDriver
EndIf
If Result=0 And *this\ErrorCode = #Status_OK
*this\ErrorCode = #Status_ErrAccess
EndIf
ProcedureReturn Result
EndProcedure
Procedure.a GetByte(*this.PortParam, Port.u)
Protected Byte.a, BytesReturned
If *this\hDriver
DeviceIoControl_(*this\hDriver, #IOCTL_READ_PORT_UCHAR, @Port, 2, @Byte, 1, @BytesReturned, 0)
EndIf
ProcedureReturn Byte
EndProcedure
Procedure SetByte(*this.PortParam, Port.u, Byte.a)
Protected Buffer.l, BytesReturned
If *this\hDriver
Buffer = Port
PokeA(@Buffer+2, Byte)
DeviceIoControl_(*this\hDriver, #IOCTL_WRITE_PORT_UCHAR, @Buffer, 4, 0, 0, @BytesReturned, 0)
EndIf
EndProcedure
Procedure Status(*this.PortParam)
ProcedureReturn *this\ErrorCode
EndProcedure
Procedure DriverID(*this.PortParam)
ProcedureReturn *this\hDriver
EndProcedure
;destructor
Procedure Free(*this.PortParam)
If *this\hDriver
CloseHandle_(*this\hDriver)
*this\hDriver = 0
EndIf
ClearStructure(*this, PortParam)
FreeMemory(*this)
EndProcedure
;contructor
Procedure New()
Shared DriverName
Protected *this.PortParam
*this = AllocateMemory(SizeOf(PortParam))
If *this
InitializeStructure(*this, PortParam)
*this\vt = ?Funct
*this\ErrorCode = #Status_OK
*this\hDriver=OpenDriver(*this, DriverName)
ProcedureReturn *this
EndIf
EndProcedure
;- DataSection
;{
DataSection
Funct: ;create virtual table
Data.i @GetByte()
Data.i @SetByte()
Data.i @Status()
Data.i @DriverID()
Data.i @Free()
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
Driver_x86:
Data.b $4D,$5A,$00,$00,$01,$00,$00,$00,$02,$00,$00,$00,$FF,$FF,$00,$00,$40,$00,$00,$00
Data.b $00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$00,$B4,$4C,$CD,$21,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $40,$00,$00,$00,$50,$45,$00,$00,$4C,$01,$06,$00,$5F,$A1,$B0,$50,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$E0,$00,$0E,$01,$0B,$01,$02,$32,$00,$04,$00,$00,$40,$04,$00,$00
Data.b $00,$00,$00,$00,$40,$02,$00,$00,$40,$02,$00,$00,$40,$05,$00,$00,$00,$00,$01,$00
Data.b $20,$00,$00,$00,$20,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$00,$04,$00,$00,$00
Data.b $00,$00,$00,$00,$80,$0A,$00,$00,$40,$02,$00,$00,$F7,$C5,$00,$00,$01,$00,$00,$00
Data.b $00,$00,$10,$00,$00,$10,$00,$00,$00,$00,$10,$00,$00,$10,$00,$00,$00,$00,$00,$00
Data.b $10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$09,$00,$00,$28,$00,$00,$00
Data.b $C0,$05,$00,$00,$68,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$40,$0A,$00,$00,$28,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $84,$09,$00,$00,$1C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$2E,$63,$6F,$64,$65,$00,$00,$00
Data.b $B9,$02,$00,$00,$40,$02,$00,$00,$C0,$02,$00,$00,$40,$02,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$20,$00,$00,$68,$2E,$74,$65,$78,$74,$00,$00,$00
Data.b $3D,$00,$00,$00,$00,$05,$00,$00,$40,$00,$00,$00,$00,$05,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$20,$00,$00,$68,$2E,$64,$61,$74,$61,$00,$00,$00
Data.b $80,$00,$00,$00,$40,$05,$00,$00,$80,$00,$00,$00,$40,$05,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$C8,$2E,$72,$73,$72,$63,$00,$00,$00
Data.b $68,$03,$00,$00,$C0,$05,$00,$00,$80,$03,$00,$00,$C0,$05,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$48,$49,$4E,$49,$54,$00,$00,$00,$00
Data.b $EE,$00,$00,$00,$40,$09,$00,$00,$00,$01,$00,$00,$40,$09,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$20,$00,$00,$E2,$2E,$72,$65,$6C,$6F,$63,$00,$00
Data.b $28,$00,$00,$00,$40,$0A,$00,$00,$40,$00,$00,$00,$40,$0A,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$42,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$8D,$05,$97,$03
Data.b $01,$00,$50,$8F,$05,$BC,$05,$01,$00,$FF,$25,$BC,$05,$01,$00,$55,$8B,$6C,$24,$0C
Data.b $C7,$45,$1C,$00,$00,$00,$00,$8B,$6C,$24,$0C,$C7,$45,$18,$00,$00,$00,$00,$68,$00
Data.b $00,$00,$00,$FF,$74,$24,$10,$E8,$A1,$02,$00,$00,$31,$C0,$EB,$02,$31,$C0,$5D,$C2
Data.b $08,$00,$55,$53,$BA,$0A,$00,$00,$00,$83,$EC,$04,$C7,$04,$24,$00,$00,$00,$00,$4A
Data.b $75,$F3,$8B,$6C,$24,$38,$8B,$45,$60,$89,$44,$24,$08,$8B,$6C,$24,$08,$8B,$45,$08
Data.b $89,$44,$24,$0C,$8B,$6C,$24,$08,$8B,$45,$04,$89,$44,$24,$10,$8B,$6C,$24,$38,$FF
Data.b $75,$0C,$E8,$3D,$02,$00,$00,$89,$44,$24,$14,$8B,$5C,$24,$14,$81,$E3,$FF,$FF,$00
Data.b $00,$89,$5C,$24,$18,$8B,$5C,$24,$14,$C1,$FB,$10,$81,$E3,$FF,$00,$00,$00,$89,$D8
Data.b $88,$44,$24,$1C,$8B,$6C,$24,$08,$8B,$45,$0C,$89,$44,$24,$20,$C7,$04,$24,$00,$00
Data.b $00,$00,$FF,$74,$24,$20,$BB,$00,$02,$00,$00,$3B,$1C,$24,$75,$2D,$8B,$44,$24,$1C
Data.b $50,$E8,$84,$01,$00,$00,$88,$44,$24,$28,$0F,$BE,$44,$24,$28,$50,$8B,$6C,$24,$40
Data.b $8B,$45,$0C,$E8,$E8,$01,$00,$00,$8B,$6C,$24,$3C,$C7,$45,$1C,$01,$00,$00,$00,$EB
Data.b $3A,$BB,$00,$04,$00,$00,$3B,$1C,$24,$75,$1D,$0F,$B6,$44,$24,$20,$50,$8B,$44,$24
Data.b $20,$50,$E8,$68,$01,$00,$00,$8B,$6C,$24,$3C,$C7,$45,$1C,$00,$00,$00,$00,$EB,$13
Data.b $C7,$44,$24,$04,$01,$00,$00,$C0,$8B,$6C,$24,$3C,$C7,$45,$1C,$00,$00,$00,$00,$58
Data.b $FF,$34,$24,$8B,$6C,$24,$3C,$8F,$45,$18,$68,$00,$00,$00,$00,$FF,$74,$24,$3C,$E8
Data.b $91,$01,$00,$00,$8B,$04,$24,$EB,$02,$31,$C0,$83,$C4,$28,$5B,$5D,$C2,$08,$00,$55
Data.b $53,$BA,$31,$00,$00,$00,$83,$EC,$04,$C7,$04,$24,$00,$00,$00,$00,$4A,$75,$F3,$BD
Data.b $58,$05,$01,$00,$55,$8D,$84,$24,$B4,$00,$00,$00,$50,$E8,$61,$01,$00,$00,$BD,$80
Data.b $05,$01,$00,$55,$8D,$84,$24,$BC,$00,$00,$00,$50,$E8,$4E,$01,$00,$00,$8D,$04,$24
Data.b $50,$68,$00,$00,$00,$00,$68,$00,$00,$00,$00,$68,$22,$00,$00,$00,$8D,$84,$24,$C0
Data.b $00,$00,$00,$50,$68,$00,$00,$00,$00,$FF,$B4,$24,$E8,$00,$00,$00,$E8,$28,$01,$00
Data.b $00,$89,$84,$24,$C0,$00,$00,$00,$8B,$9C,$24,$C0,$00,$00,$00,$21,$DB,$74,$09,$8B
Data.b $84,$24,$C0,$00,$00,$00,$EB,$73,$8D,$84,$24,$B0,$00,$00,$00,$50,$8D,$84,$24,$BC
Data.b $00,$00,$00,$50,$E8,$FE,$00,$00,$00,$89,$84,$24,$C0,$00,$00,$00,$8B,$9C,$24,$C0
Data.b $00,$00,$00,$21,$DB,$74,$12,$8D,$04,$24,$50,$E8,$E9,$00,$00,$00,$8B,$84,$24,$C0
Data.b $00,$00,$00,$EB,$3A,$8D,$05,$C6,$04,$01,$00,$8B,$AC,$24,$D0,$00,$00,$00,$89,$45
Data.b $34,$8D,$05,$53,$02,$01,$00,$50,$8B,$AC,$24,$D4,$00,$00,$00,$58,$89,$45,$38,$8D
Data.b $05,$82,$02,$01,$00,$50,$8B,$AC,$24,$D4,$00,$00,$00,$58,$89,$45,$70,$31,$C0,$EB
Data.b $02,$31,$C0,$81,$C4,$C4,$00,$00,$00,$5B,$5D,$C2,$08,$00,$31,$C0,$50,$C6,$04,$24
Data.b $00,$66,$8B,$54,$24,$08,$EC,$88,$04,$24,$0F,$BE,$04,$24,$0F,$BE,$C0,$EB,$02,$31
Data.b $C0,$83,$C4,$04,$C2,$04,$00,$8A,$44,$24,$08,$66,$8B,$54,$24,$04,$EE,$31,$C0,$C2
Data.b $08,$00,$55,$31,$C0,$50,$50,$BD,$80,$05,$01,$00,$55,$8D,$44,$24,$04,$50,$E8,$44
Data.b $00,$00,$00,$8D,$04,$24,$50,$E8,$53,$00,$00,$00,$8B,$6C,$24,$10,$FF,$75,$04,$E8
Data.b $41,$00,$00,$00,$31,$C0,$83,$C4,$08,$5D,$C2,$04,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $8B,$44,$24,$04,$8B,$00,$C2,$04,$00,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$8B,$54,$24,$04
Data.b $88,$10,$C2,$04,$00,$FF,$25,$84,$09,$01,$00,$FF,$25,$88,$09,$01,$00,$FF,$25,$8C
Data.b $09,$01,$00,$FF,$25,$90,$09,$01,$00,$FF,$25,$94,$09,$01,$00,$FF,$25,$98,$09,$01
Data.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$90
Data.b $00,$00,$00,$00,$FF,$FF,$FF,$FF,$5C,$00,$44,$00,$65,$00,$76,$00,$69,$00,$63,$00
Data.b $65,$00,$5C,$00,$70,$00,$62,$00,$64,$00,$72,$00,$69,$00,$76,$00,$65,$00,$72,$00
Data.b $69,$00,$6F,$00,$00,$00,$00,$00,$5C,$00,$44,$00,$6F,$00,$73,$00,$44,$00,$65,$00
Data.b $76,$00,$69,$00,$63,$00,$65,$00,$73,$00,$5C,$00,$70,$00,$62,$00,$64,$00,$72,$00
Data.b $69,$00,$76,$00,$65,$00,$72,$00,$69,$00,$6F,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$5F,$A1,$B0,$50
Data.b $00,$00,$00,$00,$00,$00,$01,$00,$10,$00,$00,$00,$18,$00,$00,$80,$00,$00,$00,$00
Data.b $5F,$A1,$B0,$50,$00,$00,$00,$00,$00,$00,$01,$00,$01,$00,$00,$00,$30,$00,$00,$80
Data.b $00,$00,$00,$00,$5F,$A1,$B0,$50,$00,$00,$00,$00,$00,$00,$01,$00,$09,$04,$00,$00
Data.b $48,$00,$00,$00,$18,$06,$00,$00,$10,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $10,$03,$34,$00,$00,$00,$56,$00,$53,$00,$5F,$00,$56,$00,$45,$00,$52,$00,$53,$00
Data.b $49,$00,$4F,$00,$4E,$00,$5F,$00,$49,$00,$4E,$00,$46,$00,$4F,$00,$00,$00,$00,$00
Data.b $BD,$04,$EF,$FE,$00,$00,$01,$00,$02,$00,$01,$00,$00,$00,$00,$00,$02,$00,$01,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$70,$02,$00,$00,$01,$00,$53,$00
Data.b $74,$00,$72,$00,$69,$00,$6E,$00,$67,$00,$46,$00,$69,$00,$6C,$00,$65,$00,$49,$00
Data.b $6E,$00,$66,$00,$6F,$00,$00,$00,$4C,$02,$00,$00,$01,$00,$30,$00,$30,$00,$30,$00
Data.b $30,$00,$30,$00,$34,$00,$62,$00,$30,$00,$00,$00,$46,$00,$13,$00,$01,$00,$43,$00
Data.b $6F,$00,$6D,$00,$70,$00,$61,$00,$6E,$00,$79,$00,$4E,$00,$61,$00,$6D,$00,$65,$00
Data.b $00,$00,$00,$00,$50,$00,$75,$00,$72,$00,$65,$00,$42,$00,$61,$00,$73,$00,$69,$00
Data.b $63,$00,$20,$00,$43,$00,$6F,$00,$6D,$00,$70,$00,$69,$00,$6C,$00,$65,$00,$72,$00
Data.b $00,$00,$00,$00,$36,$00,$0B,$00,$01,$00,$50,$00,$72,$00,$6F,$00,$64,$00,$75,$00
Data.b $63,$00,$74,$00,$4E,$00,$61,$00,$6D,$00,$65,$00,$00,$00,$00,$00,$70,$00,$62,$00
Data.b $64,$00,$72,$00,$69,$00,$76,$00,$65,$00,$72,$00,$69,$00,$6F,$00,$00,$00,$00,$00
Data.b $2C,$00,$04,$00,$01,$00,$50,$00,$72,$00,$6F,$00,$64,$00,$75,$00,$63,$00,$74,$00
Data.b $56,$00,$65,$00,$72,$00,$73,$00,$69,$00,$6F,$00,$6E,$00,$00,$00,$31,$00,$2E,$00
Data.b $32,$00,$00,$00,$28,$00,$04,$00,$01,$00,$46,$00,$69,$00,$6C,$00,$65,$00,$56,$00
Data.b $65,$00,$72,$00,$73,$00,$69,$00,$6F,$00,$6E,$00,$00,$00,$00,$00,$31,$00,$2E,$00
Data.b $32,$00,$00,$00,$46,$00,$0F,$00,$01,$00,$46,$00,$69,$00,$6C,$00,$65,$00,$44,$00
Data.b $65,$00,$73,$00,$63,$00,$72,$00,$69,$00,$70,$00,$74,$00,$69,$00,$6F,$00,$6E,$00
Data.b $00,$00,$00,$00,$44,$00,$72,$00,$69,$00,$76,$00,$65,$00,$72,$00,$20,$00,$50,$00
Data.b $6F,$00,$72,$00,$74,$00,$20,$00,$49,$00,$4F,$00,$00,$00,$00,$00,$36,$00,$0B,$00
Data.b $01,$00,$49,$00,$6E,$00,$74,$00,$65,$00,$72,$00,$6E,$00,$61,$00,$6C,$00,$4E,$00
Data.b $61,$00,$6D,$00,$65,$00,$00,$00,$70,$00,$62,$00,$64,$00,$72,$00,$69,$00,$76,$00
Data.b $65,$00,$72,$00,$69,$00,$6F,$00,$00,$00,$00,$00,$46,$00,$0F,$00,$01,$00,$4F,$00
Data.b $72,$00,$69,$00,$67,$00,$69,$00,$6E,$00,$61,$00,$6C,$00,$46,$00,$69,$00,$6C,$00
Data.b $65,$00,$6E,$00,$61,$00,$6D,$00,$65,$00,$00,$00,$70,$00,$62,$00,$64,$00,$72,$00
Data.b $69,$00,$76,$00,$65,$00,$72,$00,$69,$00,$6F,$00,$2E,$00,$73,$00,$79,$00,$73,$00
Data.b $00,$00,$00,$00,$3E,$00,$15,$00,$01,$00,$45,$00,$6D,$00,$61,$00,$69,$00,$6C,$00
Data.b $00,$00,$00,$00,$70,$00,$75,$00,$72,$00,$65,$00,$2D,$00,$62,$00,$61,$00,$73,$00
Data.b $69,$00,$63,$00,$40,$00,$79,$00,$61,$00,$6E,$00,$64,$00,$65,$00,$78,$00,$2E,$00
Data.b $72,$00,$75,$00,$00,$00,$00,$00,$58,$00,$20,$00,$01,$00,$57,$00,$65,$00,$62,$00
Data.b $73,$00,$69,$00,$74,$00,$65,$00,$00,$00,$00,$00,$68,$00,$74,$00,$74,$00,$70,$00
Data.b $3A,$00,$2F,$00,$2F,$00,$77,$00,$77,$00,$77,$00,$2E,$00,$70,$00,$75,$00,$72,$00
Data.b $65,$00,$2D,$00,$62,$00,$61,$00,$73,$00,$69,$00,$63,$00,$2E,$00,$6E,$00,$61,$00
Data.b $72,$00,$6F,$00,$64,$00,$2E,$00,$72,$00,$75,$00,$2F,$00,$00,$00,$44,$00,$00,$00
Data.b $01,$00,$56,$00,$61,$00,$72,$00,$46,$00,$69,$00,$6C,$00,$65,$00,$49,$00,$6E,$00
Data.b $66,$00,$6F,$00,$00,$00,$00,$00,$24,$00,$04,$00,$00,$00,$54,$00,$72,$00,$61,$00
Data.b $6E,$00,$73,$00,$6C,$00,$61,$00,$74,$00,$69,$00,$6F,$00,$6E,$00,$00,$00,$00,$00
Data.b $00,$00,$B0,$04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$68,$09,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $20,$0A,$00,$00,$84,$09,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$A0,$09,$00,$00,$B4,$09,$00,$00,$CC,$09,$00,$00
Data.b $DE,$09,$00,$00,$F6,$09,$00,$00,$08,$0A,$00,$00,$00,$00,$00,$00,$A0,$09,$00,$00
Data.b $B4,$09,$00,$00,$CC,$09,$00,$00,$DE,$09,$00,$00,$F6,$09,$00,$00,$08,$0A,$00,$00
Data.b $00,$00,$00,$00,$3B,$01,$49,$6F,$43,$6F,$6D,$70,$6C,$65,$74,$65,$52,$65,$71,$75
Data.b $65,$73,$74,$00,$1D,$04,$52,$74,$6C,$49,$6E,$69,$74,$55,$6E,$69,$63,$6F,$64,$65
Data.b $53,$74,$72,$69,$6E,$67,$00,$00,$3E,$01,$49,$6F,$43,$72,$65,$61,$74,$65,$44,$65
Data.b $76,$69,$63,$65,$00,$00,$47,$01,$49,$6F,$43,$72,$65,$61,$74,$65,$53,$79,$6D,$62
Data.b $6F,$6C,$69,$63,$4C,$69,$6E,$6B,$00,$00,$4F,$01,$49,$6F,$44,$65,$6C,$65,$74,$65
Data.b $44,$65,$76,$69,$63,$65,$00,$00,$51,$01,$49,$6F,$44,$65,$6C,$65,$74,$65,$53,$79
Data.b $6D,$62,$6F,$6C,$69,$63,$4C,$69,$6E,$6B,$00,$00,$6E,$74,$6F,$73,$6B,$72,$6E,$6C
Data.b $2E,$65,$78,$65,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$28,$00,$00,$00,$42,$32,$49,$32,$4F,$32,$AC,$33
Data.b $BF,$33,$53,$34,$63,$34,$75,$34,$CC,$34,$1B,$35,$21,$35,$27,$35,$2D,$35,$33,$35
Data.b $39,$35,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00
Driver_x86_End:
CompilerEndIf
Driver_x64:
Data.b $4D,$5A,$00,$00,$01,$00,$00,$00,$02,$00,$00,$00,$FF,$FF,$00,$00,$40,$00,$00,$00
Data.b $00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$00,$B4,$4C,$CD,$21,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $40,$00,$00,$00,$50,$45,$00,$00,$64,$86,$06,$00,$8C,$D4,$E0,$4F,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$F0,$00,$2E,$00,$0B,$02,$02,$32,$C0,$05,$00,$00,$60,$04,$00,$00
Data.b $00,$00,$00,$00,$40,$02,$00,$00,$40,$02,$00,$00,$00,$00,$01,$00,$00,$00,$00,$00
Data.b $20,$00,$00,$00,$20,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$00,$05,$00,$02,$00
Data.b $00,$00,$00,$00,$60,$0C,$00,$00,$40,$02,$00,$00,$20,$3B,$00,$00,$01,$00,$00,$00
Data.b $00,$00,$10,$00,$00,$00,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$00,$00,$10,$00
Data.b $00,$00,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$10,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$0B,$00,$00,$28,$00,$00,$00,$80,$07,$00,$00
Data.b $80,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $40,$0C,$00,$00,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$60,$0B,$00,$00
Data.b $38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$2E,$63,$6F,$64,$65,$00,$00,$00,$3C,$04,$00,$00
Data.b $40,$02,$00,$00,$40,$04,$00,$00,$40,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$20,$00,$00,$68,$2E,$74,$65,$78,$74,$00,$00,$00,$37,$00,$00,$00
Data.b $80,$06,$00,$00,$40,$00,$00,$00,$80,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$20,$00,$00,$68,$2E,$64,$61,$74,$61,$00,$00,$00,$B0,$00,$00,$00
Data.b $C0,$06,$00,$00,$C0,$00,$00,$00,$C0,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$40,$00,$00,$C8,$2E,$72,$73,$72,$63,$00,$00,$00,$80,$03,$00,$00
Data.b $80,$07,$00,$00,$80,$03,$00,$00,$80,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$40,$00,$00,$48,$49,$4E,$49,$54,$00,$00,$00,$00,$26,$01,$00,$00
Data.b $00,$0B,$00,$00,$40,$01,$00,$00,$00,$0B,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$20,$00,$00,$E2,$2E,$72,$65,$6C,$6F,$63,$00,$00,$10,$00,$00,$00
Data.b $40,$0C,$00,$00,$20,$00,$00,$00,$40,$0C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$40,$00,$00,$42,$00,$00,$00,$00,$00,$00,$00,$00,$48,$8D,$05,$11
Data.b $02,$00,$00,$48,$89,$C0,$50,$8F,$05,$17,$05,$00,$00,$FF,$25,$11,$05,$00,$00,$48
Data.b $89,$4C,$24,$08,$48,$89,$54,$24,$10,$55,$48,$31,$C0,$50,$48,$83,$EC,$28,$48,$8B
Data.b $6C,$24,$48,$48,$C7,$45,$38,$00,$00,$00,$00,$48,$8B,$6C,$24,$48,$48,$C7,$45,$30
Data.b $00,$00,$00,$00,$68,$00,$00,$00,$00,$FF,$74,$24,$50,$59,$5A,$E8,$FF,$03,$00,$00
Data.b $48,$31,$C0,$EB,$03,$48,$31,$C0,$48,$83,$C4,$30,$5D,$C3,$48,$89,$4C,$24,$08,$48
Data.b $89,$54,$24,$10,$55,$41,$57,$48,$C7,$C0,$0A,$00,$00,$00,$48,$83,$EC,$08,$48,$C7
Data.b $04,$24,$00,$00,$00,$00,$48,$FF,$C8,$75,$EF,$48,$83,$EC,$28,$48,$8B,$AC,$24,$98
Data.b $00,$00,$00,$FF,$B5,$B8,$00,$00,$00,$58,$48,$89,$44,$24,$38,$48,$8B,$6C,$24,$38
Data.b $FF,$75,$10,$58,$48,$89,$44,$24,$40,$48,$8B,$6C,$24,$38,$FF,$75,$08,$58,$48,$89
Data.b $44,$24,$48,$48,$8B,$AC,$24,$98,$00,$00,$00,$FF,$75,$18,$59,$E8,$74,$03,$00,$00
Data.b $48,$89,$44,$24,$50,$4C,$8B,$7C,$24,$50,$49,$81,$E7,$FF,$FF,$00,$00,$4C,$89,$7C
Data.b $24,$58,$4C,$8B,$7C,$24,$50,$49,$C1,$FF,$10,$49,$81,$E7,$FF,$00,$00,$00,$4C,$89
Data.b $F8,$88,$44,$24,$60,$48,$8B,$6C,$24,$38,$FF,$75,$18,$58,$48,$89,$44,$24,$68,$48
Data.b $C7,$44,$24,$28,$00,$00,$00,$00,$FF,$74,$24,$68,$49,$C7,$C7,$00,$02,$00,$00,$4C
Data.b $3B,$3C,$24,$75,$5F,$48,$83,$EC,$08,$48,$8B,$44,$24,$68,$48,$89,$C0,$50,$59,$48
Data.b $83,$EC,$20,$E8,$5F,$02,$00,$00,$48,$83,$C4,$28,$48,$89,$C0,$88,$44,$24,$78,$48
Data.b $83,$EC,$08,$48,$0F,$BE,$84,$24,$80,$00,$00,$00,$48,$89,$C0,$50,$48,$8B,$AC,$24
Data.b $B0,$00,$00,$00,$FF,$75,$18,$59,$5A,$48,$83,$EC,$20,$E8,$E6,$02,$00,$00,$48,$83
Data.b $C4,$28,$48,$8B,$AC,$24,$A0,$00,$00,$00,$48,$C7,$45,$38,$01,$00,$00,$00,$EB,$61
Data.b $49,$C7,$C7,$00,$04,$00,$00,$4C,$3B,$3C,$24,$75,$35,$48,$83,$EC,$08,$48,$0F,$B6
Data.b $44,$24,$70,$50,$48,$8B,$44,$24,$70,$48,$89,$C0,$50,$59,$5A,$48,$83,$EC,$20,$E8
Data.b $1C,$02,$00,$00,$48,$83,$C4,$28,$48,$8B,$AC,$24,$A0,$00,$00,$00,$48,$C7,$45,$38
Data.b $00,$00,$00,$00,$EB,$1F,$48,$B8,$01,$00,$00,$C0,$00,$00,$00,$00,$48,$89,$44,$24
Data.b $30,$48,$8B,$AC,$24,$A0,$00,$00,$00,$48,$C7,$45,$38,$00,$00,$00,$00,$58,$FF,$74
Data.b $24,$28,$48,$8B,$AC,$24,$A0,$00,$00,$00,$58,$48,$89,$45,$30,$68,$00,$00,$00,$00
Data.b $FF,$B4,$24,$A0,$00,$00,$00,$59,$5A,$E8,$4D,$02,$00,$00,$48,$8B,$44,$24,$28,$EB
Data.b $03,$48,$31,$C0,$48,$83,$C4,$78,$41,$5F,$5D,$C3,$48,$89,$4C,$24,$08,$48,$89,$54
Data.b $24,$10,$55,$41,$57,$48,$C7,$C0,$30,$00,$00,$00,$48,$83,$EC,$08,$48,$C7,$04,$24
Data.b $00,$00,$00,$00,$48,$FF,$C8,$75,$EF,$48,$83,$EC,$28,$48,$BD,$E0,$06,$01,$00,$00
Data.b $00,$00,$00,$48,$89,$E8,$50,$48,$8D,$84,$24,$80,$01,$00,$00,$48,$89,$C0,$50,$59
Data.b $5A,$E8,$F7,$01,$00,$00,$48,$BD,$10,$07,$01,$00,$00,$00,$00,$00,$48,$89,$E8,$50
Data.b $48,$8D,$84,$24,$90,$01,$00,$00,$48,$89,$C0,$50,$59,$5A,$E8,$D6,$01,$00,$00,$48
Data.b $83,$EC,$08,$48,$8D,$44,$24,$30,$48,$89,$C0,$50,$68,$00,$00,$00,$00,$68,$00,$00
Data.b $00,$00,$68,$22,$00,$00,$00,$48,$8D,$84,$24,$A0,$01,$00,$00,$48,$89,$C0,$50,$68
Data.b $00,$00,$00,$00,$FF,$B4,$24,$F8,$01,$00,$00,$59,$5A,$41,$58,$41,$59,$48,$83,$EC
Data.b $20,$E8,$99,$01,$00,$00,$48,$83,$C4,$40,$48,$89,$84,$24,$98,$01,$00,$00,$4C,$8B
Data.b $BC,$24,$98,$01,$00,$00,$4D,$21,$FF,$74,$0D,$48,$8B,$84,$24,$98,$01,$00,$00,$E9
Data.b $A0,$00,$00,$00,$48,$8D,$84,$24,$78,$01,$00,$00,$48,$89,$C0,$50,$48,$8D,$84,$24
Data.b $90,$01,$00,$00,$48,$89,$C0,$50,$59,$5A,$E8,$5A,$01,$00,$00,$48,$89,$84,$24,$98
Data.b $01,$00,$00,$4C,$8B,$BC,$24,$98,$01,$00,$00,$4D,$21,$FF,$74,$19,$48,$8D,$44,$24
Data.b $28,$48,$89,$C0,$50,$59,$E8,$3C,$01,$00,$00,$48,$8B,$84,$24,$98,$01,$00,$00,$EB
Data.b $53,$48,$8D,$05,$A8,$00,$00,$00,$48,$89,$C0,$50,$48,$8B,$AC,$24,$C8,$01,$00,$00
Data.b $58,$48,$89,$45,$68,$48,$8D,$05,$BF,$FC,$FF,$FF,$48,$89,$C0,$50,$48,$8B,$AC,$24
Data.b $C8,$01,$00,$00,$58,$48,$89,$45,$70,$48,$8D,$05,$F2,$FC,$FF,$FF,$48,$89,$C0,$50
Data.b $48,$8B,$AC,$24,$C8,$01,$00,$00,$58,$48,$89,$85,$E0,$00,$00,$00,$48,$31,$C0,$EB
Data.b $03,$48,$31,$C0,$48,$81,$C4,$A8,$01,$00,$00,$41,$5F,$5D,$C3,$48,$89,$4C,$24,$08
Data.b $48,$31,$C0,$50,$50,$48,$83,$EC,$28,$C6,$44,$24,$28,$00,$66,$8B,$54,$24,$40,$EC
Data.b $88,$44,$24,$28,$48,$0F,$BE,$44,$24,$28,$48,$0F,$BE,$C0,$EB,$03,$48,$31,$C0,$48
Data.b $83,$C4,$38,$C3,$48,$89,$4C,$24,$08,$48,$89,$54,$24,$10,$48,$83,$EC,$28,$8A,$44
Data.b $24,$38,$66,$8B,$54,$24,$30,$EE,$48,$31,$C0,$48,$83,$C4,$28,$C3,$48,$89,$4C,$24
Data.b $08,$55,$48,$31,$C0,$50,$50,$50,$48,$83,$EC,$28,$48,$BD,$10,$07,$01,$00,$00,$00
Data.b $00,$00,$48,$89,$E8,$50,$48,$8D,$44,$24,$30,$48,$89,$C0,$50,$59,$5A,$E8,$43,$00
Data.b $00,$00,$48,$8D,$44,$24,$28,$48,$89,$C0,$50,$59,$E8,$4C,$00,$00,$00,$48,$8B,$6C
Data.b $24,$50,$FF,$75,$08,$59,$E8,$38,$00,$00,$00,$48,$31,$C0,$48,$83,$C4,$40,$5D,$C3
Data.b $00,$00,$00,$00,$48,$8B,$01,$C3,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC
Data.b $88,$11,$C3,$FF,$25,$C7,$04,$00,$00,$FF,$25,$C9,$04,$00,$00,$FF,$25,$CB,$04,$00
Data.b $00,$FF,$25,$CD,$04,$00,$00,$FF,$25,$CF,$04,$00,$00,$FF,$25,$D1,$04,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
Data.b $5C,$00,$44,$00,$65,$00,$76,$00,$69,$00,$63,$00,$65,$00,$5C,$00,$70,$00,$62,$00
Data.b $64,$00,$72,$00,$69,$00,$76,$00,$65,$00,$72,$00,$69,$00,$6F,$00,$5F,$00,$78,$00
Data.b $36,$00,$34,$00,$00,$00,$00,$00,$5C,$00,$44,$00,$6F,$00,$73,$00,$44,$00,$65,$00
Data.b $76,$00,$69,$00,$63,$00,$65,$00,$73,$00,$5C,$00,$70,$00,$62,$00,$64,$00,$72,$00
Data.b $69,$00,$76,$00,$65,$00,$72,$00,$69,$00,$6F,$00,$5F,$00,$78,$00,$36,$00,$34,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$8C,$D4,$E0,$4F,$00,$00,$00,$00,$00,$00,$01,$00,$10,$00,$00,$00
Data.b $18,$00,$00,$80,$00,$00,$00,$00,$8C,$D4,$E0,$4F,$00,$00,$00,$00,$00,$00,$01,$00
Data.b $01,$00,$00,$00,$30,$00,$00,$80,$00,$00,$00,$00,$8C,$D4,$E0,$4F,$00,$00,$00,$00
Data.b $00,$00,$01,$00,$09,$04,$00,$00,$48,$00,$00,$00,$D8,$07,$00,$00,$28,$03,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$28,$03,$34,$00,$00,$00,$56,$00,$53,$00,$5F,$00
Data.b $56,$00,$45,$00,$52,$00,$53,$00,$49,$00,$4F,$00,$4E,$00,$5F,$00,$49,$00,$4E,$00
Data.b $46,$00,$4F,$00,$00,$00,$00,$00,$BD,$04,$EF,$FE,$00,$00,$01,$00,$02,$00,$01,$00
Data.b $00,$00,$00,$00,$02,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $88,$02,$00,$00,$01,$00,$53,$00,$74,$00,$72,$00,$69,$00,$6E,$00,$67,$00,$46,$00
Data.b $69,$00,$6C,$00,$65,$00,$49,$00,$6E,$00,$66,$00,$6F,$00,$00,$00,$64,$02,$00,$00
Data.b $01,$00,$30,$00,$30,$00,$30,$00,$30,$00,$30,$00,$34,$00,$62,$00,$30,$00,$00,$00
Data.b $4E,$00,$17,$00,$01,$00,$43,$00,$6F,$00,$6D,$00,$70,$00,$61,$00,$6E,$00,$79,$00
Data.b $4E,$00,$61,$00,$6D,$00,$65,$00,$00,$00,$00,$00,$50,$00,$75,$00,$72,$00,$65,$00
Data.b $42,$00,$61,$00,$73,$00,$69,$00,$63,$00,$20,$00,$43,$00,$6F,$00,$6D,$00,$70,$00
Data.b $69,$00,$6C,$00,$65,$00,$72,$00,$20,$00,$78,$00,$36,$00,$34,$00,$00,$00,$00,$00
Data.b $36,$00,$0B,$00,$01,$00,$50,$00,$72,$00,$6F,$00,$64,$00,$75,$00,$63,$00,$74,$00
Data.b $4E,$00,$61,$00,$6D,$00,$65,$00,$00,$00,$00,$00,$70,$00,$62,$00,$64,$00,$72,$00
Data.b $69,$00,$76,$00,$65,$00,$72,$00,$69,$00,$6F,$00,$00,$00,$00,$00,$2C,$00,$04,$00
Data.b $01,$00,$50,$00,$72,$00,$6F,$00,$64,$00,$75,$00,$63,$00,$74,$00,$56,$00,$65,$00
Data.b $72,$00,$73,$00,$69,$00,$6F,$00,$6E,$00,$00,$00,$31,$00,$2E,$00,$32,$00,$00,$00
Data.b $28,$00,$04,$00,$01,$00,$46,$00,$69,$00,$6C,$00,$65,$00,$56,$00,$65,$00,$72,$00
Data.b $73,$00,$69,$00,$6F,$00,$6E,$00,$00,$00,$00,$00,$31,$00,$2E,$00,$32,$00,$00,$00
Data.b $4E,$00,$13,$00,$01,$00,$46,$00,$69,$00,$6C,$00,$65,$00,$44,$00,$65,$00,$73,$00
Data.b $63,$00,$72,$00,$69,$00,$70,$00,$74,$00,$69,$00,$6F,$00,$6E,$00,$00,$00,$00,$00
Data.b $44,$00,$72,$00,$69,$00,$76,$00,$65,$00,$72,$00,$20,$00,$50,$00,$6F,$00,$72,$00
Data.b $74,$00,$20,$00,$49,$00,$4F,$00,$20,$00,$78,$00,$36,$00,$34,$00,$00,$00,$00,$00
Data.b $36,$00,$0B,$00,$01,$00,$49,$00,$6E,$00,$74,$00,$65,$00,$72,$00,$6E,$00,$61,$00
Data.b $6C,$00,$4E,$00,$61,$00,$6D,$00,$65,$00,$00,$00,$70,$00,$62,$00,$64,$00,$72,$00
Data.b $69,$00,$76,$00,$65,$00,$72,$00,$69,$00,$6F,$00,$00,$00,$00,$00,$4E,$00,$13,$00
Data.b $01,$00,$4F,$00,$72,$00,$69,$00,$67,$00,$69,$00,$6E,$00,$61,$00,$6C,$00,$46,$00
Data.b $69,$00,$6C,$00,$65,$00,$6E,$00,$61,$00,$6D,$00,$65,$00,$00,$00,$70,$00,$62,$00
Data.b $64,$00,$72,$00,$69,$00,$76,$00,$65,$00,$72,$00,$69,$00,$6F,$00,$5F,$00,$78,$00
Data.b $36,$00,$34,$00,$2E,$00,$73,$00,$79,$00,$73,$00,$00,$00,$00,$00,$3E,$00,$15,$00
Data.b $01,$00,$45,$00,$6D,$00,$61,$00,$69,$00,$6C,$00,$00,$00,$00,$00,$70,$00,$75,$00
Data.b $72,$00,$65,$00,$2D,$00,$62,$00,$61,$00,$73,$00,$69,$00,$63,$00,$40,$00,$79,$00
Data.b $61,$00,$6E,$00,$64,$00,$65,$00,$78,$00,$2E,$00,$72,$00,$75,$00,$00,$00,$00,$00
Data.b $58,$00,$20,$00,$01,$00,$57,$00,$65,$00,$62,$00,$73,$00,$69,$00,$74,$00,$65,$00
Data.b $00,$00,$00,$00,$68,$00,$74,$00,$74,$00,$70,$00,$3A,$00,$2F,$00,$2F,$00,$77,$00
Data.b $77,$00,$77,$00,$2E,$00,$70,$00,$75,$00,$72,$00,$65,$00,$2D,$00,$62,$00,$61,$00
Data.b $73,$00,$69,$00,$63,$00,$2E,$00,$6E,$00,$61,$00,$72,$00,$6F,$00,$64,$00,$2E,$00
Data.b $72,$00,$75,$00,$2F,$00,$00,$00,$44,$00,$00,$00,$01,$00,$56,$00,$61,$00,$72,$00
Data.b $46,$00,$69,$00,$6C,$00,$65,$00,$49,$00,$6E,$00,$66,$00,$6F,$00,$00,$00,$00,$00
Data.b $24,$00,$04,$00,$00,$00,$54,$00,$72,$00,$61,$00,$6E,$00,$73,$00,$6C,$00,$61,$00
Data.b $74,$00,$69,$00,$6F,$00,$6E,$00,$00,$00,$00,$00,$00,$00,$B0,$04,$28,$0B,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$18,$0C,$00,$00,$60,$0B,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$98,$0B,$00,$00
Data.b $00,$00,$00,$00,$AC,$0B,$00,$00,$00,$00,$00,$00,$C4,$0B,$00,$00,$00,$00,$00,$00
Data.b $D6,$0B,$00,$00,$00,$00,$00,$00,$EE,$0B,$00,$00,$00,$00,$00,$00,$00,$0C,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$98,$0B,$00,$00,$00,$00,$00,$00
Data.b $AC,$0B,$00,$00,$00,$00,$00,$00,$C4,$0B,$00,$00,$00,$00,$00,$00,$D6,$0B,$00,$00
Data.b $00,$00,$00,$00,$EE,$0B,$00,$00,$00,$00,$00,$00,$00,$0C,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$C9,$01,$49,$6F,$43,$6F,$6D,$70,$6C,$65,$74,$65
Data.b $52,$65,$71,$75,$65,$73,$74,$00,$BA,$05,$52,$74,$6C,$49,$6E,$69,$74,$55,$6E,$69
Data.b $63,$6F,$64,$65,$53,$74,$72,$69,$6E,$67,$00,$00,$CE,$01,$49,$6F,$43,$72,$65,$61
Data.b $74,$65,$44,$65,$76,$69,$63,$65,$00,$00,$D8,$01,$49,$6F,$43,$72,$65,$61,$74,$65
Data.b $53,$79,$6D,$62,$6F,$6C,$69,$63,$4C,$69,$6E,$6B,$00,$00,$E3,$01,$49,$6F,$44,$65
Data.b $6C,$65,$74,$65,$44,$65,$76,$69,$63,$65,$00,$00,$E5,$01,$49,$6F,$44,$65,$6C,$65
Data.b $74,$65,$53,$79,$6D,$62,$6F,$6C,$69,$63,$4C,$69,$6E,$6B,$00,$00,$6E,$74,$6F,$73
Data.b $6B,$72,$6E,$6C,$2E,$65,$78,$65,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $10,$00,$00,$00,$83,$A4,$A4,$A4,$3A,$A6,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00
Driver_x64_End:
EndDataSection
;}
EndModule
Code: Select all
XIncludeFile "PortIO.pbi"
*Port.PortIO::PortIO = PortIO::New()
Debug *Port
If *Port
Select *Port\Status()
Case PortIO::#Status_OK
Debug "OK"
Case PortIO::#Status_ErrCopyDriver
Debug "Error Copy Driver"
Case PortIO::#Status_ErrInstallDriver
Debug "Error Install Driver"
Case PortIO::#Status_ErrAccess
Debug "Error Access Driver"
EndSelect
Debug *Port\DriverID()
*Port\SetByte($378, 100)
Debug *Port\GetByte($378)
*Port\Free()
EndIf
Code: Select all
XIncludeFile "PortIO.pbi"
Procedure SendLPT1(*Port.PortIO::PortIO)
Send.a=0
For i=8 To 1 Step -1
If GetGadgetState(i)=1
Send | 1
Else
Send & %11111110
EndIf
If i>1
Send << 1
EndIf
Next i
*Port\SetByte($378, Send)
EndProcedure
*Port.PortIO::PortIO = PortIO::New()
If *Port
Err = *Port\Status()
If Err<>PortIO::#Status_OK
MessageRequester("", "Error driver "+Str(Err))
EndIf
OpenWindow(0,0,0,120,240,"lpt Pin", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible)
Frame3DGadget(#PB_Any,20,10,80,180,"Pins")
y=28
For i=1 To 8
CheckBoxGadget(i,36,y,50,16,"Pin "+Str(i))
y+20
Next i
ButtonGadget(9,6,210,110,24,"Send in LPT 1")
HideWindow(0,0)
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_Gadget
Gadget=EventGadget()
If Gadget=9
SendLPT1(*Port)
EndIf
EndIf
Until Event=#PB_Event_CloseWindow
*Port\Free()
EndIf
Code: Select all
#ADR_REG = $295
#DATA_REG = $296
XIncludeFile "PortIO.pbi"
Procedure Termo(*Port.PortIO::PortIO)
*Port\SetByte(#ADR_REG, $2B)
x=*Port\GetByte(#DATA_REG)
SetGadgetItemText(0,0,StrU(x, #PB_Byte)+" °C",1)
*Port\SetByte(#ADR_REG, $29)
x=*Port\GetByte(#DATA_REG)
SetGadgetItemText(0,1,StrU(x, #PB_Byte)+" °C",1)
EndProcedure
*Port.PortIO::PortIO = PortIO::New()
If *Port
Err = *Port\Status()
If Err<>PortIO::#Status_OK
MessageRequester("", "Error driver "+Str(Err))
EndIf
OpenWindow(0,0,0,274,80,"TermoControl",#PB_Window_MinimizeGadget|#PB_Window_Invisible|#PB_Window_ScreenCentered)
ListIconGadget(0,2,4,270,70,"Name",120,#PB_ListIcon_GridLines)
SetGadgetFont(0,LoadFont(0,"MS Sans Serif",10) )
AddGadgetColumn(0, 1, "Temperature", 140)
AddGadgetItem(0, 0, "Processor")
AddGadgetItem(0, 1, "Chipset")
Termo(*Port)
AddWindowTimer(0,2,1000)
HideWindow(0,0)
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_Timer
Termo(*Port)
EndIf
Until Event=#PB_Event_CloseWindow
*Port\Free()
EndIf