Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 400; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.005 с.) |