PiSwStartCreate

INT64 __stdcall PiSwStartCreate(
        WCHAR *ParentDeviceInstanceId,
        WCHAR *InstanceId,
        WCHAR *HardwareIds,
        WCHAR *CompatibleIds,
        GUID *ContainerId,
        UINT64 CapabilityFlags,
        WCHAR *DeviceDescription,
        WCHAR *DeviceLocation,
        PVOID SecurityDescriptor,
        UINT64 SecurityDescriptorSize,
        DEVPROPERTY *Properties,
        UINT64 PropertyCount){
  GUID *v15; 
  INT64 v16; 
  INT64 result[3]; 
  int v18; 
  WCHAR *v19; 
  int v20; 
  GUID *v21; 
  UINT64 v22; 
  int v23; 
  WCHAR *v24; 
  PVOID v25; 
  int v26; 
  UINT64 v27; 
  int v28; 
  UINT64 v29; 
  UINT64 MultiSzLength; 
  int v31; 
  MultiSzLength = (UINT64)ParentDeviceInstanceId;
  memset((INT64)result, 0i64);
  MultiSzLength = 0i64;
  result[0] = (INT64)L"DRIVERENUM";
  v22 = CapabilityFlags;
  v23 = (int)DeviceDescription;
  v24 = DeviceLocation;
  v25 = SecurityDescriptor;
  v26 = (int)Properties;
  v27 = SecurityDescriptorSize;
  v28 = v31;
  result[1] = (INT64)InstanceId;
  v15 = ContainerId;
  result[2] = (INT64)HardwareIds;
  v29 = PropertyCount;
  v19 = CompatibleIds;
  v21 = ContainerId;
  if( CompatibleIds )
  {
    LODWORD(v16) = PnpGetMultiSzLength(CompatibleIds, 0x400ui64, &MultiSzLength);
    if( (int)v16 < 0 )
      return v16;
    v18 = MultiSzLength;
  }
  if( v15 )
  {
    LODWORD(v16) = PnpGetMultiSzLength((PWCHAR)v15, 0x400ui64, &MultiSzLength);
    if( (int)v16 < 0 )
      return v16;
    v20 = MultiSzLength;
  }
  return PiSwIrpStartCreateWorker((INT64)result, 0i64);
}

Referenced by:

PiCreateDriverSwDeviceCallback