Module PortIO (Windows x86 and x64)
Posted: Sun Jul 21, 2013 10:01 am
This module is designed for direct access to the ports on the computer.
To gain access to the ports, use the driver pbdriverio.
Example write number 100 to port LPT1 and reading from port.
Another example of operation with LPT port.
Measurement of the temperature of the processor and chipset.
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