CmGetDeviceInterfaceReferenceString
NTSTATUS __stdcall CmGetDeviceInterfaceReferenceString(
WCHAR *DeviceInterfaceName,
WCHAR *ReferenceString,
UINT64 ReferenceStringLength,
UINT64 *RequiredLength){
UINT64 v4;
int v7;
WORD *v8;
WCHAR *v9;
WORD v10;
WCHAR *v11;
__int64 v12;
unsigned __int64 v13;
UINT64 dwFlags;
_DWORD *v16;
v4 = (unsigned int)RequiredLength;
v7 = CmValidateDeviceInterfaceName(DeviceInterfaceName);
if( v7 >= 0 )
{
v8 = wcschr(ReferenceString + 4, 92);
if( v8 )
{
v9 = v8 + 1;
v10 = v8[1];
v11 = v9;
while( v10 )
{
if( v10 == 92 || v10 == 47 )
{
v7 = -1073741767;
break;
}
v10 = *++v11;
}
if( v7 >= 0 )
{
v12 = -1i64;
do
++v12;
while( v9[v12] );
v13 = v12 + 1;
if( v13 > 0xFFFFFFFF )
{
return -1073741675;
}
else
{
if( v16 )
*v16 = v13;
if( (unsigned int)v13 > (unsigned int)v4 )
{
return -1073741789;
}
else
{
LODWORD(dwFlags) = 2304;
return RtlStringCchCopyExW((WCHAR *)ReferenceStringLength, v4, v9, 0i64, 0i64, dwFlags);
}
}
}
}
else
{
return -1073741772;
}
}
return v7;
}Referenced by:
CmGetDeviceInterfaceMappedPropertyFromComposite
IoGetDeviceInterfaceAlias
PiSwCompleteCreate