设备被占用的错误消息,返回占用设备的进程名称及PID
This commit is contained in:
parent
0c851dc2a0
commit
291fe2ccbb
|
@ -1,4 +1,4 @@
|
||||||
#include "hg_scanner_200.h"
|
#include "hg_scanner_200.h"
|
||||||
#include "../wrapper/hg_log.h"
|
#include "../wrapper/hg_log.h"
|
||||||
|
|
||||||
#if defined(WIN32) || defined(_WIN64)
|
#if defined(WIN32) || defined(_WIN64)
|
||||||
|
|
|
@ -134,6 +134,7 @@ int hg_scanner_mgr::ver_build_ = 0;
|
||||||
int hg_scanner_mgr::ver_patch_ = 1;
|
int hg_scanner_mgr::ver_patch_ = 1;
|
||||||
std::string hg_scanner_mgr::pe_path_("");
|
std::string hg_scanner_mgr::pe_path_("");
|
||||||
std::string hg_scanner_mgr::pe_name_("");
|
std::string hg_scanner_mgr::pe_name_("");
|
||||||
|
std::string hg_scanner_mgr::last_open_msg_("");
|
||||||
bool hg_scanner_mgr::read_over_with_eof_ = true;
|
bool hg_scanner_mgr::read_over_with_eof_ = true;
|
||||||
|
|
||||||
uint32_t hg_scanner_mgr::unique_img_id_ = 0;;
|
uint32_t hg_scanner_mgr::unique_img_id_ = 0;;
|
||||||
|
@ -701,8 +702,8 @@ scanner_err hg_scanner_mgr::hg_scanner_open(scanner_handle* h, const char* name,
|
||||||
it = std::find(devs.begin(), devs.end(), name);
|
it = std::find(devs.begin(), devs.end(), name);
|
||||||
if (it != devs.end())
|
if (it != devs.end())
|
||||||
{
|
{
|
||||||
std::string msg("");
|
hg_scanner_mgr::last_open_msg_ = "";
|
||||||
ret = (scanner_err)usb_manager::instance()->open(it->dev, &io, &msg);
|
ret = (scanner_err)usb_manager::instance()->open(it->dev, &io, &hg_scanner_mgr::last_open_msg_);
|
||||||
if (ret == SCANNER_ERR_OK)
|
if (ret == SCANNER_ERR_OK)
|
||||||
{
|
{
|
||||||
hg_scanner* scanner = g_supporting_devices[it->ind].create_scanner(it->display_name.c_str(), io, h);
|
hg_scanner* scanner = g_supporting_devices[it->ind].create_scanner(it->display_name.c_str(), io, h);
|
||||||
|
@ -763,8 +764,8 @@ scanner_err hg_scanner_mgr::hg_scanner_open(scanner_handle* h, const char* name,
|
||||||
if (ptr != online_devices_.end())
|
if (ptr != online_devices_.end())
|
||||||
ptr->scanner = (hg_scanner*)*h;
|
ptr->scanner = (hg_scanner*)*h;
|
||||||
}
|
}
|
||||||
else if(msg.length())
|
else if(hg_scanner_mgr::last_open_msg_.length())
|
||||||
hg_scanner_mgr::ui_default_callback(nullptr, SANE_EVENT_ERROR, (void*)msg.c_str(), (unsigned int*)&ret, nullptr);
|
hg_scanner_mgr::ui_default_callback(nullptr, SANE_EVENT_ERROR, (void*)hg_scanner_mgr::last_open_msg_.c_str(), (unsigned int*)&ret, nullptr);
|
||||||
|
|
||||||
if(io)
|
if(io)
|
||||||
io->release();
|
io->release();
|
||||||
|
@ -1090,3 +1091,7 @@ void hg_scanner_mgr::on_language_changed(void)
|
||||||
v.scanner->on_language_changed();
|
v.scanner->on_language_changed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const char* hg_scanner_mgr::last_open_message(void)
|
||||||
|
{
|
||||||
|
return hg_scanner_mgr::last_open_msg_.c_str();
|
||||||
|
}
|
||||||
|
|
|
@ -70,6 +70,7 @@ class hg_scanner_mgr
|
||||||
static sane_callback event_callback_;
|
static sane_callback event_callback_;
|
||||||
static bool async_io_enabled_;
|
static bool async_io_enabled_;
|
||||||
|
|
||||||
|
static std::string last_open_msg_;
|
||||||
static std::string pe_path_;
|
static std::string pe_path_;
|
||||||
static std::string pe_name_;
|
static std::string pe_name_;
|
||||||
static bool read_over_with_eof_;
|
static bool read_over_with_eof_;
|
||||||
|
@ -135,5 +136,6 @@ public:
|
||||||
scanner_err hg_scanner_control(scanner_handle h, unsigned long code, void* data, unsigned* len);
|
scanner_err hg_scanner_control(scanner_handle h, unsigned long code, void* data, unsigned* len);
|
||||||
|
|
||||||
void on_language_changed(void);
|
void on_language_changed(void);
|
||||||
|
const char* last_open_message(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -266,6 +266,9 @@ extern "C"
|
||||||
if (err < 0x100)
|
if (err < 0x100)
|
||||||
err = err_map::sane_2_scanner(err);
|
err = err_map::sane_2_scanner(err);
|
||||||
|
|
||||||
|
if (err == SCANNER_ERR_OPENED_BY_OTHER_PROCESS && *hg_scanner_mgr::instance()->last_open_message())
|
||||||
|
return hg_scanner_mgr::instance()->last_open_message();
|
||||||
|
|
||||||
RETURN_DESC_IF(err, SCANNER_ERR_OK);
|
RETURN_DESC_IF(err, SCANNER_ERR_OK);
|
||||||
RETURN_DESC_IF(err, SCANNER_ERR_DEVICE_NOT_SUPPORT);
|
RETURN_DESC_IF(err, SCANNER_ERR_DEVICE_NOT_SUPPORT);
|
||||||
RETURN_DESC_IF(err, SCANNER_ERR_USER_CANCELED);
|
RETURN_DESC_IF(err, SCANNER_ERR_USER_CANCELED);
|
||||||
|
|
Loading…
Reference in New Issue