<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: Pyrex Header Wrapping</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>I believe it is because you put the colon after the variable declaration. In python that would indicate the definition of a function or control structure block:</FONT></P>

<P><FONT SIZE=2>cdef extern from &quot;ScanAPI.h&quot;:</FONT>
</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>cdef struct tagSCANDEVINFO:</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; DWORD StructSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; SCANNER_TYPE ScannerType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; unsigned int fHardwareTrigger :1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;-- this is the problem</FONT>
</P>

<P><FONT SIZE=2>The rest of the list can tell me if I'm wrong but Pyrex doesn't require you to be this specific.&nbsp; Merely define them without the :1 (is this bitwise alignment?) and Pyrex will pick up the correct definition from the real header. In fact it is even simpler with Pyrex 0.9.3 if you only need to declare the struct because you need to pass it to a function (i.e. you don't need to access the data members and don't want the returned values) the following will be a suitable declaration:</FONT></P>

<P><FONT SIZE=2>cdef extern from &quot;ScanAPI.h&quot;:</FONT>
</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>cdef struct tagSCANDEVINFO:</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>pass</FONT>
</P>

<P><FONT SIZE=2>If not merely replace you previous definition with the following:</FONT>
</P>

<P><FONT SIZE=2>cdef extern from &quot;ScanAPI.h&quot;:</FONT>
</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>.</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cdef struct tagSCANDEVINFO:</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD StructSize</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; SCANNER_TYPE ScannerType</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; unsigned int fHardwareTrigger</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; unsigned int fSoftwareTrigger</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; unsigned int fSoftwareAbortTrigger</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; unsigned int fGoodReadLight</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; unsigned int fGoodReadSound</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; TCHAR SymbolType</FONT>
</P>

<P><FONT SIZE=2>Any questions let me know.</FONT>
</P>

<P><FONT SIZE=2>Regards,</FONT>
</P>

<P><FONT SIZE=2>Grant McDonald</FONT>
</P>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: Adam McCarthy [<A HREF="mailto:frostbite.adam@gmail.com">mailto:frostbite.adam@gmail.com</A>] </FONT>
<BR><FONT SIZE=2>Sent: Friday, 10 September 2004 3:23 AM</FONT>
<BR><FONT SIZE=2>To: Grant McDonald</FONT>
<BR><FONT SIZE=2>Cc: pyrex@lists.copyleft.no</FONT>
<BR><FONT SIZE=2>Subject: Re: Pyrex Header Wrapping</FONT>
</P>

<P><FONT SIZE=2>I am currently wrapping the current header to implement a barcode</FONT>
<BR><FONT SIZE=2>scanner SDK in a python program.&nbsp; I am currently stuck with the</FONT>
<BR><FONT SIZE=2>following error:</FONT>
</P>

<P><FONT SIZE=2>ScanAPI.pyx:39:38: C function definition not allowed here</FONT>
</P>

<P><FONT SIZE=2>But afaik, I am not defining a function.</FONT>
</P>

<P><FONT SIZE=2>This is the original C header:</FONT>
</P>

<P><FONT SIZE=2>/**************************************************************************************</FONT>
</P>

<P><FONT SIZE=2>&nbsp;Copyright (C) 1999 by Socket Communications, All Rights Reserved.</FONT>
</P>

<P><FONT SIZE=2>&nbsp;MODULE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScanAPI.h</FONT>
</P>

<P><FONT SIZE=2>&nbsp;PURPOSE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Include file for the Socket Scanner API.</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<BR><FONT SIZE=2>&nbsp;DESCRIPTION:&nbsp;&nbsp; Currently supports only one scanner.&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<BR><FONT SIZE=2>&nbsp;COMMENTS:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Initial coding on 9/2/99 by Gary Cuevas</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<BR><FONT SIZE=2>****************************************************************************************/</FONT>
</P>
<BR>

<P><FONT SIZE=2>#ifdef SCANAPI_EXPORTS</FONT>
<BR><FONT SIZE=2>#define SCANAPI_API __declspec(dllexport)</FONT>
<BR><FONT SIZE=2>#else</FONT>
<BR><FONT SIZE=2>#define SCANAPI_API __declspec(dllimport)</FONT>
<BR><FONT SIZE=2>#endif</FONT>
</P>
<BR>

