diff --git a/sane/scanner.cpp b/sane/scanner.cpp index 2cccef5..68ed065 100644 --- a/sane/scanner.cpp +++ b/sane/scanner.cpp @@ -85,7 +85,13 @@ namespace callback if (it != g_scanner_instances.end()) return it->invoker->handle_device_event(code, data, len); else + { + wchar_t msg[218] = { 0 }; + swprintf_s(msg, _countof(msg) - 1, L"Lost device(0x%08X) when event(%u) occurs!\r\n", hdev, code); + log_info(msg, 0); + return 0; + } } void reg_callback(SANE_Handle dev, scanner* invoker) { @@ -132,7 +138,6 @@ scanner::scanner(SCANNERID id) : handle_(NULL), id_(id), ex_id_(EXTENSION_ID_BAS } scanner::~scanner() { - callback::unreg_callback(this); if (cfg_) delete cfg_; } @@ -282,8 +287,8 @@ int scanner::open(void) ret = hg_sane_middleware::instance()->open_device(name.c_str(), &handle_); if (ret == SANE_STATUS_GOOD) { - scanner_name_ = local_trans::a2u(name.c_str(), CP_UTF8); callback::reg_callback(handle_, this); + scanner_name_ = local_trans::a2u(name.c_str(), CP_UTF8); ret = init_options_id(); load_config((cfg_path_ + scanner_name_).c_str()); // apply_config(); @@ -293,6 +298,7 @@ int scanner::open(void) } int scanner::close(void) { + callback::unreg_callback(this); if (handle_) hg_sane_middleware::instance()->close_device(handle_); handle_ = NULL;