CeLog IOCTL Interface (Windows Embedded CE 6.0)

1/5/2010

To communicate with the kernel, an event tracking library uses the interface provided by the KernelLibIoControl function and the set of CeLog IOCTLs that your library can call. For specific information about the CeLog IOCTLs, see Tools IOCTLs

Your event-tracking library can present one more interface for use by applications. To call into your library, your library can export IOControl, and applications can call the KernelLibIoControl function. In this manner, you can define your own IOCTL values for applications to call extend the functionality of your library.

For an application to use KernelLibIoControl to call into your library, the application must first open a handle to your library by calling LoadKernelLibrary. Note, that the application must be privileged.

Once an event-tracking library is loaded into the kernel, there is no way to unload it. The library remains loaded until the device is rebooted. However, the library can de-register so that its functions no longer receive event tracking calls from the kernel, by calling IOCTL_CELOG_DEREGISTER. The library registers and deregisters dynamically as needed.

The kernel allows multiple event tracking libraries to be loaded and registered for event tracking calls simultaneously. The kernel ensures that all libraries receive the calls. If you have more than one event-tracking library loaded at the same time, the following information might be helpful:

  • Only one timer frequency can be reported in the CELID_LOG_MARKER event. If more than one event-tracking library reports a non-zero timer frequency in their CeLogExportTable, then the kernel uses the frequency from the most recently registered library when it logs this event.
  • The set of zones that are enabled across the system is a bitmask of the zones from all event-tracking libraries. Every time the zones change, the kernel queries all event-tracking libraries to learn their individual zone settings. Every zone that is enabled in at least one library is enabled overall. As a result, libraries can receive logging calls for zones that they individually have not enabled.
    When an event tracking library changes its own zones, the library can call IOCTL_CELOG_REPORTZONECHANGE to make the kernel re-calculate the overall zone settings.

See Also

Reference

Registering an Event Tracking Library

Concepts

Implementing an Event Tracking Library