1/****************************************************************************************
2
3 Copyright (C) 2015 Autodesk, Inc.
4 All rights reserved.
5
6 Use of this software is subject to the terms of the Autodesk license agreement
7 provided at the time of installation or download, or which otherwise accompanies
8 this software in either electronic or hard copy form.
9
10****************************************************************************************/
11
12//! \file fbxmodule.h
13#ifndef _FBXSDK_CORE_MODULE_H_
14#define _FBXSDK_CORE_MODULE_H_
15
16#include <fbxsdk/fbxsdk_def.h>
17
18#ifndef FBXSDK_ENV_WINSTORE
19
20#include <fbxsdk/fbxsdk_nsbegin.h>
21
22typedef void* FbxModule;
23
24/** Loads the specified module into the address space of the calling process.
25 * \param pFilePath The full file path name of the module to load.
26 * \return The module handle if it successfully loaded, otherwise NULL.
27 * \remark The specified module may cause other modules to be loaded.
28 */
29FBXSDK_DLL FbxModule FbxModuleLoad(const char* pFilePath);
30
31/** Retrieves the address of an exported function or variable from the specified module.
32 * \param pModuleHandle A valid module handle.
33 * \param pProcName The procedure name to search.
34 * \return The procedure handle if valid, otherwise NULL.
35 */
36FBXSDK_DLL void* FbxModuleGetProc(FbxModule pModuleHandle, const char* pProcName);
37
38/** Frees the loaded module and, if necessary, decrements its reference count.
39 * \param pModuleHandle A valid module handle.
40 * \return \c true on success, \c false otherwise.
41 * \remark When the reference count reaches zero, the module is unloaded from the address space of the calling process and the handle is no longer valid.
42 */
43FBXSDK_DLL bool FbxModuleFree(FbxModule pModuleHandle);
44
45#include <fbxsdk/fbxsdk_nsend.h>
46
47#endif /* !FBXSDK_ENV_WINSTORE */
48
49#endif /* _FBXSDK_CORE_MODULE_H_ */
50