亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? winio.pas

?? 檢測CPU信息和硬盤溫度,以及硬盤使用時間和IP地址的小軟件。
?? PAS
字號:
unit WinIo;

interface
uses
  Windows, kol, WinSvc;

const
  DRIVER_NAME_NT='OSCI_DRVNT';

type
  tMSR = packed record
    HiPart,
    LowPart: DWord;
  end;

function CreateDrive: Boolean;
function UnLoadDeviceDriver:boolean;

function ReadMSRNT(ulECX:DWord; var MSRreg:tmsr):boolean;
function WriteMSRNT(ulECX:DWord;MSRreg:tmsr):boolean;

function PortDWordInNT(Port : DWord) : DWord;
function PortWordInNT(Port : DWord) : Word;
function PortInNT(Port : DWord) : Byte;
procedure PortDWordOutNT(Port : DWord; Data : DWord);
procedure PortWordOutNT(Port : DWord; Data : Word);
procedure PortOutNT(Port : DWord; Data : Byte);
Procedure GetPCIRDWord( dwBus, dwDev, dwFunc, offs : byte; var pdata:DWord);

implementation

const
  METHOD_BUFFERED = 0;
  METHOD_IN_DIRECT = 1;
  METHOD_OUT_DIRECT = 2;
  METHOD_NEITHER = 3;
  MSR_TYPE = 40000;
  PCI_TYPE=40000;
  FILE_ANY_ACCESS = 0;
  FILE_READ_ACCESS = 1;
  FILE_WRITE_ACCESS = 2;

  PCRAddress = $0cf8;
  PCRData    = $0cfc;

  FILE_NAME_NT='OSCI_DRVNT.sys';
var
  DriverHandle: THandle;
  
function ExtractRes(FileName: KolString): boolean;
var
  HResInfo:HRSRC;
  HGlobal :THandle;
  ASize :integer;
  S: pStream;
begin
  Result := False;
  HResInfo := FindResource(hInstance, 'Setup', 'sysfile');
  if HResInfo <> 0 then
  begin
    HGlobal := LoadResource(hInstance, HResInfo);
    if HGlobal <> 0 then
    begin
      ASize := SizeOfResource(hInstance, HResInfo);
      S := NewExMemoryStream(LockResource(HGlobal), ASize );

      S.SaveToFile(FileName,0, ASize);
      S.Free;
      Result := True;
    end;
  end;
end;

function LoadDeviceDriver:boolean;
var
  FileW: PChar;
  lpBuffer: array[0..255] of Char;
  DestDir: string;
  Code: Integer;
  schSCManager, schService: SC_HANDLE;
  b: PChar;
