Overview
C API (Component Interface)
struct ModuleInfo { const struct FrameworkVersion* engineVersion; UINT32 archBits; UINT32 binding; UINT32 flags; };

The module information structure holds information about the module, as opposed to information about the component (cf. ComponentInfo). This structure is returned to the framework by the module during EVENT_MODULE_INIT.

Fields

FrameworkVersion* engineVersion
The version of the Engine against which the module was compiled (i.e. not the run-time Engine version).
UINT32 archBits
This field should be set to 32 or 64, the bit-width of the architecture it is compiled for.
UINT32 binding
This field is used to indicate the binding against which a particular component is built.
UINT32 flags
See below.

Flags

F_NO_CONCURRENCY
If set, the Engine will instantiate all copies of this process in a single thread. If multiple copies of this process are placed in separate threads by initial thread assignment, thread reassignment will cause all copies to run in the first copy's thread. Set this flag if it is not safe to run more than one instance of the process concurrently.
F_NO_CHANGE_THREAD
If set, the framework will not move components instantiated by this module from one worker thread to another during dynamic load balancing. In other words, all events received by components will be called in the same worker thread (with the possible exception of EVENT_MODULE_INIT). Any component that uses thread-sensitive resources (e.g. has GUI components) should set this flag.
F_NO_CHANGE_VOICE
If set, the framework will not move components instantiated by this module from one voice to another during dynamic load balancing. In other words, all events received by components will be called from the same voice (with the possible exception of EVENT_MODULE_INIT). Any component that uses voice-sensitive resources (like local hardware) should set this flag.
Notes
  • The framework may still instantiate more than one instance of a Process that sets F_NO_CONCURRENCY and run them interleaved, so setting this flag does not relieve the process of data encapsulation responsibilities.
  • F_NO_CONCURRENCY is currently only respected for Process components. If you intend to author a Data (why???) or Utility (possibly...) component that is not thread-safe, you will have to first request a new release that respects this flag for your component type.

Discussion

See the discussion at ComponentInfo.