<P><FONT SIZE=2>#ifdef __cplusplus</FONT>
<BR><FONT SIZE=2>&nbsp; extern &quot;C&quot; {</FONT>
<BR><FONT SIZE=2>#endif</FONT>
</P>

<P><FONT SIZE=2>// Types of Socket Scanner products</FONT>
</P>

<P><FONT SIZE=2>enum SCANNER_TYPE {SCANNER_NONE = 0,&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // no scanner</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp;&nbsp; SCANNER_CFCARD,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Socket In-Hand Scan Card</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp;&nbsp; SCANNER_WAND,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // a wand</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp;&nbsp; SCANNER_GUN};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // a gun</FONT>
</P>

<P><FONT SIZE=2>// Types of good-read sounds</FONT>
</P>

<P><FONT SIZE=2>enum GRS_TYPE {GRS_NONE = 0,&nbsp;&nbsp;&nbsp; // no good read sound</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp;&nbsp; GRS_MESSAGEBEEP,&nbsp;&nbsp;&nbsp;&nbsp; // play MessageBeep(0) on good read</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp;&nbsp; GRS_WAVFILE};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // play user-supplied .WAV file on good read</FONT>
</P>

<P><FONT SIZE=2>// Scanner device information structure</FONT>
</P>

<P><FONT SIZE=2>typedef struct tagSCANDEVINFO{</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>DWORD&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StructSize;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // size of the structure</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>SCANNER_TYPE&nbsp;&nbsp;&nbsp; ScannerType;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // gun, wand, or integrated card</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>unsigned int&nbsp;&nbsp;&nbsp; fHardwareTrigger :1;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // most likely a gun</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>unsigned int&nbsp;&nbsp;&nbsp; fSoftwareTrigger :1;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // most likely an integrated card</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>unsigned int&nbsp;&nbsp;&nbsp; fSoftwareAbortTrigger :1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // most likely an integrated card</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>unsigned int&nbsp;&nbsp;&nbsp; fGoodReadLight :1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // most likely a gun</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>unsigned int&nbsp;&nbsp;&nbsp; fGoodReadSound :1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // most likely a gun</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>TCHAR&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SymbolType;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Symbol type code from ISC scanner</FONT>
<BR><FONT SIZE=2>} SCANDEVINFO, *LPSCANDEVINFO;</FONT>
</P>

<P><FONT SIZE=2>// API return codes</FONT>
</P>

<P><FONT SIZE=2>enum SCAN_RESULT {SR_SUCCESS = 0,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_INVALID_WMINSERTION,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_INVALID_WMREMOVAL,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_PLUG_THREAD_FAILURE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_DEVICE_THREAD_FAILURE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_INVALID_SCANNER_HANDLE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_OPEN_FAILURE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_INVALID_WMSCANNERDATA,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_NO_DATA,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_BUFFER_TOO_SMALL,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_SCANNER_NOT_OPEN,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_INVALID_SOUND_TYPE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_WAVFILE_NOT_FOUND,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_MEMORY_FAILURE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_INVALID_ERR,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_TOO_MANY_USERS,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_TOO_MANY_ATTEMPTS,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_NOT_INITIALIZED,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_DEVICE_FAILURE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_INTERNAL_FAILURE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_INVALID_STRUCTURE,</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; SR_HOTSWAP_ERROR</FONT>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>&nbsp; }; // Load Library call to load the drvr module failed</FONT>
</P>

<P><FONT SIZE=2>// API function prototypes</FONT>
</P>

<P><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanInit(HWND hWnd, UINT wmInsertion,</FONT>
<BR><FONT SIZE=2>UINT wmRemoval);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanOpenDevice(HANDLE hScanner);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanCloseDevice(HANDLE hScanner);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanGetDevInfo(HANDLE hScanner,</FONT>
<BR><FONT SIZE=2>LPSCANDEVINFO lpScanDevInfo);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanRequestDataEvents(HANDLE hScanner,</FONT>
<BR><FONT SIZE=2>HWND hWnd, UINT wmScannerData);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanTrigger(HANDLE hScanner);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanAbort(HANDLE hScanner);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanGetData(HANDLE hScanner, TCHAR *</FONT>
<BR><FONT SIZE=2>lpBuff, LPINT BufSize);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanSetGoodReadSound(HANDLE hScanner,</FONT>
<BR><FONT SIZE=2>GRS_TYPE Sound, LPCTSTR lpWavFile);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanDeinit(void);</FONT>
<BR><FONT SIZE=2>SCANAPI_API SCAN_RESULT WINAPI ScanErrToText(SCAN_RESULT Err, LPTSTR</FONT>
<BR><FONT SIZE=2>lpBuff, LPINT BufSize);</FONT>
</P>

<P><FONT SIZE=2>#ifdef __cplusplus</FONT>
<BR><FONT SIZE=2>&nbsp; }</FONT>
<BR><FONT SIZE=2>#endif</FONT>
</P>

<P><FONT SIZE=2>============================================================</FONT>
</P>

<P><FONT SIZE=2>And this is my wrapper:</FONT>
</P>

<P><FONT SIZE=2>cdef extern from &quot;stdafx.h&quot;:</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef unsigned long&nbsp;&nbsp; DWORD</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef unsigned short&nbsp; BOOL</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef unsigned short&nbsp; BYTE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef unsigned short&nbsp; WORD</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FLOAT</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef FLOAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *PFLOAT</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef BOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *PBOOL</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef BOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *LPBOOL</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *PBYTE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef BYTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *LPBYTE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *PINT</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *LPINT</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef WORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *PWORD</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef WORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *LPWORD</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *LPLONG</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *PDWORD</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *LPDWORD</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *LPVOID</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INT</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef unsigned int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UINT</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef unsigned int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *PUINT</FONT>
</P>

<P><FONT SIZE=2>cdef extern from &quot;ScanAPI.h&quot;:</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; cdef enum SCANNER_TYPE:</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SCANNER_NONE = 0 # no scanner</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SCANNER_CFCARD # Socket In-Hand Scan Card</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SCANNER_WAND # a wand</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SCANNER_GUN # a gun</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp; cdef enum GRS_TYPE:</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRS_NONE = 0&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # no good read sound</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRS_MESSAGEBEEP &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # play MessageBeep(0) on good read</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRS_WAVFILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # play user-supplied .WAV on good read</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp; cdef struct tagSCANDEVINFO:</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD StructSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # size of the structure</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SCANNER_TYPE ScannerType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # gun, wand, or integrated card</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int fHardwareTrigger :1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # most likely a gun</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int fSoftwareTrigger :1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # most likely an integrated card</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int fSoftwareAbortTrigger :1&nbsp;&nbsp; # most likely an integrated card</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int fGoodReadLight :1&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # most likely a gun</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int fGoodReadSound :1&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # most likely a gun</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCHAR SymbolType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Symbol type code from ISC scanner</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef tagSCANDEVINFO SCANDEFINFO</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; ctypedef tagSCANDEVINFO *LPSCANDEVINFO</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp; cdef enum SCAN_RESULT:</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_INVALID_WMINSERTION</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_INVALID_WMREMOVAL</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_PLUG_THREAD_FAILURE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_DEVICE_THREAD_FAILURE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_INVALID_SCANNER_HANDLE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_OPEN_FAILURE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_INVALID_WMSCANNERDATA</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_NO_DATA</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_BUFFER_TOO_SMALL</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_SCANNER_NOT_OPEN</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_INVALID_SOUND_TYPE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_WAVFILE_NOT_FOUND</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_MEMORY_FAILURE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_INVALID_ERR</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_TOO_MANY_USERS</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_TOO_MANY_ATTEMPTS</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_NOT_INITIALIZED</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_DEVICE_FAILURE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_INTERNAL_FAILURE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_INVALID_STRUCTURE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SR_HOTSWAP_ERROR</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanInit(HWND hWnd, UINT wmInsertion, UINT wmRemoval)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanOpenDevice(HANDLE hScanner)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanCloseDevice(HANDLE hScanner)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanGetDevInfo(HANDLE hScanner, LPSCANDEVINFO</FONT>
<BR><FONT SIZE=2>lpScanDevInfo)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanRequestDataEvents(HANDLE hScanner, HWND</FONT>
<BR><FONT SIZE=2>hWnd, UINT wmScannerData)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanTrigger(HANDLE hScanner)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanAbort(HANDLE hScanner)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanGetData(HANDLE hScanner, TCHAR * lpBuff,</FONT>
<BR><FONT SIZE=2>LPINT BufSize)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanSetGoodReadSound(HANDLE hScanner, GRS_TYPE</FONT>
<BR><FONT SIZE=2>Sound, LPCTSTR lpWavFile)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanDeinit(void)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; SCAN_RESULT WINAPI ScanErrToText(SCAN_RESULT Err, LPTSTR lpBuff,</FONT>
<BR><FONT SIZE=2>LPINT BufSize)</FONT>
</P>

<P><FONT SIZE=2>Thank you very much in advance for your help,</FONT>
<BR><FONT SIZE=2>Adam</FONT>
</P>

</BODY>
<!--[object_id=#infocomp.com#]--><P><FONT face=Arial color=#808080 size=1>Important notice: This message is intended for the individual(s) and entity(s) addressed. The information contained in this transmission and any attached, may be confidential and may also be the subject of legal privilege, public interest immunity or legal professional privilege. Any review, retransmission, dissemination or other use of, taking of any action in reliance upon this information by person or entities other than the recipient is prohibited and requires authorization from the sender. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person) you may not copy or deliver this message to anyone. In such cases you should destroy this message and kindly notify the sender by reply email. </FONT></P>
<P><FONT face=Arial color=#808080 size=1>WARNING: Although Infocomp has taken reasonable precautions so that no viruses&nbsp;are present in this e-mail, the company cannot accept responsibility for any loss or damage arising from the use of e-mail attachments.</FONT></P></HTML>