Gopher

From ReactOS Wiki
Jump to: navigation, search
This page is probably outdated

The information on this page might not be valid for the current state of ReactOS.
A Wiki Administrator should look at this page and decide or discuss what to do with it.


See also How PNP Works in ReactOS

Gopher is the code name for a new PnP layer for ReactOS 0.4.0

This page contains documentation on the implementation of Gopher as based on the Windows 2003 SP1 PnP Manager

Contents

Gopher Startup

IopInitializePlugPlayServices

PiInitCacheGroupInformation

PpInitSystem

PiInitPhase0

PiInitPhase1

Loading Boot Drivers

IopInitializeBootDrivers

PpInitGetGroupOrderIndex

PipGetDriverTagPriority

PipLookupGroupName

PipCheckDependencies

PipAddDevicesToBootDriver

PipAddDevicesToBootDriverWorker

Loading System Drivers

Registry Support

CmpFindTagIndex

CmpAddDriverToList

CmpIsLoadType

CmpDoSort

CmpSortDriverList

CmpOrderGroup

CmpResolveDriverDependencies

Device Nodes

Device Node Management Functions

PipAllocateDeviceNode

PpDevNodeInsertIntoTree

PpDevNodeRemoveFromTree

PpDevNodeLockTree

PpDevNodeUnlockTree

PpDevNodeAssertLockLevel

IopDestroyDeviceNode

Device Node Problems

PipSetDevNodeProblem

Device Node State

Instance Paths

Creation and Components

Building and Querying IDs

PnpQueryId
PnpQueryDeviceId

Managing the Instance Path

Buffer Management

PnpAllocateDeviceInstancePath
PnpFreeDeviceInstancePath

Device Object to Device Instance Mapping

PnpDeviceObjectToDeviceInstance
PnpDeviceObjectFromDeviceInstance
PnpMapDeviceObjectToDeviceInstance
AVL Mapping Tree
PpInitializeDeviceReferenceTable
PnpCompareInstancePath
PnpAllocateGenericTableEntry
PnpFreeGenericTableEntry

Registration

PiFindDevInstMatch

PiProcessDriverInstance

PiRearrangeDeviceInstances

Requests

PipRequestDeviceAction

DEVICE_REQUEST_TYPE

PI_DEVICE_REQUEST

Processing Device Nodes

PipProcessDevNodeTree

PipAssertDevnodesInConsistentState

PiProcessNewDeviceNode

PiBuildDeviceNodeInstancePath
PiCreateDeviceInstanceKey
PiQueryResourceRequirements
PnpQueryBusInformation
PiQueryAndAllocateBootResources
PipMakeGloballyUniqueId
PnpSaveDeviceCapabilities

PipCallDriverAddDevice

PipCallDriverAddDeviceQueryRoutine

PipProcessStartPhase1

PipProcessStartPhase2

PipProcessStartPhase3

PipEnumerateDevice

PipEnumerateCompleted

PipProcessRestartPhase1

PipProcessRestartPhase2

Firmware Mapper

User-Initiated Driver Loading

Helper Routines

Registry String Management

PnpFreeUnicodeStringList

PnpRegMultiSzToUnicodeStrings

PnpRegSzToString

Unicode String Management

IopAllocateUnicodeString

PipConcatenateUnicodeStrings

=== IopFreeUnicodeString

PnP IRP Wrappers

PnpIrpQueryID

PpIrpQueryDeviceCapabilities

PpIrpQueryResourceRequirements

PpIrpQueryPnpBusInformation

PnpQueryDeviceText

Resource List Management

PnpDetermineResourceListSize

Hardware ID Validation

PnpFixupId

Hardware Registry Keys

PipOpenServiceEnumKeys

PipServiceInstanceToDeviceInstance

PipApplyFunctionToServiceInstances

PipApplyFunctionToSubKeys

PnP Root Driver

Initialization

IRP Handling

Legacy Device Enumeration

I/O Manager Backend

IopSynchronousCall

IopQueryDeviceResources

IopGetDriverNameFromKeyNode

IopReferenceDriverObjectByName

IopIsLegacyDriver

IopInitializeBuiltinDriver

IopInitializeAttributesAndCreateObject

IopPrepareDriverLoading

IopReadyDeviceObjects

IopDriverLoadingFailed