PpDeviceRegistration

NTSTATUS __stdcall PpDeviceRegistration(
        _UNICODE_STRING *DeviceInstancePath,
        UINT8 Add,
        _UNICODE_STRING *ServiceKeyName,
        UINT8 LockHeld){
  _ETHREAD *CurrentThread; 
  NTSTATUS v9; 

  if( !LockHeld )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    ExAcquireResourceExclusiveLite((UINT64)&PnpReplaceEvent + 6688, 1, (INT64)ServiceKeyName);
  }
  v9 = PiDeviceRegistration(DeviceInstancePath, Add, ServiceKeyName);
  if( !LockHeld )
  {
    ExReleaseResourceLite((PERESOURCE)((char *)&PnpReplaceEvent + 6688));
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
  }
  return v9;
}

Referenced by:

IoReportDetectedDevice
IopInitializeDeviceInstanceKey
PiCMCreateDevice
PiCMDeleteDevice
PiProcessNewDeviceNode
PnpCleanupDeviceRegistryValues
PpDevCfgProcessDevices