22#include "../ntldr/ntldropts.h"
29#define MAX_COM_PORTS 4
30#define MAX_LPT_PORTS 3
33#define MOUSE_TYPE_NONE 0
35#define MOUSE_TYPE_MICROSOFT 1
37#define MOUSE_TYPE_LOGITECH 2
39#define MOUSE_TYPE_WHEELZ 3
41#define MOUSE_TYPE_MOUSESYSTEMS 4
43#define INPORT_REGISTER_CONTROL 0x00
44#define INPORT_REGISTER_DATA 0x01
45#define INPORT_REGISTER_SIGNATURE 0x02
47#define INPORT_REG_MODE 0x07
48#define INPORT_RESET 0x80
49#define INPORT_MODE_BASE 0x10
50#define INPORT_TEST_IRQ 0x16
51#define INPORT_SIGNATURE 0xDE
53#define PIC1_CONTROL_PORT 0x20
54#define PIC1_DATA_PORT 0x21
55#define PIC2_CONTROL_PORT 0xA0
56#define PIC2_DATA_PORT 0xA1
61#define CONTROLLER_REGISTER_STATUS 0x64
62#define CONTROLLER_REGISTER_CONTROL 0x64
63#define CONTROLLER_REGISTER_DATA 0x60
66#define CONTROLLER_COMMAND_READ_MODE 0x20
67#define CONTROLLER_COMMAND_WRITE_MODE 0x60
68#define CONTROLLER_COMMAND_GET_VERSION 0xA1
69#define CONTROLLER_COMMAND_MOUSE_DISABLE 0xA7
70#define CONTROLLER_COMMAND_MOUSE_ENABLE 0xA8
71#define CONTROLLER_COMMAND_TEST_MOUSE 0xA9
72#define CONTROLLER_COMMAND_SELF_TEST 0xAA
73#define CONTROLLER_COMMAND_KEYBOARD_TEST 0xAB
74#define CONTROLLER_COMMAND_KEYBOARD_DISABLE 0xAD
75#define CONTROLLER_COMMAND_KEYBOARD_ENABLE 0xAE
76#define CONTROLLER_COMMAND_WRITE_MOUSE_OUTPUT_BUFFER 0xD3
77#define CONTROLLER_COMMAND_WRITE_MOUSE 0xD4
80#define CONTROLLER_STATUS_OUTPUT_BUFFER_FULL 0x01
81#define CONTROLLER_STATUS_INPUT_BUFFER_FULL 0x02
82#define CONTROLLER_STATUS_SELF_TEST 0x04
83#define CONTROLLER_STATUS_COMMAND 0x08
84#define CONTROLLER_STATUS_UNLOCKED 0x10
85#define CONTROLLER_STATUS_MOUSE_OUTPUT_BUFFER_FULL 0x20
86#define CONTROLLER_STATUS_GENERAL_TIMEOUT 0x40
87#define CONTROLLER_STATUS_PARITY_ERROR 0x80
88#define AUX_STATUS_OUTPUT_BUFFER_FULL (CONTROLLER_STATUS_OUTPUT_BUFFER_FULL | \
89 CONTROLLER_STATUS_MOUSE_OUTPUT_BUFFER_FULL)
92#define CONTROLLER_TIMEOUT 250
104#if !defined(SARCH_XBOX)
112 BiosRegs.
d.
eax = 0xC100;
113 Int386(0x15, &BiosRegs, &BiosRegs);
121 WARN(
"Int 15h AH=C1h call failed\n");
145 if (PartialResourceList ==
NULL)
147 ERR(
"Failed to allocate resource descriptor\n");
152 PartialResourceList->
Version = 1;
154 PartialResourceList->
Count = 1;
175 TRACE(
"Reading disk geometry failed\n");
179 TRACE(
"Disk %x: %u Cylinders %u Heads %u Sectors %u Bytes\n",
188 return PartialResourceList;
209 if (PartialResourceList ==
NULL)
211 ERR(
"Failed to allocate resource descriptor\n");
217 PartialResourceList->
Version = 0;
219 PartialResourceList->
Count = 1;
225 PartialDescriptor->
Flags = 0;
236 TRACE(
"System docked\n");
249 "Docking State Information",
267 ULONG FoundNodeCount;
270 ULONG PnpBufferSizeLimit;
277 TRACE(
"PnP-BIOS not supported\n");
281 TRACE(
"PnP-BIOS supported\n");
282 TRACE(
"Signature '%c%c%c%c'\n",
289 TRACE(
"PnP-BIOS function 'Get Number of System Device Nodes' not supported\n");
296 if (
x != 0 || NodeSize == 0 || NodeCount == 0)
298 ERR(
"PnP-BIOS failed to enumerate device nodes\n");
301 TRACE(
"MaxNodeSize %u NodeCount %u\n", NodeSize, NodeCount);
302 TRACE(
"Estimated buffer size %u\n", NodeSize * NodeCount);
306 + (NodeSize * NodeCount);
309 if (PartialResourceList ==
NULL)
311 ERR(
"Failed to allocate resource descriptor\n");
317 PartialResourceList->
Version = 1;
319 PartialResourceList->
Count = 1;
326 Ptr = (
char *)(PartialResourceList + 1);
335 for (
i = 0;
i < 0xFF;
i++)
344 TRACE(
"Node: %u Size %u (0x%x)\n",
349 if (PnpBufferSize +
DeviceNode->Size > PnpBufferSizeLimit)
351 ERR(
"Buffer too small! Ignoring remaining device nodes. (i = %d)\n",
i);
361 if (FoundNodeCount >= NodeCount)
371 TRACE(
"Real buffer size: %u\n", PnpBufferSize);
446 for (
i = 0;
i < 4;
i++)
458 TRACE(
"Mouse data: %x %x %x %x\n",
462 for (
i = 0;
i < 4; ++
i)
483 TRACE(
"Microsoft Mouse with 3-buttons detected\n");
487 TRACE(
"Microsoft Wheel Mouse detected\n");
492 TRACE(
"Microsoft Mouse with 2-buttons detected\n");
532 if (
c == 0x08 ||
c == 0x28)
575 TRACE(
"DetectSerialPointerPeripheral()\n");
600 for (
i = 0;
i < 7;
i++)
660 for (
k = 0;
k <
i -
j;
k++)
694 if (PartialResourceList ==
NULL)
696 ERR(
"Failed to allocate resource descriptor\n");
701 PartialResourceList->
Version = 1;
703 PartialResourceList->
Count = 0;
720#if !defined(SARCH_XBOX)
753 ULONG OptionLength, PortBitmap,
i;
766 if (OptionLength < (
sizeof(
"NOSERIALMICE=COM9") - 1))
770 Option +=
sizeof(
"NOSERIALMICE=COM") - 1;
771 OptionLength -=
sizeof(
"NOSERIALMICE=COM") - 1;
775 for (
i = 0;
i < OptionLength;
i += 2)
801 ULONG ControllerNumber = 0;
807 TRACE(
"DetectSerialPorts()\n");
813 Base = MachGetSerialPort(
i, &Irq);
817 TRACE(
"Found COM%u port at 0x%x\n",
i + 1,
Base);
827 if (PartialResourceList ==
NULL)
829 ERR(
"Failed to allocate resource descriptor! Ignoring remaining serial ports. (i = %lu, Count = %lu)\n",
836 PartialResourceList->
Version = 1;
838 PartialResourceList->
Count = 3;
845 PartialDescriptor->
u.
Port.Start.LowPart =
Base;
846 PartialDescriptor->
u.
Port.Start.HighPart = 0x0;
847 PartialDescriptor->
u.
Port.Length = 8;
856 PartialDescriptor->
u.
Interrupt.Affinity = 0xFFFFFFFF;
862 PartialDescriptor->
Flags = 0;
892#if !defined(SARCH_XBOX)
904 ULONG ControllerNumber = 0;
908 TRACE(
"DetectParallelPorts() called\n");
923 TRACE(
"Parallel port %u: %x\n", ControllerNumber,
Base);
930 if (Irq[
i] != (
ULONG) - 1)
934 if (PartialResourceList ==
NULL)
936 ERR(
"Failed to allocate resource descriptor! Ignoring remaining parallel ports. (i = %lu)\n",
i);
942 PartialResourceList->
Version = 1;
944 PartialResourceList->
Count = (Irq[
i] != (
ULONG) - 1) ? 2 : 1;
951 PartialDescriptor->
u.
Port.Start.LowPart =
Base;
952 PartialDescriptor->
u.
Port.Start.HighPart = 0x0;
953 PartialDescriptor->
u.
Port.Length = 3;
956 if (Irq[
i] != (
ULONG) - 1)
964 PartialDescriptor->
u.
Interrupt.Affinity = 0xFFFFFFFF;
982 TRACE(
"DetectParallelPorts() done\n");
998 for (Loops = 0; Loops < 100; Loops++)
1013 if (Scancode != 0xFA)
1029 if (Scancode != 0xAB)
1045 if (Scancode != 0x41)
1072 if (PartialResourceList ==
NULL)
1074 ERR(
"Failed to allocate resource descriptor\n");
1080 PartialResourceList->
Version = 1;
1082 PartialResourceList->
Count = 1;
1096 Int386(0x16, &Regs, &Regs);
1101 KeyboardData->
Type = 4;
1113 PartialResourceList,
1132 if (PartialResourceList ==
NULL)
1134 ERR(
"Failed to allocate resource descriptor\n");
1140 PartialResourceList->
Version = 1;
1142 PartialResourceList->
Count = 3;
1151 PartialDescriptor->
u.
Interrupt.Affinity = 0xFFFFFFFF;
1158 PartialDescriptor->
u.
Port.Start.LowPart = 0x60;
1159 PartialDescriptor->
u.
Port.Start.HighPart = 0x0;
1160 PartialDescriptor->
u.
Port.Length = 1;
1167 PartialDescriptor->
u.
Port.Start.LowPart = 0x64;
1168 PartialDescriptor->
u.
Port.Start.HighPart = 0x0;
1169 PartialDescriptor->
u.
Port.Length = 1;
1179 PartialResourceList,
1233 for (Loops = 0; Loops < 10; Loops++)
1265 for (Loops = 0; Loops < 100; Loops++)
1278 if (Scancode != 0xFA)
1288 if (Scancode != 0x00)
1307 TRACE(
"Detected PS2 port\n");
1310 if (PartialResourceList ==
NULL)
1312 ERR(
"Failed to allocate resource descriptor\n");
1318 PartialResourceList->
Version = 1;
1320 PartialResourceList->
Count = 1;
1338 PartialResourceList,
1344 TRACE(
"Detected PS2 mouse\n");
1350 if (PartialResourceList ==
NULL)
1352 ERR(
"Failed to allocate resource descriptor\n");
1357 PartialResourceList->
Version = 1;
1359 PartialResourceList->
Count = 0;
1368 "MICROSOFT PS2 MOUSE",
1369 PartialResourceList,
1378CreateBusMousePeripheralKey(
1392 if (PartialResourceList ==
NULL)
1394 ERR(
"Failed to allocate resource descriptor\n");
1400 PartialResourceList->
Version = 1;
1402 PartialResourceList->
Count = 2;
1409 PartialDescriptor->
u.
Port.Start.LowPart = IoBase;
1410 PartialDescriptor->
u.
Port.Start.HighPart = 0;
1411 PartialDescriptor->
u.
Port.Length = 4;
1430 PartialResourceList,
1437 if (PartialResourceList ==
NULL)
1439 ERR(
"Failed to allocate resource descriptor\n");
1445 PartialResourceList->
Version = 1;
1447 PartialResourceList->
Count = 0;
1456 "MICROSOFT INPORT MOUSE",
1457 PartialResourceList,
1467DetectBusMouseTestIrq(
1471 USHORT OldOffset, OldExtendedOffset;
1483 OldOffset = i386Idt[
Vector].Offset;
1484 OldExtendedOffset = i386Idt[
Vector].ExtendedOffset;
1486 i386Idt[
Vector].Offset = (
ULONG)HwIrqHandler & 0xFFFF;
1487 i386Idt[
Vector].ExtendedOffset = (
ULONG)HwIrqHandler >> 16;
1495 for (
i = 0;
i < 15;
i++)
1506 i386Idt[
Vector].Offset = OldOffset;
1507 i386Idt[
Vector].ExtendedOffset = OldExtendedOffset;
1509 return (HwIrqCount != 0) ? Irq : 0;
1527 for (Irq = 5; Irq >= 3; Irq--)
1529 Result = DetectBusMouseTestIrq(IoBase, Irq);
1545 ULONG IoBase, Irq, Signature1, Signature2, Signature3;
1551 for (IoBase = 0x23C; IoBase >= 0x230; IoBase -= 4)
1555 if (Signature1 == Signature2)
1561 if (Signature1 != Signature3)
1564 Irq = DetectBusMouseIrq(IoBase);
1568 CreateBusMousePeripheralKey(BusKey, IoBase, Irq);
1589 if (VesaVersion != 0)
1591 TRACE(
"VESA version %c.%c\n",
1592 (VesaVersion >> 8) +
'0',
1593 (VesaVersion & 0xFF) +
'0');
1597 TRACE(
"VESA not supported\n");
1600 if (VesaVersion >= 0x0200)
1617 if (VesaVersion != 0)
1621 TRACE(
"VESA/DDC supported!\n");
1624 TRACE(
"EDID data read successfully!\n");
1645 if (PartialResourceList ==
NULL)
1647 ERR(
"Failed to allocate resource descriptor\n");
1653 PartialResourceList->
Version = 1;
1655 PartialResourceList->
Count = 0;
1665 PartialResourceList,
1679 DetectBusMouse(BusKey);
1695 return ((
Data & 0xF0) ? 1 : 0) + ((
Data & 0x0F) ? 1 : 0);
1705 TRACE(
"DetectHardware()\n");
1724 TRACE(
"DetectHardware() Done\n");
1740 Int386(0x15, &Regs, &Regs);
1785#if !defined(SARCH_XBOX)
#define ExtendedBIOSDataArea
#define ExtendedBIOSDataSize
VOID FldrCreateSystemKey(_Out_ PCONFIGURATION_COMPONENT_DATA *SystemNode, _In_ PCSTR IdentifierString)
VOID FldrCreateComponentKey(_In_ PCONFIGURATION_COMPONENT_DATA SystemNode, _In_ CONFIGURATION_CLASS Class, _In_ CONFIGURATION_TYPE Type, _In_ IDENTIFIER_FLAG Flags, _In_ ULONG Key, _In_ ULONG Affinity, _In_ PCSTR IdentifierString, _In_ PCM_PARTIAL_RESOURCE_LIST ResourceList, _In_ ULONG Size, _Out_ PCONFIGURATION_COMPONENT_DATA *ComponentKey)
VOID DetectAcpiBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber)
VOID DetectPciBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber)
BOOLEAN PcFindPciBios(PPCI_REGISTRY_INFO BusData)
FIND_PCI_BIOS FindPciBios
ULONG __cdecl PnpBiosGetDeviceNode(UCHAR *NodeId, UCHAR *NodeBuffer)
ULONG __cdecl PnpBiosGetDeviceNodeCount(ULONG *NodeSize, ULONG *NodeCount)
ULONG_PTR __cdecl PnpBiosSupported(VOID)
ULONG(* GET_SERIAL_PORT)(ULONG Index, PULONG Irq)
ULONG __cdecl PnpBiosGetDockStationInformation(UCHAR *DockingStationInfo)
#define DBG_DEFAULT_CHANNEL(ch)
VOID FrLdrHeapFree(PVOID MemoryPointer, ULONG Tag)
PVOID FrLdrHeapAlloc(SIZE_T MemorySize, ULONG Tag)
BOOLEAN Rs232PortInUse(PUCHAR Base)
BOOLEAN NTAPI CpDoesPortExist(IN PUCHAR Address)
#define DECLSPEC_ALIGN(x)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
static const WCHAR CmdLine[]
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLint GLint GLint GLint GLint x
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
VOID DetectApmBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber)
BOOLEAN PcInitializeBootDevices(VOID)
#define CONTROLLER_COMMAND_WRITE_MOUSE
VOID PcGetExtendedBIOSData(PULONG ExtendedBIOSDataArea, PULONG ExtendedBIOSDataSize)
static VOID DetectPnpBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber)
#define MOUSE_TYPE_MICROSOFT
static VOID DetectDockingStation(_Inout_ PCONFIGURATION_COMPONENT_DATA BusKey)
BOOLEAN BiosVesaReadEdid(VOID)
static VOID PS2ControllerWait(VOID)
#define INPORT_REGISTER_DATA
#define INPORT_REGISTER_CONTROL
static ULONG GetSerialMousePnpId(PUCHAR Port, char *Buffer)
static ULONG DetectSerialMouse(PUCHAR Port)
static VOID DetectIsaBios(_In_opt_ PCSTR Options, _Inout_ PCONFIGURATION_COMPONENT_DATA SystemKey, _Out_ ULONG *BusNumber)
VOID MachInit(const char *CmdLine)
static BOOLEAN DetectPS2AuxDevice(VOID)
#define CONTROLLER_REGISTER_STATUS
#define CONTROLLER_STATUS_INPUT_BUFFER_FULL
#define MOUSE_TYPE_LOGITECH
static ULONG PcGetSerialPort(ULONG Index, PULONG Irq)
BOOLEAN DetectKeyboardDevice(VOID)
static UCHAR PcGetFloppyCount(VOID)
static VOID DetectKeyboardController(PCONFIGURATION_COMPONENT_DATA BusKey)
PCONFIGURATION_COMPONENT_DATA PcHwDetect(_In_opt_ PCSTR Options)
static VOID InitializeSerialPort(PUCHAR Port, UCHAR LineControl)
#define CONTROLLER_TIMEOUT
#define CONTROLLER_STATUS_MOUSE_OUTPUT_BUFFER_FULL
struct _PNP_DOCK_INFO * PPNP_DOCK_INFO
#define CONTROLLER_STATUS_OUTPUT_BUFFER_FULL
struct _PNP_DOCK_INFO PNP_DOCK_INFO
#define CONTROLLER_REGISTER_CONTROL
VOID PcPrepareForReactOS(VOID)
#define MOUSE_TYPE_WHEELZ
VOID __cdecl ChainLoadBiosBootSectorCode(IN UCHAR BootDrive OPTIONAL, IN ULONG BootPartition OPTIONAL)
static BOOLEAN DetectPS2AuxPort(VOID)
static VOID DetectPS2Mouse(PCONFIGURATION_COMPONENT_DATA BusKey)
static VOID DetectKeyboardPeripheral(PCONFIGURATION_COMPONENT_DATA ControllerKey)
static ULONG GetSerialMouseDetectionBitmap(_In_opt_ PCSTR Options)
static VOID DetectParallelPorts(PCONFIGURATION_COMPONENT_DATA BusKey)
VOID DetectSerialPorts(_In_opt_ PCSTR Options, _Inout_ PCONFIGURATION_COMPONENT_DATA BusKey, _In_ GET_SERIAL_PORT MachGetSerialPort, _In_ ULONG Count)
#define INPORT_REGISTER_SIGNATURE
static VOID DetectDisplayController(PCONFIGURATION_COMPONENT_DATA BusKey)
#define CONTROLLER_COMMAND_WRITE_MOUSE_OUTPUT_BUFFER
#define CONTROLLER_REGISTER_DATA
static PCM_PARTIAL_RESOURCE_LIST PcGetHarddiskConfigurationData(UCHAR DriveNumber, ULONG *pSize)
static VOID DetectSerialPointerPeripheral(PCONFIGURATION_COMPONENT_DATA ControllerKey, PUCHAR Base)
BOOLEAN BiosIsVesaDdcSupported(VOID)
USHORT BiosIsVesaSupported(VOID)
#define memcpy(s1, s2, n)
#define CM_RESOURCE_PORT_IO
_In_ ULONG _In_ ULONG _In_ ULONG Length
PCSTR NtLdrGetOption(IN PCSTR Options, IN PCSTR OptionName)
PCSTR NtLdrGetOptionEx(IN PCSTR Options, IN PCSTR OptionName, OUT PULONG OptionLength OPTIONAL)
NTSTRSAFEVAPI RtlStringCbPrintfA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat,...)
VOID __cdecl DiskStopFloppyMotor(VOID)
#define READ_PORT_UCHAR(p)
#define WRITE_PORT_UCHAR(p, d)
#define INT386_SUCCESS(regs)
int __cdecl Int386(int ivec, REGS *in, REGS *out)
DECLSPEC_NORETURN VOID __cdecl Relocator16Boot(IN REGS *In, IN USHORT StackSegment, IN USHORT StackPointer, IN USHORT CodeSegment, IN USHORT CodePointer)
struct _DOCKING_STATE_INFORMATION DOCKING_STATE_INFORMATION
struct _DOCKING_STATE_INFORMATION * PDOCKING_STATE_INFORMATION
VOID PcConsPutChar(int Ch)
BOOLEAN PcConsKbHit(VOID)
BOOLEAN PcDiskReadLogicalSectors(IN UCHAR DriveNumber, IN ULONGLONG SectorNumber, IN ULONG SectorCount, OUT PVOID Buffer)
ULONG PcDiskGetCacheableBlockCount(UCHAR DriveNumber)
BOOLEAN PcDiskGetDriveGeometry(UCHAR DriveNumber, PGEOMETRY Geometry)
VOID HalpCalibrateStallExecution(VOID)
VOID DetectBiosDisks(PCONFIGURATION_COMPONENT_DATA SystemKey, PCONFIGURATION_COMPONENT_DATA BusKey)
GET_HARDDISK_CONFIG_DATA GetHarddiskConfigurationData
VOID StallExecutionProcessor(ULONG Microseconds)
PFREELDR_MEMORY_DESCRIPTOR PcMemGetMemoryMap(ULONG *MemoryMapSize)
TIMEINFO * PcGetTime(VOID)
VOID PcVideoSetTextCursorPosition(UCHAR X, UCHAR Y)
VOID PcVideoPrepareForReactOS(VOID)
BOOLEAN PcVideoIsPaletteFixed(VOID)
VOID PcVideoSetPaletteColor(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
VOID PcVideoGetFontsFromFirmware(PULONG RomFontPointers)
VOID PcVideoGetDisplaySize(PULONG Width, PULONG Height, PULONG Depth)
VOID PcVideoGetPaletteColor(UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue)
VIDEODISPLAYMODE PcVideoSetDisplayMode(PCSTR DisplayModeName, BOOLEAN Init)
ULONG PcVideoGetBufferSize(VOID)
VOID PcVideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
VOID PcVideoClearScreen(UCHAR Attr)
VOID PcVideoCopyOffScreenBufferToVRAM(PVOID Buffer)
VOID PcVideoHideShowTextCursor(BOOLEAN Show)
struct _CM_PNP_BIOS_INSTALLATION_CHECK * PCM_PNP_BIOS_INSTALLATION_CHECK
struct _CM_PNP_BIOS_INSTALLATION_CHECK CM_PNP_BIOS_INSTALLATION_CHECK
struct _CM_PNP_BIOS_DEVICE_NODE * PCM_PNP_BIOS_DEVICE_NODE
struct _CM_PARTIAL_RESOURCE_LIST CM_PARTIAL_RESOURCE_LIST
#define CmResourceTypeDeviceSpecific
#define CmResourceTypePort
#define CM_RESOURCE_INTERRUPT_LATCHED
#define CmResourceTypeInterrupt
void __cdecl _disable(void)
void __cdecl _enable(void)
PULONG MinorVersion OPTIONAL
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@432::@434 Port
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@432 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@432::@441 DeviceSpecificData
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@432::@435 Interrupt
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
ULONG BytesPerSector
Number of bytes per sector.
ULONG Cylinders
Number of cylinders on the disk.
ULONG SectorsPerTrack
Number of sectors per track.
ULONG Heads
Number of heads on the disk.
VOID(* VideoGetPaletteColor)(UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue)
VIDEODISPLAYMODE(* VideoSetDisplayMode)(PCSTR DisplayMode, BOOLEAN Init)
VOID(* GetExtendedBIOSData)(PULONG ExtendedBIOSDataArea, PULONG ExtendedBIOSDataSize)
VOID(* PrepareForReactOS)(VOID)
VOID(* VideoSetPaletteColor)(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue)
BOOLEAN(* InitializeBootDevices)(VOID)
VOID(* VideoCopyOffScreenBufferToVRAM)(PVOID Buffer)
BOOLEAN(* ConsKbHit)(VOID)
VOID(* VideoHideShowTextCursor)(BOOLEAN Show)
TIMEINFO *(* GetTime)(VOID)
UCHAR(* GetFloppyCount)(VOID)
BOOLEAN(* DiskGetDriveGeometry)(UCHAR DriveNumber, PGEOMETRY DriveGeometry)
BOOLEAN(* DiskReadLogicalSectors)(UCHAR DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer)
PFREELDR_MEMORY_DESCRIPTOR(* GetMemoryMap)(PULONG MaxMemoryMapSize)
VOID(* VideoGetFontsFromFirmware)(PULONG RomFontPointers)
VOID(* VideoSetTextCursorPosition)(UCHAR X, UCHAR Y)
ULONG(* VideoGetBufferSize)(VOID)
VOID(* VideoPutChar)(int Ch, UCHAR Attr, unsigned X, unsigned Y)
ULONG(* DiskGetCacheableBlockCount)(UCHAR DriveNumber)
VOID(* VideoGetDisplaySize)(PULONG Width, PULONG Height, PULONG Depth)
VOID(* VideoClearScreen)(UCHAR Attr)
BOOLEAN(* VideoIsPaletteFixed)(VOID)
PCONFIGURATION_COMPONENT_DATA(* HwDetect)(_In_opt_ PCSTR Options)
VOID(* ConsPutChar)(int Ch)
#define FIELD_OFFSET(t, f)
#define RtlZeroMemory(Destination, Length)
#define TAG_HW_RESOURCE_LIST
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
struct _CM_SERIAL_DEVICE_DATA * PCM_SERIAL_DEVICE_DATA
struct _CM_DISK_GEOMETRY_DEVICE_DATA CM_DISK_GEOMETRY_DEVICE_DATA
struct _CM_KEYBOARD_DEVICE_DATA * PCM_KEYBOARD_DEVICE_DATA
struct _CM_KEYBOARD_DEVICE_DATA CM_KEYBOARD_DEVICE_DATA
struct _CM_SERIAL_DEVICE_DATA CM_SERIAL_DEVICE_DATA
@ CmResourceShareDeviceExclusive
@ CmResourceShareUndetermined
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber