PnpSetPropertyWorker
__int64 __fastcall PnpSetPropertyWorker(
__int64 a1,
char *a2,
const wchar_t *a3,
__int64 a4,
int a5,
void *a6,
ULONG a7){
__int16 v7;
int v10;
int v11;
int v12;
int v13;
NTSTATUS v14;
__int64 v16;
__int64 v17;
__int64 v18;
__int64 v19;
UINT64 dwFlags;
NTSTRSAFE_PCWSTR pszFormat;
HANDLE v22;
HANDLE v23;
ULONG v24;
ULONG v25;
HANDLE Handle;
char *v27;
void *v28;
size_t pcchLength;
wchar_t Dst[12];
wchar_t pszDest[40];
v7 = 0;
v27 = a2;
v28 = a6;
v25 = 0;
v24 = 0;
v23 = 0i64;
v22 = 0i64;
Handle = 0i64;
if( a7 > 0x7FFFFFFF )
return(unsigned int)-1073741811;
if( a3 )
{
v11 = RtlUnalignedStringCchLengthW(a3, 0x55ui64, &pcchLength);
if( v11 < 0 )
return(unsigned int)v11;
}
if( a5 == 25 && a3 && *a3 != v7 )
return(unsigned int)-1073741811;
LODWORD(dwFlags) = 2048;
RtlStringCchPrintfExW(pszDest, 0x27ui64, 0i64, 0i64, dwFlags, L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}");
if( v10 < 0 )
goto LABEL_26;
swprintf_s(Dst, 9ui64, (WCHAR *)L"%04lX");
v11 = PnpOpenPropertiesKey(a1, v27, 0i64, 4u, 1, (__int64)pszFormat, &v23);
if( v11 < 0 )
{
v23 = 0i64;
goto LABEL_13;
}
v12 = PnpCtxRegCreateKey(a1, (__int64)v23, pszDest, 0, 4u, 0i64, &v22, &v25);
if( v12 == -1073741444 )
goto LABEL_26;
if( v12 < 0 )
{
v22 = 0i64;
v11 = v12;
goto LABEL_13;
}
v13 = PnpCtxRegCreateKey(a1, (__int64)v22, Dst, 0, 0x10006u, 0i64, &Handle, &v24);
if( v13 == -1073741444 )
{
LABEL_26:
v11 = -1073741595;
LABEL_13:
if( Handle )
{
ZwClose(Handle);
if( v11 < 0 && v24 == 1 )
{
if( a1 && (v16 = *(_QWORD *)(a1 + 224)) != 0 )
v17 = *(_QWORD *)(v16 + 8);
else
v17 = 0i64;
RegRtlDeleteTreeInternal((char *)v22, Dst, v17, 0);
}
}
goto LABEL_15;
}
if( v13 >= 0 )
{
v14 = RegRtlSetValue(Handle, a3, a5 | 0xFFFF0000, v28, a7);
if( v14 != -1073741444 )
{
if( v14 < 0 )
v11 = v14;
goto LABEL_13;
}
goto LABEL_26;
}
Handle = 0i64;
v11 = v13;
LABEL_15:
if( v22 )
{
ZwClose(v22);
if( v11 < 0 && v25 == 1 )
{
if( a1 && (v18 = *(_QWORD *)(a1 + 224)) != 0 )
v19 = *(_QWORD *)(v18 + 8);
else
v19 = 0i64;
RegRtlDeleteTreeInternal((char *)v23, pszDest, v19, 0);
}
}
if( v23 )
ZwClose(v23);
return(unsigned int)v11;
}Referenced by:
PnpSetGenericStoreProperty