I think what you are asking is how to create an EFI_SECTION_SMM_DEPEX in the FV image for your module?
The DXE dispatcher uses the EFI_SECTION_DXE_DEPEX for dispatch, while SMM used EFI_SECTION_SMM_DEPEX. The Smst name space is totally independent in regards to the DXE/EFI protocol database.
So I would imagine if your driver is of type DXE_SMM_DRIVER and you have a [Depex] in your INF that an EFI_SECTION_SMM_DEPEX should be created. If you are not using that driver type then I think you need to use <SMM_DEPEX> sub-section tag.
I've not tried this, and it is not totally clear from the documentation, but I think it should look like:
You should be able to use the VolInfo tool to dump out the FV and see what type of depex sections get created.
On Jul 17, 2012, at 2:03 AM, Naresh Kollu. wrote:
If same protocol guid is installed in both DXE(using pbs->InstallProtocol()) and SMM(using Smst->InstallProtocol()), when we try to add the same guid dependency in other SMM driver, the dependency is evaluated with DXE instance not SMM instance. Because of this, the dependent SMM driver is getting dispatched before the SMM driver which produces the the protocol GUID.
Is there any other way by which we can refer to SMM instance for the same GUID ?
I think this should be supported by EDKII INF component but do not know exactly how to use this. If EDKII INF supports, can you please give an example ?