/* * Copyright (c) 2005 Massachusetts Institute of Technology * Copyright (c) 2007 Secure Endpoints Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ /* $Id$ */ #ifndef __KHIMAIRA_KHUIDEFS_H #define __KHIMAIRA_KHUIDEFS_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef NOEXPORT #include #endif #include /*! \internal */ KHMEXP void KHMAPI khm_version_init(void); /*! \defgroup khui User Interface Functions and data structures for interacting with the user interface. @{*/ /*! \brief Get the version of the NetIDMgr library \param[out] libver Receives the version of the library. \param[out] apiver Receives the API version of the library. Optional. Set to NULL if this value is not required. \note When the NetIDMgr framework loads a plugin, it checks the version information of the plugin against the version of the library to determine if the plugin is compatible. */ KHMEXP void KHMAPI khm_get_lib_version(khm_version * libver, khm_ui_4 * apiver); /*! \brief Return the version of Common Control library Can be used to check the version of the Windows Common Control library that is currently loaded. The return value of the function is the packed version value obatained by the macro : \code MAKELONG(vesion->dwMinorVersion, version->dwMajorVersion); \endcode The \a pdvi parameter is optional. Specify NULL if this is not required. */ KHMEXP khm_ui_4 KHMAPI khm_get_commctl_version(khm_version * pdvi); /*! \brief UI callback function Used with khui_request_UI_callback(). \see khui_request_UI_callback() */ typedef khm_int32 (KHMAPI *khm_ui_callback)(HWND hwnd_main_wnd, void * rock); /*! \brief Request a UI callback In general, plug-ins in Network Identity Manager run in their own thread and will not be able to interact with the user directly by creating windows of its own. There are exceptions to this, such as when the plug-in is responding to a new credentials request or if the plug-in provides configuration panels. However, if a plug-in needs to provide a user interface to the user outside of the provisions already provided by Network Identity Manager, it needs to do so from within the user interface thread. To do so, a plug-in would provide a callback function of the type ::khm_ui_callback to this function. The Network Identity Manager will then call the callback function from within the user interface thread. At this point, the callback function can create any windows it wishes to create and interact with the user directly. The callback function would be called synchronously. khui_request_UI_callback() will not return until the user interface processes the request and calls the callback function. The return code of khui_request_UI_callback() will be the return code of the callback. \param[in] cb The callback function which will be called from the user interface thread. \param[in] rock An arbitrary parameter which will be passed into the callback function. \return The return value of \a cb. \note When the plug-in creates any windows, it should specify the window handle provided via the \a hwnd_main_wnd parameter as the parent window. \see ::khm_ui_callback */ KHMEXP khm_int32 KHMAPI khui_request_UI_callback(khm_ui_callback cb, void * rock); /*!@}*/ #endif