Epocwind.out is the log file created by the Symbian emulator. By default it is located under the user's temporary directory (Usually C:\Documents and Settings\[Username]\Local Settings\Temp under Windows XP OR "C:\Users\[Username]\AppData\Local\Temp" under Windows 7)
For the file to be created, "Enable EPOCWIND.OUT logging" must be enabled under the C++ Debug tab of the preferences dialog of the emulator window.
Epocwind.out is a text file and you can open it in any text editor to check logs created by emulator.
The file starts by listing the parameters of the emulator:
- PlatSecEnforcement: The emulator is emulating platform security, and calls that to functions without sufficient capabilities on the part of the program will fail the same way they would on the device.
- PlatSecDiagnostics: The emulator will add debugging messages to Epocwind.out if a program tries to call functions for which is doesn't have sufficient capabilities. If PlatSecEnforcement, above, is disabled, the call will still succeed.
- PlatSecProcessIsolation: Certain kernel APIs can allow insecure actions, for example a thread in one process terminating a thread in another process. If enabled, run-time checks by the kernel enforce the correct usage of these APIs.
- PlatSecEnforceSysBin: The executable loader will only look for and load files in the Sys\Bin directory. If a different path has been specified, it will be ignored.
- PlatSecDisabledCaps: A list of the disabled capabilities in the emulator. None by default. This works differently than you might think: disabled capabilities are all granted to every binary run on the emulator at default, so calls using these capabilities will always succeed.
Most of these settings can be changed when running the emulator under the Platform Security tab of the preferences dialog.
Platform Security Messages
When a platform security check fails, and PlatSecDiagnostics is enabled (see above), the log will contain a message starting with the words "*PlatSec* WARNING" and then specifying the details of the call and why it failed - for example:
*PlatSec* WARNING - Capability check would have failed - A Message (function number=0x00000001) from Thread AddressBook[a0000180]0001::AddressBook, sent to Server !Sen, was checked by Thread Sen.EXE[101f96f4]0001::Main and was found to be missing the capabilities: NetworkServices