<font size=2 face="Calibri">Hi Valerij,</font>
<br>
<br><font size=2 face="Calibri">I think you would be better off asking
this question in the EDK2 mailing list. These questions that you
are asking are more related to the UEFI specification than they are to
operating systems that support UEFI. </font>
<br>
<br><a href=https://github.com/tianocore/tianocore.github.io/wiki/Getting%20Started%20with%20EDK%20II><font size=2 color=blue face="Calibri">https://github.com/tianocore/tianocore.github.io/wiki/Getting%20Started%20with%20EDK%20II</font></a><font size=2 face="Calibri">z</font>
<br>
<br><font size=2 face="Calibri">See the "Futher Help" section
with information about the edk2-devel mailing list. </font>
<br>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From:
</font><font size=1 face="sans-serif">valerij zaporogeci
<vlrzprgts@gmail.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">To:
</font><font size=1 face="sans-serif">fw_os_forum@mailman.uefi.org</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date:
</font><font size=1 face="sans-serif">05/23/2016 04:47 AM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject:
</font><font size=1 face="sans-serif">[Fw_Os_Forum]
OpenProtocol semantics</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Sent by:
</font><font size=1 face="sans-serif">fw_os_forum-bounces@mailman.uefi.org</font>
<br>
<hr noshade>
<br>
<br>
<br><tt><font size=2>Hi again. I see there is not much activity, but maybe
it still has<br>
some sense to ask my farther questions.<br>
The specification says (in the description of<br>
UninstallProtocolInterface() service), that in order to "safely"<br>
uninstall a protocol interface, first the driver consuming it should<br>
be disconnected (through DisconnectController->Stop->CloseProtocol),<br>
and then those with BY_HANDLE_PROTOCOL, TEST_PROTOCOL and GET_PROTOCOL<br>
attributes _should be closed_.<br>
My question is HOW exactly those three types of agents are really<br>
supposed to have been "closed"?<br>
And also - is there really a necessity to hold information about those<br>
three types of agents in the data base? How is it used? By whom?<br>
Clients opening the protool one of those three ways are even not<br>
required to CloseProtocol() and there is a clear notice that for<br>
example driver opening with GET_PROTOCOL would not be notified about<br>
the protocol uninstallation\reinstallation. So there is no mechanism<br>
to safely use GET_PROTOCOL, and client opening with TEST_PROTOCOL<br>
should only rely on the status code returned. All these things make<br>
question the necessity to hold information about such types of opening<br>
in the data base. And again - how they should be closed? For example<br>
those opening with BY_HANDLE_PROTOCOL would pass the UEFI image handle<br>
as an AgentHandle. What here may be "closed"? If it's not about<br>
unloading the image (whose handle is an AgnetHandle), and this is only<br>
about the database "book keeping", then for what it is? In the
case of<br>
those thee types of opening?<br>
As a consequense - would it be compliant to only keep in the data base<br>
the information about BY_DRIVER, BY_DRIVER_EXCLUSIVE, EXCLUSIVE and<br>
BY_CHILD_CONTROLLER types of opening?<br>
Thanks.<br>
_______________________________________________<br>
Fw_os_forum mailing list<br>
Fw_os_forum@mailman.uefi.org<br>
</font></tt><a href=http://lists.mailman.uefi.org/mailman/listinfo/fw_os_forum><tt><font size=2>http://lists.mailman.uefi.org/mailman/listinfo/fw_os_forum</font></tt></a><tt><font size=2><br>
</font></tt>
<br>
<br>