DELPHI硬件操作(国外英文资料).doc
文本预览下载声明
DELPHI硬件操作(国外英文资料)
1、申明部份:
使用.... Winsock,注册表,NB30 ....
……
实现
……
var s4,s5:字符串;
类型
TNBLanaResources =(lrAlloc lrFree);
类型
PMACAddress = ^ TMACAddress;
TMACAddress = array[0 . .5)字节;
类型
TGate =记录
远,op,赛格,off1:词;
结束;
LONGDWORD = INT64;
var
IDTR:LONGDWORD;
SavedGate:TGate;
OurGate:TGate;
弟弟:array[0 . .256)的词;
dsn:array[0 . .20个字符);
{ $ R * .DFM }
/ /以下函数用以获得硬盘出厂序列号。
过程Ring0Proc();
asm
/ /等控制器不忙
01 f7h mov dx
@1:在艾尔,dx
cmp al 050 h
jne @1
/ /获取第一/第二驱动器
12月dx
a0h mov,0
dx,艾尔
/ /获取驱动器信息数据
公司dx
mov,0决定
dx,艾尔
nop
nop
/ /等待数据的准备
@2:在艾尔,dx
cmp al 058 h
jne @2
nop
nop
/ /读部门
xor连成一片,连成一片
01 f0h mov dx
@3:ax,dx
mov词ptr dd(ecx * 2),斧头
公司连成一片
cmp连成一片,256
jne @3
iretd
结束;
过程Change2Ring0();
开始
asm
mov eax,抵消Ring0Proc
mov OurGate。远,斧头
月eax,16
mov OurGate。off1,斧头
mov OurGate.op 0028 h
ee00h mov OurGate.seg,0
mov ebx,抵消IDTR
sidt(ebx)
mov ebx,dword ptr[IDTR + 2]
添加ebx,8 * 3
mov edi,抵消SavedGate
mov esi,ebx
movsd
movsd
mov edi,ebx
mov esi,抵消OurGate
cli
movsd
movsd
sti
mov eax,6200 h
mov连成一片,0
int 3 h
mov edi,ebx
mov esi,抵消SavedGate
cli
movsd
movsd
sti
结束;
asm
xor连成一片,连成一片
mov ebx,抵消dd(10 * 2)
@4:mov ax,(ebx)
mov字节ptr dsn连成一片,啊
公司连成一片
mov字节ptr dsn(交易所)
公司ebx
公司ebx
公司连成一片
cmp连成一片,10
jne @4
结束;
showmessage(dsn);
结束;
/ /以下函数用以获得系统时间。
函数GetSystemTime:AnsiString;
var
stSystemTime:TSystemTime;
开始
窗户。GetSystemTime(stSystemTime);
结果:= DateTimeToStr(SystemTimeToDateTime(stSystemTime));
结束;
/ /以下函数用以获得本地时间。
函数GetLocalTime:AnsiString;
var
stSystemTime:TSystemTime;
开始
窗户。GetLocalTime(stSystemTime);
结果:= DateTimeToStr(SystemTimeToDateTime(stSystemTime));
结束;
/ /以下函数用以获得计算机名。
函数GetComputerName:AnsiString;
var lpBuffer:array[0 . .MAX_PATH]的字符;
dwSize:字;
开始
dwSize:= MAX_PATH;
如果没有窗户。GetComputerName(lpBuffer dwSize)
提高
Exception.Create(SysErrorMessage(每个盘()));
结果:= StrPas(lpBuffer);
结束;
{函数GetUserName:AnsiString;
var lpBuffer:array[0 . .MAX_PATH]的字符;
dwSize:字;
开始
dwSize:= MAX_PATH;
如果没有窗户。GetUserName(lpBuffer dwSize)
提高例外。
Create (GetLastError ());
Result: = StrPas (lpBuffer);
The end; }
/ / the following
显示全部