Initializes the TWAIN session.


#include "lttwn.h"

L_LTTWN_API L_INT L_TwainInitSession2(phSession, pAppData, uFlags)



Pointer to a TWAIN session handle.  This handle is needed to acquire pages from the TWAIN source, and work with template files, containers, capabilities, and properties.


Pointer to an APPLICATIONDATA structure. This structure will have the handle of the parent window, in addition to other data about the application.

L_UINT uFlags

Flags that indicate the function behavior.  Possible values are:

Value Meaning
LTWAIN_INIT_MULTI_THREADED [0x0001] Initialize the TWAIN session with the multi-threaded option.
LTWAIN_INIT_USE_THUNKSERVER [0x0002] Initialize the TWAIN session with the THUNK server option.
0 Behave the same way L_TwainInitSession does.


Value Meaning
SUCCESS The function was successful.
! = SUCCESS An error occurred.  Refer to Return Codes.
ERROR_TWAIN_INVALID_DLL (-561) Invalid DLL. Most likely, this is because an old version of TWAINDSM.DLL is in the system folder. Make sure you have at least version of this DLL. Download the DLL from www.twain.org.
ERROR_TWAIN_NOT_INITIALIZED (-562) Invalid DLL. TWAIN is not initialized. (Assuming that the LTWAIN_INIT_USE_THUNKSERVER flag is being used), The THUNK server (ltthunkserver.exe) failed to start. To resolve the error, make sure ltthunkserver.exe is registered correctly and that all dependencies listed in the Using the LEADTOOLS THUNK Utility with TWAIN topic reside in the same folder in which ltthunkserver.exe is located.


L_TwainInitSession2 (or L_TwainInitSession) must be called before calling any other LEADTOOLS TWAIN toolkit functions.

When the handle to the TWAIN session is no longer needed, free it by calling L_TwainEndSession. Every call to L_TwainInitSession2 requires a call to L_TwainEndSession when the session is no longer needed.

When passing LTWAIN_INIT_USE_THUNKSERVER to uFlags, it detects and interacts with a 32-bit TWAIN driver or device from a 64-bit process application.
Pass this value only when using a TWAIN device that does not have a 64-bit driver and the operating system is 64-bit. When using the THUNK server be sure to include in the redistributables for the application all dependency files listed in the Using the LEADTOOLS THUNK Utility with TWAIN.

TWAIN Specification Support

LEADTOOLS TWAIN toolkits support both the TWAIN 1.9 and the TWAIN 2.x specifications. By default the toolkit will check whether the current selected TWAIN data source is TWAIN 2.x compliant and try to load the TWAIN 2.x DLL (TWAINDSM.DLL) if it exists in the system. The TWAIN version will be "TWAIN_VERSION2".

If that fails or if the scanner is not compatible with TWAIN 2.x, the toolkit will try to start TWAIN 1.9 (Twain_32.DLL) from your system. The TWAIN version will be "TWAIN_VERSION1".

You can also override the default behavior and explicitly set which version of TWAIN the selected device will use. To do so, call L_TwainSetVersion and pass "TWAIN_VERSION1" to use version 1.9, or "TWAIN_VERSION2" to use version 2.x. For more information, refer to Setting which TWAIN Specification Version to use and Managing the TWAIN Source.

Call L_TwainGetVersion to determine which TWAIN specification is currently being used by the LEADTOOLS TWAIN toolkit.                  

Note: When using the thunk server, working on a 64-Bit operating system, and using a TWAIN device without a 64-Bit driver, it is preferred to pass NULL to hWnd in pAppData parameter.

Required DLLs and Libraries

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files to be Included with your Application.

TWAIN Session Behavior

A TWAIN session is a communication session between LEADTOOLS Twain and your TWAIN sources. The internal TWAIN session handle provides access to this TWAIN session.

See Also




L_INT TwainInitSession2Example(HWND hWnd,HBITMAPLIST hBitmap) 
   L_INT nRet; 
   L_BOOL bAvailable; 
   /* Check to see if TWAIN is installed */ 
   bAvailable = L_IsTwainAvailable(hWnd); 
   if (bAvailable)  
      AppData.hWnd = hWnd; 
      AppData.uStructSize = sizeof(APPLICATIONDATA); 
      lstrcpy (AppData.szManufacturerName, TEXT("LEAD Technologies, Inc.")); 
      lstrcpy (AppData.szAppProductFamily, TEXT("LEAD Test Applications")); 
      lstrcpy (AppData.szVersionInfo, TEXT("Version 1.0")); 
      lstrcpy (AppData.szAppName, TEXT("TWAIN Test Application")); 
      nRet = L_TwainInitSession2(&hSession, &AppData, LTWAIN_INIT_MULTI_THREADED); 
      if (nRet != SUCCESS) 
         return nRet; 
      nRet = L_TwainAcquireList(hSession, hBitmap, NULL, LTWAIN_SHOW_USER_INTERFACE); 
      if(nRet != SUCCESS) 
         return nRet; 
      nRet = L_TwainEndSession(&hSession); 
      if(nRet != SUCCESS) 
         return nRet; 
   return SUCCESS; 
Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.


Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.