dd offset _BlockIoEnumerateDeviceClass@12 ; BlockIoEnumerateDeviceClass(x,x,x)
dd offset _BlockIoOpen@8 ; BlockIoOpen(x, x)
dd offset _BlockIoClose@4 ; BlockIoClose(x)
dd offset _BlockIoReadUsingCache@16 ; BlockIoReadUsingCache(x,x,x,x)
dd offset _BlockIoWrite@16 ; BlockIoWrite(x,x,x,x)
dd offset _BlockIoGetInformation@8 ; BlockIoGetInformation(x,x)
dd offset _BlockIoSetInformation@8 ; BlockIoSetInformation(x,x)
dd offset ?handleInputChar@OsxmlMeter@@UAEHG@Z ; OsxmlMeter::handleInputChar(ushort)
dd offset _BlockIoCreate@12 ; BlockIoCreate(x,x,x)
For console (_ConsoleDeviceFunctionTable) these are:
dd offset _UdpEnumerateDeviceClass@12 ; UdpEnumerateDeviceClass(x,x,x)
dd offset _ConsoleOpen@8 ; ConsoleOpen(x,x)
dd offset _ConsoleClose@4 ; ConsoleClose(x)
dd offset _ConsoleRead@16 ; ConsoleRead(x,x,x,x)
dd offset _ConsoleWrite@16 ; ConsoleWrite(x,x,x,x)
dd offset _ConsoleGetInformation@8 ; ConsoleGetInformation(x,x)
dd offset _ConsoleSetInformation@8 ; ConsoleSetInformation(x,x)
dd offset _ConsoleReset@4 ; ConsoleReset(x)
For serial port (_SerialPortFunctionTable) these are:
dd offset _UdpEnumerateDeviceClass@12 ; UdpEnumerateDeviceClass(x,x,x)
dd offset _SpClose@4 ; SpClose(x)
dd offset _SpRead@16 ; SpRead(x,x,x,x)
dd offset _SpWrite@16 ; SpWrite(x,x,x,x)
dd offset _SpGetInformation@8 ; SpGetInformation(x,x)
dd offset _SpSetInformation@8 ; SpSetInformation(x,x)
dd offset _SpReset@4 ; SpReset(x)
For PXE (_UdpFunctionTable):
dd offset _UdpEnumerateDeviceClass@12 ; UdpEnumerateDeviceClass(x,x,x)
dd offset _UdpOpen@8 ; UdpOpen(x,x)
dd offset _SpClose@4 ; SpClose(x)
dd offset _UdpRead@16 ; UdpRead(x,x,x,x)
dd offset _UdpWrite@16 ; UdpWrite(x,x,x,x)
dd offset _UdpGetInformation@8 ; UdpGetInformation(x,x)
dd offset _UdpSetInformation@8 ; UdpSetInformation(x,x)
dd offset _UdpReset@4 ; UdpReset(x)
你可能注意到有些函數(shù)的返回在不同類別之間會(huì)存在共享(例如:serial port和PXE) 。
接著LOADER_PARAMETER_BLOCK結(jié)構(gòu)通過OslInitializeLoaderBlock進(jìn)行初始化,LOADER_PARAMETER_BLOCK包含了一些系統(tǒng)狀態(tài)信息,如:啟動(dòng)設(shè)備、ACPI、SMBIOS表等 。下面為LOADER_PARAMETER_BLOCK在Vista64位版本的結(jié)構(gòu):
0x000 LoadOrderListHead : struct _LIST_ENTRY
0x010 MemoryDescriptorListHead : struct _LIST_ENTRY
0x020 BootDriverListHead : struct _LIST_ENTRY
0x030 KernelStack : Uint8B
0x038 Prcb : Uint8B
0x040 Process : Uint8B
0x048 Thread : Uint8B
0x050 RegistryLength : Uint4B
0x058 RegistryBase : Ptr64 to Void
0x060 ConfigurationRoot : Ptr64 to struct _CONFIGURATION_COMPONENT_DATA
0x068 ArcBootDeviceName : Ptr64 to Char
0x070 ArcHalDeviceName : Ptr64 to Char
0x078 NtBootPathName : Ptr64 to Char
0x080 NtHalPathName : Ptr64 to Char
0x088 LoadOptions : Ptr64 to Char
0x090 NlsData : Ptr64 to struct _NLS_DATA_BLOCK
0x098 ArcDiskInformation : Ptr64 to struct _ARC_DISK_INFORMATION
0x0a0 OemFontFile : Ptr64 to Void
0x0a8 SetupLoaderBlock : Ptr64 to struct _SETUP_LOADER_BLOCK
0x0b0 Extension : Ptr64 to struct _LOADER_PARAMETER_EXTENSION
0x000 Size : Uint4B
0x004 Profile : struct _PROFILE_PARAMETER_BLOCK
0x014 MajorVersion : Uint4B
0x018 MinorVersion : Uint4B
0x020 EmInfFileImage : Ptr64 to Void
0x028 EmInfFileSize : Uint4B
0x030 TriageDumpBlock : Ptr64 to Void
0x038 LoaderPagesSpanned : Uint4B
0x040 HeadlessLoaderBlock : Ptr64 to struct _HEADLESS_LOADER_BLOCK
0x048 SMBiosEPSHeader : Ptr64 to struct _SMBIOS_TABLE_HEADER
0x050 DrvDBImage : Ptr64 to Void
0x058 DrvDBSize : Uint4B
0x060 NetworkLoaderBlock : Ptr64 to struct _NETWORK_LOADER_BLOCK bytes
0x068 FirmwareDescriptorListHead : struct _LIST_ENTRY
0x078 AcpiTable : Ptr64 to Void
0x080 AcpiTableSize : Uint4B
0x084 BootViaWinload : Bitfield Pos 0, 1 Bit
0x084 BootViaEFI : Bitfield Pos 1, 1 Bit
0x084 Reserved : Bitfield Pos 2, 30 Bits
0x088 LoaderPerformanceData : Ptr64 to struct _LOADER_PERFORMANCE_DATA
推薦閱讀
- 圖 AVG Anti-Virus可保護(hù)Vista Beta 2實(shí)例
- 實(shí)戰(zhàn)破解WinVista Beta2的本地密碼
- 圖 某人試了下傳說中的vista
- 圖 小技巧一則:避免微軟Vista瀏覽器的崩潰
- 實(shí)戰(zhàn):破解 Vista Beta 2 的本地密碼
- 圖 Vista工作站安全防護(hù)有高招兒
- 圖 Vista SP1最新下載地址及安裝過程
- 打擊非法用戶登錄--Vista帳戶鎖定
- 微軟認(rèn)為Vista比其他操作系統(tǒng)更加安全
- 對Windows Vista中的文件和文件夾加密
