DrvDbGetDriverPackageSignerName
NTSTATUS __stdcall DrvDbGetDriverPackageSignerName(
VOID *ObjectBaseKey,
WCHAR *SignerName,
VOID *SignerNameLen,
WCHAR *RequiredLen,
UINT64 SignerNameLena,
UINT64 *RequiredLena){
UINT64 *v6;
_DEVPROPKEY **v8;
__int64 v9;
_DEVPROPKEY *v10;
__int64 v11;
NTSTATUS result;
const _DRVDB_PROPERTY_REG_VALUE_MAP *v13;
UINT64 PropertySize;
UINT8 PropertyBuffer;
UINT64 ObjectBaseKeya;
HIDWORD(ObjectBaseKeya) = HIDWORD(SignerName);
v6 = RequiredLena;
LODWORD(ObjectBaseKeya) = 0;
v8 = &off_140001760;
*(_DWORD *)RequiredLena = 0;
v9 = 0i64;
while( 1 )
{
v10 = *v8;
if( (*v8)->pid == 7 )
{
v11 = *(_QWORD *)&v10->fmtid.Data1 - *(_QWORD *)&DEVPKEY_DriverPackage_SignerName.fmtid.Data1;
if( *(_QWORD *)&v10->fmtid.Data1 == *(_QWORD *)&DEVPKEY_DriverPackage_SignerName.fmtid.Data1 )
v11 = *(_QWORD *)v10->fmtid.Data4 - *(_QWORD *)DEVPKEY_DriverPackage_SignerName.fmtid.Data4;
if( !v11 )
break;
}
v9 = (unsigned int)(v9 + 1);
v8 += 5;
if( (unsigned int)v9 >= 0x20 )
return -1073741595;
}
v13 = (const _DRVDB_PROPERTY_REG_VALUE_MAP *)&(&off_140001760)[5 * v9];
if( !v13 )
return -1073741595;
LODWORD(PropertySize) = 2 * SignerNameLena;
result = DrvDbGetRegValueMappedProperty(
&ObjectBaseKeya,
SignerNameLen,
v13,
&PropertyBuffer,
RequiredLen,
PropertySize,
&ObjectBaseKeya);
if( (int)(result + 0x80000000) < 0 || result == -1073741789 )
*(_DWORD *)v6 = (unsigned int)ObjectBaseKeya >> 1;
return result;
}Referenced by:
DrvDbSetDriverPackageMappedProperty