Отправляет email-рассылки с помощью сервиса Sendsay

Статьи по Visual C++

  Все выпуски  

Разделяемая память в динамической библиотеке


Информационный Канал Subscribe.Ru

Visual C++
Лучшие статьи с сайта www.p-lib.pp.ru
  Главная | Новости | Статьи | Каталог | Софт | Регистрация | Поиск

Приглашаем авторов статей к сотрудничеству с сайтом. Для того чтобы разместить на сайте статью надо заполнить форму или связаться с нами по E-Mail

Предлагаем владельцам сайтов добавить сабя в каталог на нашем сайте.

NEW!  Все желающие могут предложить свои темы для следующих рассылок. Для этого свяжитесь со мной по E-Mail. Каждое предложение будет рассмотрено.

Новые статьи на сайте

1. Что такое traits?
В данной статье я попытаюсь рассказать, что такое traits. Будут рассмотрены некоторые примеры применения traits, которые будут заключаться как в использовании traits в нашем коде, так и в возможных способах расширения стандартной библиотеки C++, которая тоже использует traits.

2. Приемы защиты исходных текстов и двоичного кода
Предоставление исходных текстов часто является обязательным условием заказчика и закрепляется в контракте. Той же цели добиваются сторонники популярного движения открытых исходных текстов, ратующие за их свободное распространение.

3. Авторизация
Часто бывает нужно, чтобы на какой-то URL могли попасть только определенные пользователи. А именно, только те, у которых есть зарегистрированное имя (login) и пароль (password).

4. Реализация keylogging под WIN32
Одним из самых простых методов съёма информации с персонального компьютера является установка на компьютер пользователя программы, производящей учёт нажатий клавиш.

5. Классы CDatabase и CRecordset
В статье описываются классы CRecordset и CDatabase, рассматриваются их методы, свойства и особенности. А так же приводятся примеры их использования.

6. Работа с клавиатурой
Каждое окно в системе устроено таким образом, что может получать сообщения при нажатии клавиш на клавиатуре. Эти сообщения имеют два типа: виртуальные коды и символьные сообщения.

7. События
Событие является объектом, очень похожим на семафор, но в несколько видоизмененном виде. Рассмотрим функции для работы с событиями.

8. Критические секции
Понятие критической секции позволяет уберечь определенные области программы так, чтобы в этой области программы в данный момент времени исполнялся бы только один поток.

9. Источники данных ODBC
В статье рассмотрены функции по работе с ODBC. В конце приведен небольшой пример.

10. Всплывающие подсказки (ToolTip)
В этой статье будет рассмотрен вопрос создания всплывающих подсказок (ToolTip) средствами MFC, а также рассмотрены некоторые возможности по управлению подсказками.

Свежие компьютерные новости

20.01.2006 Corel обновила офисное ПО и графический пакет
20.01.2006 Вирус прикидывается шифровкой из GMail
20.01.2006 Opera и Bytemobile ускорят мобильный интернет
20.01.2006 Ноутбук Alienware с двумя винчестерами на 160 Гб
19.01.2006 Суперкомпьютер PowerBlock 200 для военных
19.01.2006 Ёмкость винчестеров для ноутбуков достигла 160 Гб
19.01.2006 Google начнёт передавать рекламу по радио
19.01.2006 Новые чипсеты nVidia для процессоров Intel

Разделяемая память в динамической библиотеке

В этой статье рассмотрен вопрос о разделяемой памяти в динамической библиотеке. Ниже приведенные примеры демонстрируют примеры использования общей памяти.

Вызов динамической библиотеки с разделяемой памятью.

// dllexec.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
 typedef void (funct)();
 funct * func;
 HMODULE h=::LoadLibrary(/*"..\\..\\dll32\\release\\*/"dll32.dll");
 if(h==NULL)
 {
  printf("Error1!");
  return 0;
 };
 func=(funct*)::GetProcAddress(h, "func");
 if(func==NULL)
 {
  printf("Error2!");
  return 0;
 }
 (func)();
 char s[100];
 gets(s);
 FreeLibrary(h);
 return 0;
}

Динамическая библиотека с разделяемой памятью.

// dll32.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include <stdio.h>

extern "C" __declspec(dllexport) void func();

#pragma data_seg(".myseg")
int i=0;
#pragma data_seg()

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
      )
{
 switch(ul_reason_for_call)
 {
 case DLL_PROCESS_ATTACH:
  break;
 case DLL_THREAD_ATTACH:
  break;
 case DLL_THREAD_DETACH:
  break;
 case DLL_PROCESS_DETACH:
  break;
 }
    return TRUE;
}

//экспортируемая функция
void func()
{
 if(i==0)
 {
  i=1;
  MessageBox(0, "Запуск первого экземпляра", "", MB_OK);
 }
 else
 {
  MessageBox(0, "Запуск второго экземпляра", "", MB_OK);
 }
}

