PiSwQueuedCreateInfoCreate
VOID __stdcall PiSwQueuedCreateInfoCreate(
_PI_SWD_QUEUED_CREATE_INFO **QueuedCreateInfo,
_SW_DEVICE_CREATE_IOCTL_DATA *IoctlData,
INT64 a3,
INT64 a4){
VOID **PoolWithTag;
__int64 v7;
VOID *v8;
int v9;
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x58ui64, 1466986064i64);
*QueuedCreateInfo = (_PI_SWD_QUEUED_CREATE_INFO *)PoolWithTag;
if( !PoolWithTag )
{
v9 = -1073741670;
LABEL_9:
if( v9 >= 0 )
return;
goto LABEL_10;
}
memset(PoolWithTag, 0i64, 0x58u);
if( (int)PnpAllocatePWSTR(*((WCHAR **)IoctlData + 1), 0xC8ui64, 0x57706E50u, (PVOID *)*QueuedCreateInfo) >= 0
&& PiSwPnPInfoInit((WCHAR **)*QueuedCreateInfo + 1, IoctlData) >= 0 )
{
if( !*((_QWORD *)IoctlData + 12) )
{
LABEL_7:
v9 = PnpCopyDevPropertyArray(
(unsigned int)IoctlData[26],
*((_QWORD *)IoctlData + 14),
v7,
*QueuedCreateInfo + 20,
(__int64)(*QueuedCreateInfo + 18));
goto LABEL_9;
}
(*QueuedCreateInfo)[16] = IoctlData[22];
*((_QWORD *)*QueuedCreateInfo + 7) = ExAllocatePoolWithTag(1ui64, (unsigned int)IoctlData[22], 1466986064i64);
v8 = (VOID *)*((_QWORD *)*QueuedCreateInfo + 7);
if( v8 )
{
memmove(v8, *((const VOID **)IoctlData + 12), IoctlData[22]);
goto LABEL_7;
}
}
LABEL_10:
if( *QueuedCreateInfo )
{
PiSwQueuedCreateInfoFree(*QueuedCreateInfo);
*QueuedCreateInfo = 0i64;
}
}Referenced by:
PiSwIrpStartCreateWorker