Читаем Использование NuMega DriverStudio для написания WDM-драйверов полностью

typedef XDSPINTER_API int (*MemWrtFun)(char *data, int len);

// EXPORT int GetMemSize(void)

typedef XDSPINTER_API int (*MemSizeFun)();

//EXPORT bool IsDriverPresent(void)

typedef XDSPINTER_API bool (*IsDrivFun)();

Теперь пришло время создать сами указатели на функции:

MemReadFun ReadMem;

MemWrtFun WriteMem;

MemSizeFun GetMemSize;

IsDrivFun IsDriverPresent;

Теперь рассмотрим функцию, подключающую dll-библиотеку к приложению. Она будет подключать dll-библиотеку к приложению и пытаться установить связь с драйвером. Функция вернет true в случае успеха и false при неудаче. Т.к. VC++ — объектно-ориентированная среда, то эта функция будет методом одного из классов приложения (в нашем случае — класса представления).

bool CXDSPView::ConnectToDriver() {

 //Переменная, в которой будет храниться возвращаемое значение.

 success=true;

 //HMODULE InterDll – переменная экземпляра, где хранится хэндл библиотеки.

 InterDll=::LoadLibrary("XDSPInter");

 if (InterDll==NULL) {

  //Не удалось подключиться к библиотеке

  AfxMessageBox("Couldn't load a library XDSPInter.dll",MB_ICONERROR | MB_OK);

  //Вернем неудачу.

  success=false;

 } else {

  //Библиотека подключена успешно. Импортируем функции.

  ReadMem=(MemReadFun)::GetProcAddress(InterDll,"ReadMem");

  if (ReadMem==NULL) {

   //Не удалось импортировать функцию

   AfxMessageBox("Couldn't get adress for ReadMem function from library XDSPInter.dll", MB_ICONERROR | MB_OK);

   success=false;

  }

  WriteMem=(MemReadFun)::GetProcAddress(InterDll,"WriteMem");

  if (WriteMem==NULL) {

   //Не удалось импортировать функцию

   AfxMessageBox("Couldn't get an adress for WriteMem function from library XDSPInter.dll", MB_ICONERROR | MB_OK);

   success=false;

  }

  GetMemSize=(MemSizeFun)::GetProcAddress(InterDll,"GetMemSize");

  if (GetMemSize==NULL) {

   //Не удалось импортировать функцию AfxMessageBox("Couldn't get an adress for GetMemSize function from library XDSPInter.dll", MB_ICONERROR | MB_OK);

   success=false;

  }

  IsDriverPresent=(IsDrivFun)::GetProcAddress(InterDll,"IsDriverPresent");

  if (IsDriverPresent==NULL) {

   //Не удалось импортировать функцию

   AfxMessageBox("Couldn't get an adress for IsDriverPresent function from library XDSPInter.dll", MB_ICONERROR | MB_OK);

   success=false;

  }

 }

 return(success);

}

Вызов метода ConnectToDriver() целесообразно сделать в конструкторе класса. Там же надо реализовать и проверку, присутствует ли в системе драйвер. Тогда вся необходимая инициализация будет проведена еще при запуске приложения.

CXDSPView::CXDSPView() : CFormView(CXDSPView::IDD) {

 //{{AFX_DATA_INIT(CXDSPView)

 //}}AFX_DATA_INIT

 //Здесь мы добавляем свой код. Success – переменная экземпляра. Если она

 //равна true – то ошибок нет, иначе произошла какая-то ошибка.

 success=true;

 //Пробуем подключить dll:

 if (ConnectToDriver()) {

  //Удалось подключить библиотеку. Теперь пытаемся установить связь с

  //драйвером – вызываем функцию в dll:

  if (!IsDrvPresent()) {

   //Неудача

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных