RtlIoDecodeMemIoResource
UINT64 __stdcall RtlIoDecodeMemIoResource(
_IO_RESOURCE_DESCRIPTOR *Descriptor,
UINT64 *Alignment,
UINT64 *MinimumAddress,
UINT64 *MaximumAddress){
UINT64 Length;
UINT64 v6;
unsigned __int16 Flags;
Length = 0i64;
v6 = 0i64;
if( ((Descriptor->Type - 1) & 0xFD) != 0 )
{
Flags = Descriptor->Flags;
if( (Flags & 0x200) != 0 )
{
Length = (unsigned __int64)Descriptor->u.Port.Length << 8;
v6 = (unsigned __int64)Descriptor->u.Port.Alignment << 8;
}
else if( (Flags & 0x400) != 0 )
{
Length = (unsigned __int64)Descriptor->u.Port.Length << 16;
v6 = (unsigned __int64)Descriptor->u.Port.Alignment << 16;
}
else if( (Flags & 0x800) != 0 )
{
Length = (unsigned __int64)Descriptor->u.Port.Length << 32;
v6 = (unsigned __int64)Descriptor->u.Port.Alignment << 32;
}
}
else
{
Length = Descriptor->u.Port.Length;
v6 = Descriptor->u.Port.Alignment;
}
if( Alignment )
*Alignment = v6;
if( MinimumAddress )
*MinimumAddress = Descriptor->u.Port.MinimumAddress.QuadPart;
if( MaximumAddress )
*MaximumAddress = Descriptor->u.Interrupt.TargetedProcessors;
return Length;
}Referenced by:
IopGenericScoreRequirement
IopGenericUnpackRequirement
PnpFilterResourceRequirementsList