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

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

?? bioshelp.pas

?? 這是為工商所開發的工商收費簿套打軟件,借初學者學習
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
Unit BiosHelp;

{$ALIGN ON}
{$MINENUMSIZE 4}

Interface

Uses
   Windows;

Type
   PRomBiosDump = ^TRomBiosDump;
   TRomBiosDump = Array[$000F0000..$000FFFFF] Of byte;

Type
   TReadRomBiosMethod = (
      rrbmAutomatic,                    { Autodetect OS type and use proper method }
      rrbmGeneric,                      { Use 16-bit COM program to dump the BIOS  }
      rrbmMemory,                       { Read from memory (Win9x)                 }
      rrbmPhysical                      { Read from physical memory object (WinNT) }
      );

Function ReadRomBios(Var Dump: TRomBiosDump; Method: TReadRomBiosMethod;
   Timeout: dword = INFINITE): Boolean;

Function GetRomBiosBuffer(Const Dump: TRomBiosDump; Address: Pointer;
   Var Buffer; BufferSize: cardinal): cardinal;
Function GetRomBiosString(Const Dump: TRomBiosDump; Address: Pointer): String;
Function GetRomBiosLongLong(Const Dump: TRomBiosDump; Address: Pointer):
   LONGLONG;
Function GetRomBiosDWord(Const Dump: TRomBiosDump; Address: Pointer): dword;
Function GetRomBiosWord(Const Dump: TRomBiosDump; Address: Pointer): word;
Function GetRomBiosByte(Const Dump: TRomBiosDump; Address: Pointer): byte;
Function GetmotherboradKey: String;     //取得系統系列號
Function Getmotherboradver: String;     //BIOS 版本
Function Getmotherboraddate: String;    //BIOS日期
Function Getmotherboradverxx: String;   //BIOS 版權信息
Function Getmotherboradname: String;    //BIOS 名稱

Implementation

{##############################################################################
#
# #
#                             GENERIC METHOD #
# #
# Create an temporary folder, save an 16bit COM program (RomDump.com) into it,
#
# execute program redirected to an file (Rom.dmp, RomDump.com simply dumps the
#
# memory range F000:0000-F000:FFFF to STDOUT), read dump file into the buffer,
#
# and finally cleanup all temporary files and directories. #
# #
# (the function RomDumpCode is x86 specific, which i wrote to generate 16-bit #
#  code with the help of the 23-bit Delphi compiler, never try to execute the #
#  pseudo-code in your program! it will not work in 32-bit protected mode) #
# #
###############################################################################
}

{ *INTERNAL* - Pseudo 16-bit code }

Type
   PRomDumpCodeInfo = ^TRomDumpCodeInfo;
   TRomDumpCodeInfo = (rdciStart, rdciEnd, rdciSize);

Function _RomDumpCode(Info: TRomDumpCodeInfo): Pointer;
Var
   CodeStart        : Pointer;
   CodeEnd          : Pointer;
Begin
   Asm
         JMP     @@End

         { *BEGIN* 16-bit code  }
         { -- never use it in your program! -- }
         { COM which writes ROM-BIOS to StdOut }
 @@Start:
         { Dump F000:0000-F000:FFFE }
         XOR     eDX, eDX  // DS = 0xF000   ; Data segment
         MOV     DH, 0F0h
         MOV     DS, eDX
         XOR     eDX, eDX  // DX = 0x0000   ; Data offset
         XOR     eCX, eCX  // CX = 0xFFFF   ; Data length
         DEC     eCX
         XOR     eBX, eBX  // BX = 0x0001   ; STDOUT (file handle)
         INC     eBX
         MOV     AH, 40h   // DosCall(0x40) ; INT21, DOS_WRITE_TO_HANDLE
         INT     21h
         JC      @@Exit    // On error exit ; AL = Error code
         { Dump F000:FFFF }
         XOR     eDX, eDX  // DS = 0xF000   ; Data segment
         MOV     DH, 0F0h
         MOV     DS, eDX
         XOR     eDX, eDX  // DX = 0xFFFF   ; Data offset
         DEC     eDX
         XOR     eCX, eCX  // CX = 0x0001   ; Data length
         INC     eCX
         MOV     eBX, eCX  // BX = 0x0001   ; STDOUT (file handle)
         MOV     AH, 40h   // DosCall(0x40) ; INT21, DOS_WRITE_TO_HANDLE
         INT     21h
         JC      @@Exit    // On error exit ; AL = Error code
         MOV     AL, 0     // no error      ; AL = 0
 @@Exit:
         MOV     AH, 4Ch   // DosCall(0x4C) ; INT21, DOS_TERMINATE_EXE
         INT     21h
 @@End:
         { *END* 16-bit code  }

         MOV     CodeStart, OFFSET @@Start
         MOV     CodeEnd, OFFSET @@End
   End;
   Case Info Of
      rdciStart:
         result := CodeStart;
      rdciEnd:
         result := CodeEnd;
      rdciSize:
         result := Pointer(cardinal(CodeEnd) - cardinal(CodeStart));
   Else
      result := Nil;
   End;
