1.1.1 Hardware Configuration

HalGetBusData 
Returns bus-relative configuration information for the specified type of I/O bus, system-assigned bus number, slot number or device location, and a pointer to a driver-supplied buffer and the buffer’s length in bytes.
HalGetBusDataByOffset 
Like HalGetBusData, returns bus-relative configuration information to a driver-supplied buffer. However, this routine returns configuration information for a given type of I/O bus, starting at the given offset in the bus-type-specific configuration data structure if the bus is dynamically configurable with a published standard interface.
IoAssignResources 
Takes an input list of preferred and alternative, or required, hardware resources needed for a driver or device, inspects the registry for available hardware resources, claims hardware resources in the registry ResourceMap tree, and returns configuration information about the hardware resources it claimed for the caller.
HalAssignSlotResources 
Like IoAssignResources, takes an input list of preferred and alternative hardware resources and claims available hardware resources in the registry ResourceMap tree, returning information about the resources it claimed to the caller. However, this routine claims hardware resources only for drivers of devices on any given type of dynamically configurable I/O bus with a published standard interface.
HalSetBusData 
Sets I/O bus configuration data fora given slot or address on a particular bus.
HalSetBusDataByOffset 
Sets I/O bus configuration data fora given slot or address on a particular bus, starting at the given offset in the bus-type-specific configuration structure.
IoQueryDeviceDescription 
Supplies basic hardware information about one or more of the given bus type and bus number, controller type and controller number, and/or peripheral type and peripheral number from the registry to a driver-supplied configuration-callback routine. As an alternative, device drivers can call HalGetBusData or HalGetBusDataByOffset.
IoReportResourceUsage 
Claims hardware resources, such as ports in I/O space or device registers in memory space, an interrupt vector, or a particular DMA controller channel, in the registry so that a subsequently loaded driver cannot attempt to use the same resources. To claim most types of resources, calling IoAssignResources or HalAssignSlotResources is preferable.
IoGetConfigurationInformation
Returns a pointer to the I/O Manager’s configuration information structure, which indicates the number of disk, floppy, CD-ROM, tape, SCSI HBAs, serial, and parallel device objects that have already been named by previously loaded drivers, as well as whether certain address ranges have been claimed by “AT” disk-type drivers.
HalTranslateBusAddress 
Returns the corresponding physical address in system memory for a given bus-specific logical address.
HalGetInterruptVector 
Returns a mapped system interrupt vector, DIRQL, and processor-affinity mask a driver can use to set up its interrupt service routine (ISR), given the type of bus on which the driver’s device is connected, the system-assigned bus number, and the bus’s interrupt vector and IRQL.
HalGetAdapter 
Returns a pointer to the adapter object representing the DMA channel to which the driver’s device is connected or representing the driver’s busmaster adapter, together with the maximum number of map registers the driver can specify for each DMA transfer, given the input device description.
HalExamineMBR 
Returns data from the master boot record (MBR) of a disk.
KeGetDcacheFillSize 
Returns the processor’s data cache-line boundary.
IoReadPartitionTable 
Returns a list of partitions on a disk with a given sector size.