PiSwDoesCreateChangesRequireReEnum
VOID __fastcall PiSwDoesCreateChangesRequireReEnum(
_PI_SWD_OBJECT *SwDeviceObject,
_SW_DEVICE_CREATE_IOCTL_DATA *IoctlData){
_QWORD *v4;
_QWORD *v5;
__int64 v6;
const wchar_t *v7;
const wchar_t *v8;
const wchar_t *v9;
const wchar_t *v10;
unsigned int v11;
wchar_t *v12;
wchar_t *v13;
wchar_t *v14;
wchar_t *v15;
if( SwDeviceObject[16] == IoctlData[16] )
{
v4 = (_QWORD *)*((_QWORD *)SwDeviceObject + 5);
v5 = (_QWORD *)*((_QWORD *)IoctlData + 7);
if( v4 == v5 )
goto LABEL_30;
if( v4 && v5 )
{
v6 = *v4 - *v5;
if( *v4 == *v5 )
v6 = v4[1] - v5[1];
if( !v6 )
{
LABEL_30:
if( !wcsicmp(*(const wchar_t **)(*((_QWORD *)SwDeviceObject + 14) + 8i64), *((const wchar_t **)IoctlData + 1)) )
{
v7 = (const wchar_t *)*((_QWORD *)SwDeviceObject + 6);
v8 = (const wchar_t *)*((_QWORD *)IoctlData + 9);
if( v7 == v8 || v7 && v8 && !wcsicmp(v7, v8) )
{
v9 = (const wchar_t *)*((_QWORD *)SwDeviceObject + 7);
v10 = (const wchar_t *)*((_QWORD *)IoctlData + 10);
if( v9 == v10 || v9 && v10 && !wcsicmp(v9, v10) )
{
v11 = SwDeviceObject[40];
if( v11 == IoctlData[22]
&& (!v11 || !memcmp(*((const VOID **)SwDeviceObject + 19), *((const VOID **)IoctlData + 12), v11)) )
{
v12 = (wchar_t *)*((_QWORD *)SwDeviceObject + 3);
v13 = (wchar_t *)*((_QWORD *)IoctlData + 4);
if( v12 == v13 || v12 && v13 && PnpCompareMultiSz(v12, v13, 1u) )
{
v14 = (wchar_t *)*((_QWORD *)SwDeviceObject + 4);
v15 = (wchar_t *)*((_QWORD *)IoctlData + 6);
if( v14 != v15 && v14 )
{
if( v15 )
PnpCompareMultiSz(v14, v15, 1u);
}
}
}
}
}
}
}
}
}
}Referenced by:
PiSwIrpStartCreateWorker