End;

{ *INTERNAL* - Save 16-bit code to file }

Function _RomDumpCodeToFile(Const FileName: String): Boolean;
Var
   ComFile          : THandle;
   Size             : cardinal;
Begin
   result := false;
   ComFile := CreateFile(pchar(FileName), GENERIC_WRITE, FILE_SHARE_READ, Nil,
      CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
   If ComFile <> INVALID_HANDLE_VALUE Then Try
      result := WriteFile(ComFile, _RomDumpCode(rdciStart)^,
         cardinal(_RomDumpCode(rdciSize)), Size, Nil) And
         (Size = cardinal(_RomDumpCode(rdciSize)));
      If Not result Then
         DeleteFile(pchar(FileName));
   Finally
      CloseHandle(ComFile);
   End;
End;

{ *INTERNAL* - Execute 16-bit code redirected to file }

Function _RomDumpCodeExecute(Const Com, Dmp: String; Timeout: dword): Boolean;
Var
   ComSpec          : String;
   si               : TStartupInfo;
   Pi               : TProcessInformation;
Begin
   result := false;
   SetLength(ComSpec, MAX_PATH);
   SetLength(ComSpec,
      GetEnvironmentVariable('ComSpec', pchar(@ComSpec[1]), MAX_PATH));
   If Length(ComSpec) > 0 Then Begin
      FillChar(si, SizeOf(TStartupInfo), 0);
      si.cb := SizeOf(TStartupInfo);
      si.dwFlags := STARTF_USESHOWWINDOW;
      si.wShowWindow := SW_HIDE;
      If CreateProcess(Nil, pchar(ComSpec + ' /C ' + Com + ' > ' + Dmp),
         Nil, Nil, false, CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP,
         Nil,
         Nil, si, Pi) Then Try
         result := WaitForSingleObject(Pi.hProcess, Timeout) <>
            WAIT_TIMEOUT;
      Finally
         CloseHandle(Pi.hProcess);
         CloseHandle(Pi.hThread);
      End;
   End;
End;

Function DirectoryExists(Const Dir: String): Boolean;
Var
   Attr             : dword;
Begin
   Attr := GetFileAttributes(pchar(Dir));
   result := (Attr <> $FFFFFFFF) And
      (Attr And FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY);
End;

{ Get BIOS dump the generic way }

Function ReadRomBios16(Var Buffer: TRomBiosDump; Timeout: dword): Boolean;
Const
   TempSub          = '~RomDmp';
   ComName          = 'RomDump.com';
   DmpName          = 'Rom.dmp';
Var
   TempPath         : String;
   TempDir          : String;
   TempIdx          : integer;
   TempIdxStr       : String;
   ComFile          : String;
   DmpFile          : String;
   DmpHandle        : THandle;
   Written          : dword;
Begin
   result := false;
   SetLength(TempPath, MAX_PATH);
   SetLength(TempPath, GetTempPath(MAX_PATH, pchar(@TempPath[1])));
   If Length(TempPath) > 0 Then Begin
      If (TempPath[Length(TempPath)] <> '\') Then
         TempPath := TempPath + '\';
      TempIdx := 0;
      Repeat
         inc(TempIdx);
         Str(TempIdx, TempIdxStr);
         TempDir := TempPath + TempSub + TempIdxStr;
      Until Not DirectoryExists(TempDir);
      If CreateDirectory(pchar(TempDir), Nil) Then Try
         TempDir := TempDir + '\';
         ComFile := TempDir + ComName;
         DmpFile := TempDir + DmpName;
         If _RomDumpCodeToFile(ComFile) Then Try
            If _RomDumpCodeExecute(ComFile, DmpFile, Timeout) Then Begin
               DmpHandle := CreateFile(pchar(DmpFile), GENERIC_READ,
                  FILE_SHARE_READ Or FILE_SHARE_WRITE, Nil,
                  OPEN_EXISTING, 0, 0);
               If DmpHandle <> INVALID_HANDLE_VALUE Then Try
                  FillChar(Buffer, SizeOf(TRomBiosDump), 0);
                  result := ReadFile(DmpHandle, Buffer,
                     SizeOf(TRomBiosDump),
                     Written, Nil) And (Written =
                     SizeOf(TRomBiosDump));
               Finally
                  CloseHandle(DmpHandle);
               End;
            End;
         Finally
            DeleteFile(pchar(DmpFile));
            DeleteFile(pchar(ComFile));
         End;
      Finally
         RemoveDirectory(pchar(TempDir));
      End;
   End;
End;

{##############################################################################
#
# #
#                           DIRECT METHOD (Win9x) #
# #
# Due to the fact that Windows 95/98/ME maps the BIOS into every Win32 process
#
# for read access it is very simple to fill the buffer from memory. #
# #
###############################################################################
}

Function ReadRomBios9x(Var Buffer: TRomBiosDump): Boolean;
Begin
   result := false;
   Try
      FillChar(Buffer, SizeOf(TRomBiosDump), 0);
      Move(Pointer(Low(TRomBiosDump))^, Buffer, SizeOf(TRomBiosDump));
      result := true;
   Except
   // ignore exceptions
   End
End;

{##############################################################################
#
# #
#                       PHYSICAL MEMORY METHOD (WinNT) #
# #
# On Windows NT the ROM BIOS is only available through the named kernel object
#
# '\Device\PhysicalMemory'. Because it is impossible to open kernel objects in
#
# user mode with standard Win32 API functions we make use of NT's nativeAPI in
#
# NtDll.dll ("NT-Layer") namely ZwOpenSection. #
# #
# (note: mostly there are two versions of every function ZwXxx and NtXxx. The #
#  only difference in kernel mode is that the NtXxx version works in conside- #
#  ration to security while ZwXxx not. But in user mode both work like NtXxx.)
#
# #
# At first the section is opened with ZwOpenSection. Normally we would proceed
#
# ZwMapViewOfSection, ZwUnmapViewOfSection, and NtClose. But the functions are

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情图片小说视频| 亚洲一区二区三区四区在线免费观看| 欧美国产视频在线| 日韩国产高清影视| 色偷偷久久一区二区三区| 日韩欧美久久一区| 亚洲五码中文字幕| av亚洲精华国产精华精华| 精品国产凹凸成av人网站| 亚洲综合激情另类小说区| 成人不卡免费av| 欧美r级在线观看| 日韩综合一区二区| 91美女视频网站| 欧美国产1区2区| 国产一区二区在线电影| 欧美狂野另类xxxxoooo| 亚洲与欧洲av电影| 色综合久久久久网| 18成人在线视频| 成人av在线一区二区三区| 久久综合狠狠综合| 成人午夜视频免费看| 欧美一区二区高清| 丝袜美腿亚洲综合| 欧美日韩在线一区二区| 亚洲精选视频在线| 一本到高清视频免费精品| 国产精品成人一区二区三区夜夜夜| 国产一区二区精品久久91| 日韩色视频在线观看| 免费在线一区观看| 欧美大片国产精品| 国产综合成人久久大片91| 精品国产亚洲一区二区三区在线观看| 日韩有码一区二区三区| 欧美一级免费大片| 久久成人18免费观看| 26uuu另类欧美亚洲曰本| 国产一区欧美一区| 国产精品网站导航| 成人小视频在线| 亚洲精品免费在线播放| 欧美在线你懂的| 日本欧美一区二区在线观看| 日韩精品中午字幕| 国产福利一区在线观看| 日韩一区日韩二区| 欧美日韩国产区一| 中文字幕一区二区视频| 99re视频这里只有精品| 一区二区在线免费观看| 欧美日韩国产高清一区二区三区| 亚洲福利国产精品| 精品国产乱码久久| 99视频热这里只有精品免费| 一区二区欧美国产| 91精品久久久久久久久99蜜臂| 久久精品国产99久久6| 一区二区三区在线影院| 欧美日韩一级片网站| 日本视频一区二区| 国产精品久久久久影院老司| 在线观看国产91| 精品午夜久久福利影院 | 日韩av中文在线观看| 日韩欧美国产精品一区| 成人av资源下载| 日韩黄色一级片| 国产精品三级av| 欧美一级片免费看| 色婷婷精品大视频在线蜜桃视频| 日本不卡视频一二三区| 国产精品福利电影一区二区三区四区 | 亚洲精品中文字幕乱码三区| 欧美日韩国产高清一区二区三区 | 国内精品国产成人国产三级粉色| 国产精品福利电影一区二区三区四区| 欧美视频一区二| 高潮精品一区videoshd| 天堂av在线一区| 亚洲精品久久嫩草网站秘色| 欧美精品一区男女天堂| 欧美日韩一级片网站| www.亚洲激情.com| 韩国精品久久久| 视频一区二区欧美| 亚洲免费在线视频| 国产欧美视频在线观看| 日韩视频免费观看高清在线视频| 99精品视频在线免费观看| 国产乱码精品一区二区三区五月婷| 亚洲午夜久久久久久久久久久| 国产女人18毛片水真多成人如厕 | 欧美国产在线观看| 欧美成人bangbros| 欧美精品亚洲二区| 在线观看91视频| 91免费国产在线| 成人福利在线看| 国产成人精品免费在线| 精品一区二区在线免费观看| 天堂精品中文字幕在线| 洋洋成人永久网站入口| 国产精品国产三级国产aⅴ中文 | 欧美精品亚洲一区二区在线播放| 91女厕偷拍女厕偷拍高清| 成人性色生活片| 国产成人aaaa| 粉嫩一区二区三区在线看| 韩国一区二区三区| 最好看的中文字幕久久| 国产精品黄色在线观看| 成人免费在线视频观看| 国产精品高清亚洲| 亚洲欧美日韩一区二区三区在线观看| 国产精品美女久久久久aⅴ| 国产精品久久一级| 亚洲三级在线免费观看| 亚洲美女视频一区| 亚洲一区二区四区蜜桃| 亚洲黄一区二区三区| 一区二区三区不卡在线观看 | 久久久久久免费网| 久久精品欧美一区二区三区不卡| 久久精品一区四区| 国产精品网站在线| 亚洲日本丝袜连裤袜办公室| 有码一区二区三区| 天天综合日日夜夜精品| 美腿丝袜亚洲一区| 国产成人av一区二区| av中文字幕在线不卡| 欧美在线观看一二区| 欧美一区永久视频免费观看| 日韩免费性生活视频播放| 国产日韩欧美不卡| 亚洲日本欧美天堂| 免费国产亚洲视频| 国产成人一区在线| 91久久人澡人人添人人爽欧美| 精品视频在线视频| 2022国产精品视频| 亚洲图片你懂的| 日韩不卡手机在线v区| 国产成人午夜视频| 在线观看亚洲精品| 337p日本欧洲亚洲大胆精品| 亚洲日本在线观看| 久久精品国产网站| 91色婷婷久久久久合中文| 337p亚洲精品色噜噜噜| 国产精品系列在线| 日韩精品久久理论片| 国产91在线观看| 欧美日本在线播放| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲免费观看高清完整版在线观看| 免费成人小视频| 91蜜桃婷婷狠狠久久综合9色| 日韩欧美成人一区| 综合久久综合久久| 韩国中文字幕2020精品| 欧美综合一区二区| 国产精品你懂的在线欣赏| 丝袜美腿亚洲综合| 色天天综合久久久久综合片| 精品国产第一区二区三区观看体验| 夜夜嗨av一区二区三区中文字幕| 黄色精品一二区| 欧美日韩在线综合| 《视频一区视频二区| 国内精品写真在线观看| 欧美日韩mp4| 亚洲精品久久嫩草网站秘色| 国产宾馆实践打屁股91| 日韩免费在线观看| 水野朝阳av一区二区三区| 色综合亚洲欧洲| 亚洲大尺度视频在线观看| 国产美女久久久久| 日韩欧美123| 视频一区欧美精品| 欧美人伦禁忌dvd放荡欲情| 亚洲激情网站免费观看| 97se亚洲国产综合自在线不卡| 久久久午夜精品| 国产原创一区二区三区| 日韩欧美卡一卡二| 久久精品国产精品亚洲综合| 91麻豆精品国产91久久久资源速度 | 国产精品午夜在线观看| 久草在线在线精品观看| 欧美一级在线免费| 日韩av在线播放中文字幕| 欧美日韩一区久久| 亚洲18女电影在线观看| 欧美性一级生活| 丝袜国产日韩另类美女| 91麻豆精品国产91久久久久久 |