|
|
#include "pch.h"
CMICRO::CMICRO(TCHAR *pszMicroDriver) { m_hModule = NULL; m_pMicroEntry = NULL; m_pScan = NULL; m_pSetPixelWindow = NULL; m_bDisabled = FALSE;
//
// Load Micro driver
//
m_hModule = LoadLibrary(pszMicroDriver); if (m_hModule != NULL) {
//
// Get entry point
//
m_pMicroEntry = (FPMICROENTRY)GetProcAddress(m_hModule,"MicroEntry");
if (m_pMicroEntry != NULL) {
//
// Get Scan entry point
//
m_pScan = (FPSCANENTRY)GetProcAddress(m_hModule,"Scan");
if (m_pScan != NULL) {
//
// Get SetPixelWindow entry point
//
m_pSetPixelWindow = (FPSETPIXELWINDOWENTRY)GetProcAddress(m_hModule,"SetPixelWindow");
if (m_pSetPixelWindow != NULL) {
//
// we are GO!
//
}
}
}
} }
CMICRO::~CMICRO() { if (m_hModule != NULL) { FreeLibrary(m_hModule); } }
HRESULT CMICRO::MicroEntry(LONG lCommand, PVAL pValue) { HRESULT hr = E_FAIL; if (m_pMicroEntry != NULL) {
//
// call Micro driver's entry point
//
hr = m_pMicroEntry(lCommand, pValue); } return hr; }
HRESULT CMICRO::Scan(PSCANINFO pScanInfo, LONG lPhase, PBYTE pBuffer, LONG lLength, PLONG plRecieved) { HRESULT hr = E_FAIL; if (m_pMicroEntry != NULL) {
if (!m_bDisabled) { //
// call Micro driver's scan entry point
//
hr = m_pScan(pScanInfo, lPhase, pBuffer, lLength, plRecieved); } else { UnInitialize(pScanInfo); } } return hr; }
HRESULT CMICRO::SetPixelWindow(PSCANINFO pScanInfo, LONG x, LONG y, LONG xExtent, LONG yExtent) { HRESULT hr = E_FAIL; if (m_pSetPixelWindow != NULL) {
//
// call Micro driver's SetPixelWindow entry point
//
hr = m_pSetPixelWindow(pScanInfo,x,y,xExtent,yExtent); } return hr; }
HRESULT CMICRO::Disable() { HRESULT hr = S_OK;
m_bDisabled = TRUE; return hr; }
HRESULT CMICRO::UnInitialize(PSCANINFO pScanInfo) { HRESULT hr = E_FAIL;
if ((m_pMicroEntry != NULL)) { //
// call Micro driver's entry point to UnInitalize
//
VAL Val;
memset(&Val, 0, sizeof(Val)); Val.pScanInfo = pScanInfo; hr = m_pMicroEntry(CMD_UNINITIALIZE,&Val); m_pMicroEntry = NULL; }
return hr; }
|