Difference between revisions of "Gopher"
Alex_Ionescu (talk | contribs) (→Gopher Startup) |
BrentNewland (talk | contribs) m (Outdated) |
||
(18 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{outdated}} | ||
+ | |||
+ | '''See also [[How_PnP_Works_in_ReactOS|How PNP Works in ReactOS]]''' | ||
+ | |||
Gopher is the code name for a new PnP layer for ReactOS 0.4.0 | Gopher is the code name for a new PnP layer for ReactOS 0.4.0 | ||
Line 6: | Line 10: | ||
== IopInitializePlugPlayServices == | == IopInitializePlugPlayServices == | ||
+ | |||
+ | === PiInitCacheGroupInformation === | ||
+ | |||
+ | == PpInitSystem == | ||
+ | |||
+ | === PiInitPhase0 === | ||
+ | |||
+ | === PiInitPhase1 === | ||
= Loading Boot Drivers = | = Loading Boot Drivers = | ||
− | == | + | == IopInitializeBootDrivers == |
− | == PpInitGetGroupOrderIndex == | + | === PpInitGetGroupOrderIndex === |
− | == PipGetDriverTagPriority == | + | === PipGetDriverTagPriority === |
+ | |||
+ | === PipLookupGroupName === | ||
+ | |||
+ | === PipCheckDependencies === | ||
+ | |||
+ | === PipAddDevicesToBootDriver === | ||
+ | |||
+ | ==== PipAddDevicesToBootDriverWorker ==== | ||
= Loading System Drivers = | = Loading System Drivers = | ||
Line 34: | Line 54: | ||
= Device Nodes = | = Device Nodes = | ||
+ | |||
+ | == Device Node Management Functions == | ||
+ | |||
+ | === PipAllocateDeviceNode === | ||
+ | |||
+ | === PpDevNodeInsertIntoTree === | ||
+ | |||
+ | === PpDevNodeRemoveFromTree === | ||
+ | |||
+ | === PpDevNodeLockTree === | ||
+ | |||
+ | === PpDevNodeUnlockTree === | ||
+ | |||
+ | === PpDevNodeAssertLockLevel === | ||
+ | |||
+ | === IopDestroyDeviceNode === | ||
+ | |||
+ | == Device Node Problems == | ||
+ | |||
+ | === PipSetDevNodeProblem === | ||
+ | |||
+ | == Device Node State == | ||
== Instance Paths == | == Instance Paths == | ||
− | == Processing | + | === 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 = | = User-Initiated Driver Loading = | ||
Line 44: | Line 176: | ||
== Registry String Management == | == Registry String Management == | ||
+ | |||
+ | === PnpFreeUnicodeStringList === | ||
+ | |||
+ | === PnpRegMultiSzToUnicodeStrings === | ||
+ | |||
+ | === PnpRegSzToString === | ||
+ | |||
+ | == Unicode String Management == | ||
+ | |||
+ | === IopAllocateUnicodeString === | ||
+ | |||
+ | === PipConcatenateUnicodeStrings === | ||
+ | |||
+ | === IopFreeUnicodeString | ||
== PnP IRP Wrappers == | == PnP IRP Wrappers == | ||
+ | |||
+ | === PnpIrpQueryID === | ||
+ | |||
+ | === PpIrpQueryDeviceCapabilities === | ||
+ | |||
+ | === PpIrpQueryResourceRequirements === | ||
+ | |||
+ | === PpIrpQueryPnpBusInformation === | ||
+ | |||
+ | === PnpQueryDeviceText === | ||
== Resource List Management == | == Resource List Management == | ||
+ | |||
+ | === PnpDetermineResourceListSize === | ||
== Hardware ID Validation == | == Hardware ID Validation == | ||
+ | |||
+ | === PnpFixupId === | ||
+ | |||
+ | == Hardware Registry Keys == | ||
+ | |||
+ | === PipOpenServiceEnumKeys === | ||
+ | |||
+ | === PipServiceInstanceToDeviceInstance === | ||
+ | |||
+ | === PipApplyFunctionToServiceInstances === | ||
+ | |||
+ | ==== PipApplyFunctionToSubKeys ==== | ||
+ | |||
+ | = PnP Root Driver = | ||
+ | |||
+ | == Initialization == | ||
+ | |||
+ | == IRP Handling == | ||
+ | |||
+ | == Legacy Device Enumeration == | ||
= I/O Manager Backend = | = I/O Manager Backend = | ||
Line 57: | Line 235: | ||
== IopQueryDeviceResources == | == IopQueryDeviceResources == | ||
− | == | + | == IopGetDriverNameFromKeyNode == |
+ | |||
+ | == IopReferenceDriverObjectByName == | ||
+ | |||
+ | == IopIsLegacyDriver == | ||
+ | |||
+ | == IopInitializeBuiltinDriver == | ||
+ | |||
+ | === IopInitializeAttributesAndCreateObject === | ||
+ | |||
+ | === IopPrepareDriverLoading === | ||
+ | |||
+ | === IopReadyDeviceObjects === | ||
+ | |||
+ | === IopDriverLoadingFailed === | ||
+ | |||
+ | |||
+ | [[Category:Documentation]] | ||
+ | [[Category:Kernel]] | ||
+ | [[Category:Hardware]] | ||
+ | [[Category:ReactOS_Components] |
Revision as of 01:13, 7 April 2012
This page is probably outdated The information on this page might not be valid for the current state of ReactOS. |
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
- 1 Gopher Startup
- 2 Loading Boot Drivers
- 3 Loading System Drivers
- 4 Device Nodes
- 4.1 Device Node Management Functions
- 4.2 Device Node Problems
- 4.3 Device Node State
- 4.4 Instance Paths
- 4.5 Registration
- 4.6 Requests
- 4.7 Processing Device Nodes
- 4.7.1 PipProcessDevNodeTree
- 4.7.1.1 PipAssertDevnodesInConsistentState
- 4.7.1.2 PiProcessNewDeviceNode
- 4.7.1.3 PipCallDriverAddDevice
- 4.7.1.4 PipProcessStartPhase1
- 4.7.1.5 PipProcessStartPhase2
- 4.7.1.6 PipProcessStartPhase3
- 4.7.1.7 PipEnumerateDevice
- 4.7.1.8 PipEnumerateCompleted
- 4.7.1.9 PipProcessRestartPhase1
- 4.7.1.10 PipProcessRestartPhase2
- 4.7.1 PipProcessDevNodeTree
- 5 Firmware Mapper
- 6 User-Initiated Driver Loading
- 7 Helper Routines
- 8 PnP Root Driver
- 9 I/O Manager Backend
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
[[Category:ReactOS_Components]