begin
  Result := False; b := nil;
  GetWindowsDirectory(lpBuffer, 255);
  DestDir := lpBuffer + '\System32\Drivers\';
  FileW := PChar(DestDir + FILE_NAME_NT);
  Code := GetFileAttributes(FileW);
  if (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code = 0) then DeleteFile(FileW);

  //if Windows.CopyFile(FILE_NAME_NT, FileW, False) then
  if ExtractRes(FileW) then
  
  begin
    schSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
    if schSCManager <> 0 then
    begin
      schService := CreateService(SchSCManager,          // SCManager database
                                DRIVER_NAME_NT,           // name of service
                                DRIVER_NAME_NT,           // name to display
                                SERVICE_ALL_ACCESS,    // desired access
                                SERVICE_KERNEL_DRIVER, // service type
                                SERVICE_DEMAND_START,  // start type
                                SERVICE_ERROR_NORMAL,  // error control type
                                FileW,                 // service's binary
                                nil,                  // no load ordering group
                                nil,                  // no tag identifier
                                nil,                  // no dependencies
                                nil,                  // LocalSystem account
                                nil                   // no password
                                );

     if SchService <> 0 then
     begin
       StartService(schService, 0, b);
       DriverHandle := CreateFile(PChar('\\.\' + DRIVER_NAME_NT), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
       Result := (DriverHandle <> INVALID_HANDLE_VALUE) and (DriverHandle <> 0);
       CloseServiceHandle(schService);
     end;
     CloseServiceHandle(schSCManager);
    end;
  end;
end;

function UnLoadDeviceDriver:boolean;
var
  schSCManager, schService: SC_HANDLE;
  ServiceStatus: TServiceStatus;
begin
  schSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if schSCManager <> 0 then
  begin
    schService := OpenService(SchSCManager, DRIVER_NAME_NT, SERVICE_ALL_ACCESS);
    if schService <> 0 then
    begin
      ControlService(schService, SERVICE_CONTROL_STOP, ServiceStatus);
      DeleteService(schService);
      CloseServiceHandle(schService);
    end;
    CloseServiceHandle(schSCManager);
  end;
end;

function CreateDrive: Boolean;
begin
  UnLoadDeviceDriver;
  Result := LoadDeviceDriver;
end;

function CTL_CODE(Device,Funct,Method,Access:word):DWord;
begin
  result:=(Device SHL 16) or (access SHL 14) or (funct SHL 2) or method;
end;

function ReadMSRNT(ulECX:DWord; var MSRreg:tmsr):boolean;
var
  IOCTL_READ_MSR: longint;
  ReturnedLength: DWord;
  IoctlResult: boolean;
  buf:array[1..2] of DWord;
begin
  IOCTL_READ_MSR := CTL_CODE(MSR_TYPE, $981, METHOD_BUFFERED, FILE_ANY_ACCESS);
	IoctlResult := DeviceIoControl(
					DriverHandle,				// Handle to device
					IOCTL_READ_MSR,		  // RDMSR code
					@ulECX,				      // Buffer to driver
					sizeof(ulECX),		  // Length of buffer in bytes.
					@buf,				        // Buffer from driver.
					sizeof(buf),		    // Length of buffer in bytes.
					ReturnedLength,	    // Bytes placed in outbuf.
					nil				          //
					);
  MSRreg.LowPart:=buf[1];
  MSRreg.HiPart:=buf[2];
  result := IoctlResult;
end;

function WriteMSRNT(ulECX:DWord;MSRreg:tmsr):boolean;
var
  IOCTL_WRITE_MSR:longint;
  ReturnedLength:DWord;
  IoctlResult:boolean;
  buf:array[1..3] of DWord;
begin
  buf[1]:=ulECX;
  buf[2]:=MSRreg.LowPart;
  buf[3]:=MSRreg.HiPart;

  IOCTL_WRITE_MSR:=CTL_CODE(MSR_TYPE, $982, METHOD_BUFFERED, FILE_ANY_ACCESS);
  IoctlResult:=DeviceIoControl(
					DriverHandle,				// Handle to device
					IOCTL_WRITE_MSR,	  // WRMSR code
					@buf,				        // Buffer to driver
					sizeof(buf),		    // Length of buffer in bytes.
					@result,			      // Buffer from driver.
					sizeof(result),		  // Length of buffer in bytes.
					ReturnedLength,	    // Bytes placed in outbuf.
					nil				          // nil
					);
  result:=IoctlResult;
end;



function PortDWordInNT(Port : DWord) : DWord;
var
  IOCTL_PCI_READ_PORT_ULONG:longint;
  data:DWord;
  IoctlResult:boolean;
	ReturnedLength:DWord;
begin
  data:=0;
  IOCTL_PCI_READ_PORT_ULONG:=CTL_CODE( PCI_TYPE, $902, METHOD_BUFFERED, FILE_READ_ACCESS );
  IoctlResult:=DeviceIoControl(
                        DriverHandle,
                        IOCTL_PCI_READ_PORT_ULONG,
                        @port,
                        sizeof(DWord),
                        @data,
                        sizeof(data),
                        ReturnedLength,
                        nil
                        );
  assert(IoctlResult);
	assert(ReturnedLength=sizeof(data));
  result:=data;
end;

function PortWordInNT(Port : DWord) : Word;
var
  IOCTL_PCI_READ_PORT_USHORT:longint;
  data:Word;
  IoctlResult:boolean;
	ReturnedLength:DWord;
begin
  data:=0;
  IOCTL_PCI_READ_PORT_USHORT:=CTL_CODE( PCI_TYPE, $901, METHOD_BUFFERED, FILE_READ_ACCESS );
  IoctlResult:=DeviceIoControl(
                        DriverHandle,
                        IOCTL_PCI_READ_PORT_USHORT,
                        @port,
                        sizeof(DWord),
                        @data,
                        sizeof(data),
                        ReturnedLength,
                        nil
                        );
  assert(IoctlResult);
	assert(ReturnedLength=sizeof(data));
  result:=data;
end;

function PortInNT(Port : DWord) : Byte;
var
  IOCTL_PCI_READ_PORT_UCHAR:longint;
  data:byte;
  IoctlResult:boolean;
	ReturnedLength:DWord;
begin
  data:=0;
  IOCTL_PCI_READ_PORT_UCHAR:=CTL_CODE( PCI_TYPE, $900, METHOD_BUFFERED, FILE_READ_ACCESS );
  IoctlResult:=DeviceIoControl(
                        DriverHandle,
                        IOCTL_PCI_READ_PORT_UCHAR,
                        @Port,
                        sizeof(DWord),
                        @data,
                        sizeof(data),
                        ReturnedLength,
                        nil
                        );
  assert(IoctlResult);
  assert(ReturnedLength=sizeof(data));
  result:=data;
end;

procedure PortDWordOutNT(Port : DWord; Data : DWord);
type
  TPCIInputBuffer=packed record
    PortNumber:DWord;
    DWordData:DWord;
  end;
var
  IOCTL_PCI_WRITE_PORT_ULONG:longint;
  IoctlResult:boolean;
  ReturnedLength:DWord;
  DataLength:DWord;
  PCIInputBuffer:TPCIInputBuffer;
begin
  IOCTL_PCI_WRITE_PORT_ULONG:=CTL_CODE(PCI_TYPE,  $912, METHOD_BUFFERED, FILE_WRITE_ACCESS);
  PCIInputBuffer.DWordData:=data;
	PCIInputBuffer.PortNumber:=port;
  DataLength:=32+sizeof(PCIInputBuffer.DWordData);
  IoctlResult:=DeviceIoControl(
                        DriverHandle,
                        IOCTL_PCI_WRITE_PORT_ULONG,
                        @PCIInputBuffer,
                        DataLength,
                        nil,
                        0,
                        ReturnedLength,
                        nil
                        );
  assert(IoctlResult);
end;

procedure PortWordOutNT(Port : DWord; Data : Word);
type
  TPCIInputBuffer=packed record
    PortNumber:DWord;
    WordData:Word;
  end;
var
  IOCTL_PCI_WRITE_PORT_USHORT:longint;
  IoctlResult:boolean;
  ReturnedLength:DWord;
  DataLength:DWord;
  PCIInputBuffer:TPCIInputBuffer;
begin
  IOCTL_PCI_WRITE_PORT_USHORT:=CTL_CODE(PCI_TYPE,  $911, METHOD_BUFFERED, FILE_WRITE_ACCESS);
  PCIInputBuffer.WordData:=data;
	PCIInputBuffer.PortNumber:=port;
  DataLength:=32+sizeof(PCIInputBuffer.WordData);
  IoctlResult:=DeviceIoControl(
                        DriverHandle,
                        IOCTL_PCI_WRITE_PORT_USHORT,
                        @PCIInputBuffer,
                        DataLength,
                        nil,
                        0,
                        ReturnedLength,
                        nil
                        );
  assert(IoctlResult);
end;

procedure PortOutNT(Port : DWord; Data : Byte);
type
  TPCIInputBuffer=packed record
    PortNumber:DWord;
    CharData:byte;
  end;
var
  IOCTL_PCI_WRITE_PORT_UCHAR:longint;
  IoctlResult:boolean;
  ReturnedLength:DWord;
  DataLength:DWord;
  PCIInputBuffer:TPCIInputBuffer;
begin
  IOCTL_PCI_WRITE_PORT_UCHAR:=CTL_CODE(PCI_TYPE,  $910, METHOD_BUFFERED, FILE_WRITE_ACCESS);
  PCIInputBuffer.CharData:=data;
	PCIInputBuffer.PortNumber:=port;
  DataLength:=32+sizeof(PCIInputBuffer.CharData);
  IoctlResult:=DeviceIoControl(
                        DriverHandle,
                        IOCTL_PCI_WRITE_PORT_UCHAR,
                        @PCIInputBuffer,
                        DataLength,
                        nil,
                        0,
                        ReturnedLength,
                        nil
                        );
  assert(IoctlResult);
end;

Procedure GetPCIRDWord( dwBus, dwDev, dwFunc, offs : byte; var pdata:DWord);
var
  Data: Cardinal;
begin
  Data := $80000000 or (longint(dwBus) shl 16) or ((longint(dwDev) and $1f) shl 11) or
            ((longint(dwFunc) and $07 ) shl 8) or (offs and $fc);
  PortDWordOutNT(PCRAddress, Data);
  pData := PortDWOrdInNT(PCRData);
end;






end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区在线视频| 日韩欧美高清在线| 日韩欧美久久久| 亚洲欧洲精品成人久久奇米网| 天堂av在线一区| 国产aⅴ综合色| 日韩欧美国产午夜精品| 亚洲美女在线国产| 懂色中文一区二区在线播放| 欧美精品亚洲一区二区在线播放| 中文无字幕一区二区三区| 日韩不卡一区二区三区 | 国产精品久久久久毛片软件| 日韩高清中文字幕一区| 色狠狠综合天天综合综合| 久久精品视频免费| 久久99精品国产麻豆不卡| 欧美日韩精品一区二区| 亚洲精品免费在线| 99vv1com这只有精品| 久久嫩草精品久久久精品| 蜜桃久久av一区| 精品国产露脸精彩对白| 亚洲日本韩国一区| k8久久久一区二区三区 | 欧美福利电影网| 一区二区三区产品免费精品久久75| 风间由美性色一区二区三区| wwwwxxxxx欧美| 精品一区二区三区视频| 欧美tickle裸体挠脚心vk| 免费黄网站欧美| 日韩精品一区二| 另类小说色综合网站| 日韩欧美一级在线播放| 美日韩一区二区三区| 日韩欧美在线123| 免费看日韩精品| 欧美成人高清电影在线| 精品一区二区三区免费观看| 日韩欧美中文字幕精品| 激情图片小说一区| 久久亚洲综合av| 国产精品亚洲午夜一区二区三区| 久久久久久电影| 成人h动漫精品| 中文字幕永久在线不卡| 日本乱人伦aⅴ精品| 一区二区三区四区精品在线视频| 在线观看视频一区| 日韩国产精品久久| 日韩美女视频一区二区在线观看| 九一九一国产精品| 国产欧美精品区一区二区三区| 播五月开心婷婷综合| 亚洲精品ww久久久久久p站| 欧美人与性动xxxx| 黄色日韩三级电影| 国产精品乱码一区二区三区软件| 色综合天天综合网天天狠天天| 九九精品一区二区| 中文字幕精品在线不卡| 91成人在线免费观看| 日韩国产欧美视频| 中文字幕免费不卡| 欧美视频日韩视频| 国产一区二区在线观看视频| 中文字幕中文字幕一区二区| 欧美性色欧美a在线播放| 免费成人美女在线观看| 国产精品久久久久久久久动漫| 欧美色手机在线观看| 精品一区二区久久| 亚洲精品久久久蜜桃| 欧美成人bangbros| 91啪亚洲精品| 久久不见久久见免费视频1| 国产精品国产三级国产有无不卡 | 国产精品 日产精品 欧美精品| 亚洲黄色在线视频| 精品成人在线观看| 91丨九色丨国产丨porny| 麻豆国产精品视频| 亚洲一区二区在线视频| 国产亚洲短视频| 91精品国产一区二区三区蜜臀| 国产成人av资源| 麻豆专区一区二区三区四区五区| 亚洲欧美偷拍三级| 久久久久久久久蜜桃| 欧美精品色综合| 色系网站成人免费| 丁香六月综合激情| 国内精品视频666| 亚洲v中文字幕| 亚洲老司机在线| 中文字幕成人av| 久久亚区不卡日本| 91精品在线免费| 欧美日韩另类一区| 在线视频你懂得一区二区三区| 成人综合在线观看| 国产乱码精品一区二区三| 免费在线观看日韩欧美| 亚洲一区二区在线视频| 亚洲乱码中文字幕| 最新久久zyz资源站| 亚洲国产成人一区二区三区| 精品国产91洋老外米糕| 欧美一级欧美一级在线播放| 欧美视频一区二区三区在线观看| 不卡欧美aaaaa| 成人av资源在线观看| 国产精品一区二区在线观看不卡| 国内成+人亚洲+欧美+综合在线| 亚洲mv在线观看| 婷婷亚洲久悠悠色悠在线播放| 亚洲成人中文在线| 亚洲成人精品影院| 舔着乳尖日韩一区| 日韩av中文字幕一区二区| 婷婷亚洲久悠悠色悠在线播放| 五月天视频一区| 日韩在线卡一卡二| 日本美女一区二区| 精品在线亚洲视频| 国产在线精品一区二区| 国产成人综合亚洲网站| 成人激情小说乱人伦| 91免费观看国产| 欧美婷婷六月丁香综合色| 欧美精品一二三四| 精品国产乱码久久久久久蜜臀| 精品成人佐山爱一区二区| 日本一区二区视频在线| 国产精品麻豆欧美日韩ww| 一区二区三区四区在线免费观看| 亚洲一区电影777| 麻豆精品精品国产自在97香蕉| 精品一区二区在线看| a美女胸又www黄视频久久| 欧美中文字幕不卡| 欧美大片在线观看| 国产精品久久久久久久久晋中 | 综合欧美亚洲日本| 一区二区三区影院| 蜜桃av一区二区在线观看| 国产乱子轮精品视频| 色综合天天做天天爱| 在线不卡欧美精品一区二区三区| 日韩免费福利电影在线观看| 国产精品拍天天在线| 亚洲一二三专区| 国产一区 二区| 在线日韩av片| 久久久久综合网| 亚洲一区二区三区四区在线观看| 久久精品国产一区二区| 91在线精品一区二区三区| 91精品国产91热久久久做人人| 久久这里只有精品6| 亚洲宅男天堂在线观看无病毒| 国产在线一区观看| 在线看不卡av| 久久久久亚洲蜜桃| 亚洲成人动漫在线观看| 国产成人av福利| 制服丝袜中文字幕亚洲| 国产精品麻豆一区二区| 蜜桃一区二区三区在线| 色视频欧美一区二区三区| 精品成人在线观看| 性做久久久久久| 91麻豆免费观看| 久久久久久久久久久久久夜| 午夜激情一区二区三区| av在线一区二区| 久久综合久久综合久久| 午夜精彩视频在线观看不卡| 99久久久无码国产精品| 久久九九99视频| 蜜桃在线一区二区三区| 欧美日韩一区久久| 一区二区三区精品在线| 成人网在线播放| 久久久精品日韩欧美| 麻豆freexxxx性91精品| 欧美日韩综合在线| 亚洲免费伊人电影| 不卡av免费在线观看| 久久一区二区视频| 精品一区二区在线视频| 日韩一区二区在线观看视频播放| 亚洲国产精品一区二区www| 91免费观看在线| 亚洲欧美日韩在线播放| av电影天堂一区二区在线观看| 国产精品视频观看| 成人国产精品视频| 国产欧美一区二区精品婷婷|