VfThunkAddTargetNotify
VOID __stdcall VfThunkAddTargetNotify(_VF_TARGET_DRIVER *TargetNode){
union {_VF_TARGET_ALL_SHARED_EXPORT_THUNKS AllSharedExportThunks;struct {unsigned __int32 SnapSharedExportsFailed : 1;unsigned __int32 Spare : 31;} Flags;} *p_u1;
p_u1 = &TargetNode->u1;
if( !(unsigned int)ViThunkCreateSharedExportInformation(
(char *)TargetNode->TreeNode.Base.p,
(__int64)&VfRegularThunks,
48i64,
&VfRegularThunksBitMapHeader,
(void **)&TargetNode->u1.AllSharedExportThunks.SharedExportThunks)
|| !(unsigned int)ViThunkCreateSharedExportInformation(
(char *)TargetNode->TreeNode.Base.p,
(__int64)&VfPoolThunks,
48i64,
&VfPoolThunksBitMapHeader,
(void **)&TargetNode->u1.AllSharedExportThunks.PoolSharedExportThunks)
|| !(unsigned int)ViThunkCreateSharedExportInformation(
(char *)TargetNode->TreeNode.Base.p,
(__int64)&VfOrderDependentThunks,
56i64,
&VfOrderDependentThunksBitMapHeader,
(void **)&TargetNode->u1.AllSharedExportThunks.OrderDependentSharedExportThunks)
|| !(unsigned int)ViThunkCreateSharedExportInformation(
(char *)TargetNode->TreeNode.Base.p,
(__int64)&VfXdvThunks,
48i64,
&VfXdvThunksBitMapHeader,
(void **)&TargetNode->u1.AllSharedExportThunks.XdvSharedExportThunks) )
{
ViThunkFreeSharedThunksArray((void **)&p_u1->AllSharedExportThunks.SharedExportThunks);
ViThunkFreeSharedThunksArray((void **)&TargetNode->u1.AllSharedExportThunks.PoolSharedExportThunks);
ViThunkFreeSharedThunksArray((void **)&TargetNode->u1.AllSharedExportThunks.OrderDependentSharedExportThunks);
ViThunkFreeSharedThunksArray((void **)&TargetNode->u1.AllSharedExportThunks.XdvSharedExportThunks);
LODWORD(p_u1->AllSharedExportThunks.SharedExportThunks) |= 1u;
}
}Referenced by:
VfTargetDriversAdd