PiSwPnPInfoInit
NTSTATUS __stdcall PiSwPnPInfoInit(WCHAR **PnPInfo, _SW_DEVICE_CREATE_IOCTL_DATA *IoctlData){
__int64 v2;
NTSTATUS MultiSZ;
__int64 v6;
VOID **PoolWithTag;
*((_DWORD *)PnPInfo + 10) = IoctlData[16];
MultiSZ = PnpAllocateMultiSZ(*((VOID **)IoctlData + 4), (unsigned int)IoctlData[6], v2, PnPInfo);
if( MultiSZ >= 0 )
{
MultiSZ = PnpAllocateMultiSZ(*((VOID **)IoctlData + 6), (unsigned int)IoctlData[10], v6, PnPInfo + 1);
if( MultiSZ >= 0 )
{
if( *((_QWORD *)IoctlData + 7) )
{
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x10ui64, 1466986064i64);
PnPInfo[2] = (WCHAR *)PoolWithTag;
if( PoolWithTag )
*(_OWORD *)PoolWithTag = *(_OWORD *)*((_QWORD *)IoctlData + 7);
else
MultiSZ = -1073741670;
}
if( MultiSZ >= 0 )
{
MultiSZ = PnpAllocatePWSTR(*((WCHAR **)IoctlData + 9), 0x7FFFui64, 0x57706E50u, (PVOID *)PnPInfo + 3);
if( MultiSZ >= 0 )
return PnpAllocatePWSTR(*((WCHAR **)IoctlData + 10), 0x7FFFui64, 0x57706E50u, (PVOID *)PnPInfo + 4);
}
}
}
return MultiSZ;
}Referenced by:
PiSwIrpStartCreateWorker
PiSwQueuedCreateInfoCreate