LdrpLoadResourceFromAlternativeModule
NTSTATUS __stdcall LdrpLoadResourceFromAlternativeModule(
PVOID DllHandle,
UINT64 *ResourceIdPath,
UINT64 ResourceIdPathLength,
UINT64 Flags,
PVOID *ResourceDirectoryOrData){
char v5;
UINT16 v7;
NTSTATUS result;
PVOID v9;
PVOID *ResourceDirectoryOrDataa;
PVOID DllHandlea;
UINT64 AlternateViewSize[2];
DllHandlea = 0i64;
v5 = Flags;
if( (unsigned int)(ResourceIdPathLength - 3) > 1 )
return -1073741583;
if( (Flags & 0x1000000) != 0 )
v7 = -3346;
else
v7 = *((_WORD *)ResourceIdPath + 8);
AlternateViewSize[0] = 0i64;
LODWORD(ResourceDirectoryOrDataa) = Flags;
result = LdrLoadAlternateResourceModuleEx(
DllHandle,
v7,
&DllHandlea,
AlternateViewSize,
(UINT64)ResourceDirectoryOrDataa);
if( result >= 0 )
{
v9 = DllHandlea;
ResourceIdPath[2] = v7;
result = LdrpSearchResourceSection_U(v9, ResourceIdPath, 3ui64, 0x2000030ui64, ResourceDirectoryOrData);
if( (v5 & 0x40) != 0 && result >= 0 )
{
result = LdrpFindMessageInAlternateModule(
DllHandlea,
*ResourceDirectoryOrData,
0i64,
*((unsigned int *)ResourceIdPath + 6),
0);
if( result < 0 )
*ResourceDirectoryOrData = 0i64;
}
}
else if( result == -1073741766 || result == -1073741772 )
{
return -1073020927;
}
return result;
}Referenced by:
LdrpSearchResourceSection_U