Теперь прокомментирую поэтапно пример с разделяемой памятью:

  • Основная программа вызывает функцию из динамической библиотеки. При запуске второго экземпляра появляется сообщение о его запуске.
  • Функция gets используется нами в основном модуле для задержки выхода из программы при первом запуске.
  • Основное внимание следует обратить на текст модуля динамической библиотеки. Разделяемая память определяется следующим образом.
    .myseg ? название секции в исполняемом модуле. Данная последовательность команд означает, что переменная I оказывается при компоновке именно в этой секции. А вот чтобы секция стала общей, следует компоновщику указать дополнительную опцию: /SECTION:.myseg,RWS. Строка RWS означает, что в секцию можно писать и читать.
  • При первом запуске процедура в динамической библиотеке изменяет значение общей переменной. При вторичном запуске по изменяемому значению переменной можно судить о наличии в памяти первого экземпляра приложения.
  • Скачать исходник можно здесь.

    Книги с Озона

    Visual Basic .NET. Библия пользователя Visual Basic .NET. Библия пользователя

    Visual Basic .NET - результат самых решительных изменений, когда-либо сделанных в популярном языке Visual Basic. Эта книга, написанная командой экспертов Visual Basic .NET, поможет вам овладеть всеми нюансами платформы .NЕТ, будь вы ветеран Visual Basic 6 или разработчик на АSР, или даже просто новичок в программировании. Начав с обзора новых объектно-ориентированных свойств, авторы познакомят вас с основами языка Visual Basic, со средой разработки Visual Studio .NET, технологиями АDО.NЕТ и ХМL и объяснят на примерах, как создавать формы Windows, приложения АSР.NЕТ и Web-сервисы.

    Заказать на Озоне

    Microsoft Visual Basic .NET 2003. Русская версия. Шаг за шагом (+ CD-ROM) Microsoft Visual Basic .NET 2003. Русская версия. Шаг за шагом (+ CD-ROM)

    Visual Basic .NET 2003 - это профессиональная среда для разработки приложений, а практическое руководство из серии "Шаг за шагом" - быстрый путь к ее освоению.
    Настоящее руководство с помощью пошаговых упражнений, примеров кода, подсказок по оптимизации и советов из реального мира проведет вас от основ программирования к высокоэффективной работе в Visual Basic .NET 2003. Эта книга содержит все, что требуется для перехода к созданию программного обеспечения, использующего .NET!
    Вы освоите элементы управления из Toolbox, новые инструменты для отладки и структурные обработчики ошибок и научитесь создавать неотразимый интерфейс пользователя, изучите методы из библиотек классов .NET Framework 1.1, сможете управлять данными в программах с помощью коллекций, массивов и методик обработки строк, автоматизировать приложения Microsoft Office и управлять процессами, управлять формами Windows, создавать графику и анимационные эффекты. Вы научитесь составлять код для принтеров и диалоговые окна для печати, управлять базами данных Access, создавать собственные приложения баз данных, отображать документы HTML с помощью Microsoft Internet Explorer, использовать веб-формы для создания интерфейсов Интернет. Все файлы упражнений и примеры кода на Visual Basic .NET 2003 имеются на прилагаемом к книге CD-ROM.

    Заказать на Озоне

    Использование Microsoft Visual Basic .NET. Специальное издание Использование Microsoft Visual Basic .NET. Специальное издание

    Мы живем в такое время, которое можно назвать чудесным для программистов на Visual Basic. Что же касается Visual Basic .NET, то он заметно отличается от своих предшественников. И даже если вы годами программировали на Visual Basic, то все равно на вас теперь свалилось слишком много нового. Visual Basic .NET, начиная с полностью обновленного пользовательского интерфейса и заканчивая новыми возможностями языка и изменениями в архитектуре - это шаг вперед в эволюции Visual Basic. Книга будет полезна всем, независимо от уровня квалификации. Если вы еще никогда не использовали Visual Basic, то в первых главах найдете пошаговые инструкции по работе в среде Visual Basic. Что же касается пользователей предыдущих версий Visual Basic, то они (опытные или нет) обязательно оценят, как много и подробно говорится в книге о новых возможностях. Эти пользователи оценят и описание отличий VB.NET от предыдущих версий. Ну а как же читатели, для которых программирование в целом является чем-то новым? Они должны обратить внимание.

    Заказать на Озоне

    Последнии статьи по Delphi

       -  Оператор перехода (GoTo)

       -  Бегущая строка (Метод III)

       -  Методика модификации программ для скрытия их от антивирусов

       -  Нестандартные заголовки

       -  Создание бегущей строки в Delphi

       -  Введение в реккурсию

       -  Перевод в Delphi-приложениях

       -  Сравнительный анализ технологий CORBA и COM - Часть 3

       -  Сравнительный анализ технологий CORBA и COM - Часть 2

    Советую посетить

    Портал для Delphi программиста - Быстро развивающийся портал о программирование на языке Pascal/Delphi. Статьи, исходники, компоненты, справочники, мануалы, FaQ, программы.

    Дружественные рассылки

    Статьи по Visual Basic.NET
    Статьи по ASP.NET
    Delphi Coding
    Интернет и Delphi

    Замечания и предложения отправляйте на E-Mail указанный ниже. С уважением Ковязин Дмитрий (admin@p-lib.pp.ru).



    Subscribe.Ru
    Поддержка подписчиков
    Другие рассылки этой тематики
    Другие рассылки этого автора
    Подписан адрес:
    Код этой рассылки: comp.soft.prog.visualc
    Архив рассылки
    Отписаться Вебом Почтой
    Вспомнить пароль

    В избранное