Language Environment provides CWI support for the implicit loading of a DLL, which
resolves the DLL's exported symbols with the referencing DLL application's
matching imported symbols. CWIs are provided to perform the following
functions:
- Trigger Load on Reference for imported variables
- Trigger Load on Call for imported functions
- Get Function support to provide linkage to a function that has
been invoked through direct branching to a function pointer (as if
it pointed to a function instead of a function descriptor).
In addition, when the enclave terminates, Language Environment provides the support
to delete all implicitly-loaded DLLs and any explicitly-loaded DLLs
that have not yet been deleted.
Note: The calling routine must ensure that AMODE switching
is not necessary between the application and the DLL. The AMODE of
the DLL entry is reflected in the high-order bit of the DLL's entry
point address. Language Environment does not attempt to detect a mismatch in the
AMODE of the DLL and DLL application and does not enforce this restriction.
The following messages are unique to implicit DLL reference. The
CWIs will signal these messages as error conditions.
Condition |
|
CEE3F6 |
Severity |
3 |
Msg_No |
3558 |
Message |
DLL dll_name does not export
any variables. |
CEE3F7 |
Severity |
3 |
Msg_No |
3559 |
Message |
External variable var_name was
not found in DLL dll_name. |
CEE3F8 |
Severity |
0 |
Msg_No |
3560 |
Message |
DLL dll_name does not export
any functions. |
CEE3F9 |
Severity |
0 |
Msg_No |
3561 |
Message |
External variable var_name was
not found in DLL dll_name. |
CEE3FO |
Severity |
0 |
Msg_No |
3576 |
Message |
External function func_name was
not found in DLL dll_name. |