Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Code preload moveable discardableСодержание книги
Поиск на нашем сайте
DATA PRELOAD SINGLE EXPORTS ;имена DLL функций Построение файла TEST.DLL.. После создания файлов Test.cpp и Test.def нужно выбрать опцию Build в меню Build. В ответ Visual C++ создаст Test.dll. Объявление глобальных переменных. Код, который загружает и использует TEST.Dll обращается к глобальным переменным, которые следует объявить в файле реализации диалога (TestDlg.cpp) приложения после строк: #endif // объявление переменной для хранения дескриптора DLL и ее //инициализация HINSTANCE gLidTestDLL=NULL; //объявление функций библиотеки DLL Загрузка Test.dll. Перед вызовом функций библиотеки DLL необходимо загрузить библиотеку DLL в программе, использующей Test.dll. Обычно она загружается автоматически. Для этого код, загружающий DLL, нужно связать со входной точкой программы, например, с функцией элемента OnInitDialog() класса CProgramDlg. Для корректной работы программы необходимо вставить код проверки загрузки библиотеки DLL. Загружается библиотека DLL функцией LoadLibrary(«Test.dll»). 5.2.Требования к программе: Написать программу, реализующую DLL модуль для явной компоновки в режимах: · автоматической загрузки DLL; · загрузки DLL с помощью управляющего элемента. В модуле DLL реализовать две функции: · одна выводит текст в окно редактирования №1, · вторая - в окно редактирования №2. Эти функции должны запускаться с помощью стандартных управляющих элементов. Отчет должен содержать: постановку задачи, листинг кода всех модифицированных функций и их назначение. Варианты заданий 5.4.Контрольные вопросы 1. Динамически подключаемые библиотеки. 2. Явная и неявная компоновка модулей DLL. 3. Этапы создания проекта модуля DLL 4. Написание служебного кода модуля DLL 5. Основные файлы проекта модуля. DLL 6. Объявление глобальных переменных функций модуля DLL в приложениях 7. Автоматическая загрузка библиотеки DLL в приложении. Что нужно сделать, чтобы другие пользователи могли пользоваться Вашим DLL файлом?
Лабораторная работа №6 Функции и свойства потоков и процессов в WIN32 Цель работы: изучить механизм создания потоков в Win32-разрядных приложениях. Теоретические сведения Многозадачность – возможность выполнять одновременно несколько задач (процессов) или запускать выполнение других процессов в фоновом режиме. Процесс – это функциональное понятие. Процесс в операционной системе – это единица работы, рассматриваемая в динамике. Процесс – это систематизированная последовательность операций, направленных на получение конкретного результата. С помощью процессов управляются ресурсы (устройства ввода/вывода, память), необходимые для выполнения задания. Процессы не появляются спонтанно, а создаются двумя способами. Существует пять основных состояний процессов (табл.6.1.). Табл.6.1
. При управлении процессами должны быть реализована ВОЗМОЖНОСТЬ: · передачи команды управления процессами; · изменения приоритета выполнения процессов; · текущего контроля (анализа) состояния процессов; · защиты фоновых процессов; · поиска «заблудших» процессов и их уничтожение (т.е. управление «ЗОМБИ»). Процесс состоит из потоков. При инициализации процесса система создает всегда первичный поток. Поток определяет последовательность исполнения кода в процессе. В то время как приложение предназначено для выполнения всей задачи, поток – это мини-программа, принадлежащая приложению и выполняющая частную задачу. При параллельном выполнении потоков и процессов могут возникнуть проблемы с доступом к разделяемым ресурсам. Чтобы избежать подобных конфликтов, в Windows предусмотрены средства синхронизации потоков. Основные функции WIN32 API для работы с потоками. Функция создания потока CreateThread: HANDLE CreateThread ( LPSECURITY_ATTRIBUTES lpThreadAttributes, // указатель на атрибуты защиты нового потока SECURITY_ATTRIBUTES; DWORD dwStackSize,// размер стека, выделяемого потоку; если размер равен нулю, то поток будет иметь стек такого же размера, как и породивший его поток; LPTHREAD_START_ROUTINE lpStartAddress, // адрес функции потока, с которой должен начать работу создаваемый поток; эта функция потока должна иметь следующий прототип: DWORD WINAPI ThreadFunc(LPVOID lpParameter); LPVOID lpParameter, // 32 – битный параметр (или 32-битный указатель), который передает функции потока какое-либо инициализирующее значение; DWORD dwCreationFlags, // Если этот аргумент равен нулю, то выполнение этого потока начнется немедленно. Если этот аргумент будет равен CREATE_SUSPENDED, то начало выполнения потока будет задержано до определенных событий(например, до вызова функции ResumeThread(); LPDWORD lpThreadId // адрес идентификатора созданного потока. );. Если функция завершилась без ошибок, она возвращает значение вновь созданного описателя, иначе значение функции равно NULL. Функция изменения относительного приоритета потока в пределах одного процесса:
|
||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 305; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.211.246 (0.007 с.) |