overview <p>The structure that defines a component within WinGate. You pass a pointer to a ComponentEntry object to&nbsp;<ac:link><ri:page ri:content-title="RegisterComponent" /></ac:link>&nbsp;in order to register your component with the host (WMC or WinGate Engine).</p> Structure <ac:structured-macro ac:name="code"><ac:plain-text-body><![CDATA[struct ComponentEntry { unsigned long dwSize; // size of this structure GUID guid; // UUID of the component WCHAR szName[COMPONENT_MAXNAME + 1]; // display name of the component unsigned long dwComponentVersion; // version of the component for version checking modules etc bool bPublic; // is this component public? HostComponentHandle hHostPrivate; // context handle used by Host to associate with the component ComponentContextHandle hComponentPrivate; // context handle used by component to associate with the Host QueryInitInterfacesFunc QueryInitInterfaces; // OPTIONAL: query a component to see if its dependencies for initialisation are met InitInterfacesFunc InitInterfaces; // OPTIONAL: triggers registration of interfaces, if you have any, you need this NotifyFunc Notify; // OPTIONAL: receives notifications, should be NULL if notifications not required StartFunc Start; // OPTIONAL: start a component service. StopFunc Stop; // OPTIONAL: stop a component service StoreFunc Store; // OPTIONAL: Store a component configuration LoadFunc Load; // OPTIONAL: Load a component configuration };]]></ac:plain-text-body></ac:structured-macro> Members <ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">dwSize</ac:parameter><ac:parameter ac:name="Type">unsigned long</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>The size in bytes of the ComponentEntry structure.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">guid</ac:parameter><ac:parameter ac:name="Type">GUID</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>The UUID of the component.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">szName</ac:parameter><ac:parameter ac:name="Type">WCHAR</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>The null-terminated name of the component that&apos;s displayed to the user.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">dwComponentVersion</ac:parameter><ac:parameter ac:name="Type">unsigned long</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>The version number of the component. This value is displayed in the Modules panel inside the WinGate Management Console.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">bPublic</ac:parameter><ac:parameter ac:name="Type">bool</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Specifies whether this component is public. Public components will notify other modules of their existence via their own <ac:link />.Notify callback.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">hHostPrivate</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">HostComponentHandle</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Used by the framework internally. Do not modify.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">hComponentPrivate</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">ComponentContextHandle</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>A space for some private data to be stored by your component for access in functions that pass you a ComponentEntry * such as <ac:link><ri:page ri:content-title="ComponentEntry.Notify" /><ac:plain-text-link-body><![CDATA[Notify]]></ac:plain-text-link-body></ac:link> and <a href="http://docs.qbik.com/display/WINGATESDK/ComponentEntry.InitInterfaces">InitInterfaces</a><a href="http://docs.qbik.com/display/WINGATESDK/ComponentEntry.InitInterfaces">&nbsp;</a> among others.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">QueryInitInterfaces</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">QueryInitInterfacesFunc</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Pointer to the function to query whether the interfaces for the component can be initialised. See <ac:link ac:anchor="Remarks" /></p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">InitInterfaces</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">InitInterfacesFunc</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Pointer to the function that initialises the component&apos;s interfaces. This will not be called by the framework unless <ac:link><ri:page ri:content-title="ComponentEntry.QueryInitInterfaces" /></ac:link> has returned true;</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">Notify</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">NotifyFunc</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Pointer to the function that receives notifications from the framework.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">Start</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">StartFunc</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Starts the component</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">Stop</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">StopFunc</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Stops the component</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">Store</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">StoreFunc</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Instructs the component that it needs to store its configuration.</p></ac:rich-text-body></ac:structured-macro><ac:structured-macro ac:name="vardef"><ac:parameter ac:name="Name">Load</ac:parameter><ac:parameter ac:name="Linked">true</ac:parameter><ac:parameter ac:name="Type">LoadFunc</ac:parameter><ac:parameter ac:name="Style">Member</ac:parameter><ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter><ac:rich-text-body><p>Instructs the component that it needs to refresh its configuration.</p><div /></ac:rich-text-body></ac:structured-macro> Remarks <p>Before a component has its interfaces initialised by a call to&nbsp;<a href="http://docs.qbik.com/display/WINGATESDK/ComponentEntry.InitInterfaces">InitInterfaces</a>,&nbsp;<ac:link><ri:page ri:content-title="ComponentEntry.QueryInitInterfaces" /><ac:plain-text-link-body><![CDATA[QueryInitInterfaces]]></ac:plain-text-link-body></ac:link><strong>&nbsp;</strong>is called to see whether it is ready. A component can use this to wait until all components it is dependent on have had their interfaces initialised first.&nbsp;</p> Examples <ac:structured-macro ac:name="code"><ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body></ac:structured-macro> SeeAlso <p><strong><ac:link><ri:page ri:content-title="ComponentEntry.QueryInitInterfaces" /><ac:plain-text-link-body><![CDATA[QueryInitInterfaces]]></ac:plain-text-link-body></ac:link></strong></p><p><ac:link><ri:page ri:content-title="ComponentEntryFunctions" /><ac:plain-text-link-body><![CDATA[ComponentEntry Functions]]></ac:plain-text-link-body></ac:link></p>