tahoma2d/toonz/sources/common/twain/ttwain_stateW.c

75 lines
1.6 KiB
C
Raw Normal View History

2016-03-19 06:57:51 +13:00
#pragma warning(disable : 4996)
#include <windows.h>
#include <stdlib.h>
2016-03-19 06:57:51 +13:00
#include "ttwain_state.h"
#include "ttwainP.h"
#include "ttwain_statePD.h"
#include "ttwain_util.h"
#ifdef __cplusplus
extern "C" {
#endif
static void *hDSMLib; /* handle of DSM */
extern void TTWAIN_SetState(TWAINSTATE status);
2016-06-15 18:43:10 +12:00
int TTWAIN_LoadSourceManagerPD(void) {
char winDir[_MAX_PATH];
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
if (TTWAIN_GetState() >= TWAIN_SM_LOADED)
return TRUE; /* DSM already loaded */
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
GetWindowsDirectory(winDir, _MAX_PATH);
if (!winDir[0]) return FALSE;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
strcat(winDir, "\\");
strcat(winDir, DSM_FILENAME);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
hDSMLib = LoadLibrary(winDir);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
/*
2016-03-19 06:57:51 +13:00
if (tnz_access(winDir, 0x00) != -1)
2016-06-15 18:43:10 +12:00
hDSMLib = LoadLibrary(winDir);
2016-03-19 06:57:51 +13:00
else
2016-06-15 18:43:10 +12:00
{
hDSMLib = 0;
return FALSE;
}
2016-03-19 06:57:51 +13:00
*/
2016-06-15 18:43:10 +12:00
if (hDSMLib) {
TTwainData.DSM_Entry =
(DSMENTRYPROC)GetProcAddress(hDSMLib, DSM_ENTRYPOINT);
if (TTwainData.DSM_Entry) {
TTWAIN_SetAvailable(AVAIABLE_YES);
TTWAIN_SetState(TWAIN_SM_LOADED);
} else {
FreeLibrary(hDSMLib);
hDSMLib = NULL;
}
} else
TTwainData.DSM_Entry = 0;
return (TTWAIN_GetState() >= TWAIN_SM_LOADED);
2016-03-19 06:57:51 +13:00
}
/*---------------------------------------------------------------------------*/
2016-06-15 18:43:10 +12:00
int TTWAIN_UnloadSourceManagerPD(void) {
if (TTWAIN_GetState() == TWAIN_SM_LOADED) {
if (hDSMLib) {
FreeLibrary(hDSMLib);
hDSMLib = NULL;
}
TTwainData.DSM_Entry = NULL;
TTWAIN_SetState(TWAIN_PRESESSION);
}
return (TTWAIN_GetState() == TWAIN_PRESESSION);
2016-03-19 06:57:51 +13:00
}
/*---------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif