Win32 API. Глобальные функции Windows


Подробное описание формата глобальных функций Windows
_CrtCheckMemory
int _CrtCheckMemory(void);
Возвращаемое значение
В случае успешного завершения проверки возвращает значение TRUE. В противном случае возвращает значение FALSE.
Описание
Данная функция производит проверку целостности блока памяти в куче отладки (действует только в отладочной версии приложения). При обнаружении ошибок в целостности кучи отладки или в ее заголовке, а также записи информации за пределами выделенных буферов, функция _CrtCheckMemory выдает отладочное сообщение с указанием выявленной ошибки. Если символ _DEBUG не определен, вызов данной функции удаляется препроцессором. Поведением функции _CrtCheckMemory можно управлять, устанавливая различные поля во флаге _crtDbgFlag с использование функции _CrtSetDbgFlag. Установка флага _CRTDBG_CHECK_ALWAYS_DF приводит к тому, что функция _CrtCheckMemory вызывается при каждом запросе на выделение памяти. Хотя это и замедляет выполнение приложения, зато ускоряет процесс выявления ошибок. Сброс флага _CRTDBG_ALLOC_MEM_DF отменяет проверку кучи и заставляет функцию _CrtCheckMemory всегда возвращать значение TRUE. Поскольку данная функция возвращает логическое значение, ее вызов может быть помещен в макрос _ASSERT, что позволит быстро локализовать возникшие ошибки. Описание данной функции содержится в файле заголовка crtdbg.h.
_CrtDumpMemoryLeaks
int _CrtDumpMemoryLeaks(void);
Возвращаемое значение
В случае обнаружения утечек памяти возвращает значение TRUE. В противном случае возвращает значение FALSE.
Описание
Данная функция производит распечатку информации по всем блокам памяти при обнаружении утечек памяти (действует только в отладочной версии приложения). Функция _CrtDumpMemoryLeaks проверяет, не возникло ли утечек памяти с момента запуска приложения. При обнаружении утечек памяти производится распечатка содержимого заголовков всех объектов, расположенных в куче, в удобочитаемой форме. Если символ _DEBUG не определен, вызов данной функции удаляется препроцессором. Данная функция, как правило, вызывается в конце работы приложения для проверки того, что вся выделенная в нем память освобождена. Для автоматического запуска этой функции в конце работы приложения достаточно с использованием функции _CrtSetDbgFlag установить поле _CRTDBG_LEAK_CHECK_DF во флаге _crtDbgFlag. Для получения информации о текущем состоянии кучи отладки функция _CrtDumpMemoryLeaks вызывает функцию _CrtMemCheckpoint. После этого она производит поиск не освобожденных блоков памяти. При обнаружении такого блока она вызывает функцию _CMemDumpAllObjectsSince, выводящую информацию обо всех блоках памяти, выделенных с момента запуска приложения на исполнение. По умолчанию блоки _CRT_BLOCK не включаются в эту распечатку. Для их включения в распечатку достаточно с использованием функции _CrtSetDbgFlag установить поле _CRTDBG_CHECK_CRT_DF во флаге _crtDbgFlag. Описание данной функции содержится в файле заголовка crtdbg.h.
_CrtSetDbgFlag
int _CrtSetDbgFlag(int newFlag);
Возвращаемое значение
Возвращает предыдущее состояние флага _crtDbgFlag.
Аргументы
newFlag - новое значение флага _crtDbgFlag. В данном флаге могут быть установлены следующие поля:
      _CRTDBG_ALLOC_MEM_DF - разрешает добавление в кучу отладки нового блока и использование для него идентификаторов типа таких, как _CLIENT_BLOCK. Если он сброшен, добавляет блок в список кучи, но устанавливает для него тип _IGNORE_BLOCK. По умолчанию этот флаг установлен. Совместим с любыми макросами, задающими режим проверки кучи отладки;
      _CRTDBG_CHECK_ALWAYS_DF - устанавливает режим вызова функции _CrtCheckMemory при каждом запросе на выделение и освобождение памяти в куче. Если он сброшен, функцию _CrtCheckMemory нужно вызывать в явном виде. По умолчанию этот флаг сброшен. При установке данного флага любые макросы, задающие режим проверки кучи отладки, игнорируются;
      _CRTDBG_CHECK_CRT_DF - включает блоки типа _CRT_BLOCK в распечатку при обнаружении утечек памяти и несоответствия состояния памяти. Если он сброшен, внутренняя память библиотек времени исполнения приложения не распечатывается. По умолчанию этот флаг сброшен. Совместим с любыми макросами, задающими режим проверки кучи отладки;
      _CRTDBG_DELAY_FREE_MEM_DF - сохраняет освобожденные блоки памяти в связном списке кучи, назначая им тип _FREE_BLOCK и заполняя их байты значениями 0xDD. Если он сброшен, освобожденные блоки памяти не хранятся в связном списке кучи. По умолчанию этот флаг сброшен. Совместим с любыми макросами, задающими режим проверки кучи отладки;
      _CRTDBG_LEAK_CHECK_DF - производит автоматическую проверку на отсутствие утечек памяти при завершении работы приложения, используя для этого вызов функции _CrtDumpMemoryLeaks. Если он сброшен, автоматическая проверка не осуществляется. По умолчанию этот флаг сброшен. Совместим с любыми макросами, задающими режим проверки кучи отладки;
      _CRTDBG_REPORT_FLAG - сохраняет предыдущее значение флага. Используется при модификации флага для сохранения его текущего состояния во временной переменной.
Описание
Данная функция позволяет установить или изменить состояние флага _crtDbgFlag, управляющего режимом работы функций слежения за кучей отладки. (Действует только в отладочной версии приложения). Если символ _DEBUG не определен, вызов данной функции удаляется препроцессором. Макросы, задающие режим проверки кучи отладки, определяют число вызовов функций malloc, realloc, free и _msize за которыми последует вызов функции _CrtCheckMemory. Определены следующие макросы, задающие режим проверки кучи отладки:
      _CRTDBG_CHECK_EVERY_16_DF - проверка производится после 16 вызовов;
      _CRTDBG_CHECK_EVERY_128_DF - проверка производится после 128 вызовов;
      _CRTDBG_CHECK_EVERY_1024_DF - проверка производится после 1024 вызовов;
      _CRTDBG_CHECK_DEFAULT_DF - эквивалентен макросу _CRTDBG_CHECK_EVERY_1024_DF. Для задания этих макросов используются 16 старших разрядов аргумента newFlag.
Описание данной функции содержится в файле заголовка crtdbg.h.
AddFontResource
int AddFontResource(LPCTSTR lpszFilename);
Возвращаемое значение
В случае успешного завершения функции возвращается количество добавленных шрифтов, в противном случае возвращается нулевое значение. В Windows NT более подробную информацию об ошибке можно получить, вызвав функцию GetLastError.
Аргументы
lpszFilename - указатель на заканчивающуюся нулем текстовую строку, содержащую корректное имя файла шрифта. Имя файла шрифта имеет расширение .fon для файлов ресурса шрифта, расширение .fnt для файлов шрифта, содержащих битовые образы символов, расширение ttf для файлов шрифтов TrueType и расширение .fot для файлов ресурсов шрифтов TrueType.
Описание
Функция AddFontResource позволяет добавить ресурсы шрифта из указанного файла в системную таблицу шрифтов. После этого данный шрифт может быть использован для вывода текста любым приложением Win32. Любые приложения, добавляющие или удаляющие шрифты из системной таблицы шрифтов, извещают об этом другие приложения посылкой сообщения WM_FONTCHANGE всем окнам верхнего уровня в операционной системе. Для посылки этого сообщения приложение должно использовать функцию SendMessage, в аргументе hWnd которой должно стоять значение HWND_BROADCAST. Как только приложение перестает использовать ресурс шрифта, загруженный функцией AddFontResource, оно должно удалить его функцией RemoveFontResource.
AfxBeginThread
CWinThread* AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL); CWinThread* AfxBeginThread(CRuntimeClass* pThreadClass, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
Возвращаемое значение
Указатель на созданный данной функцией объект класса потока.
Аргументы
pfnThreadProc - указатель на исполняющую функцию рабочего потока. Не может иметь нулевого значения. Исполняющая функция потока имеет следующий формат:
UINT MyControllingFunction(LPVOID pParam); pThreadClass - указатель на структуру CRuntimeClass для пользовательского класса, производного от класса CWinThread.
pParam - аргумент, передаваемый исполняющей функции потока, как показано в описании аргумента pfnThreadProc.
nPriority - приоритет потока. Если эта величина равна нулю, то у создаваемого потока устанавливается такой же приоритет, как и у вызывающего потока. Полный список значений приоритетов приведен в описании функции SetThreadPriority.
nStackSize - определяет размер стека нового потока в байтах. Если эта величина равна нулю, то у создаваемого потока создается стек того же размера, что и у вызывающего потока.
dwCreateFlags - определяет дополнительный флаг, управляющий процессом создания потока. Этот флаг может иметь два значения:
CREATE_SUSPENDED - создает поток, в котором счетчик остановки установлен в единицу. Этот поток не будет исполняться, пока не будет вызвана функция ResumeThread;
0 - начать работу потока непосредственно после его создания.
lpSecurityAttrs - указатель на объект структуры SECURITY_ATTRIBUTES, определяющий атрибуты безопасности данного потока. Если эта величина равна нулю, то создаваемый поток имеет те же атрибуты безопасности, что и вызывающий поток.
Описание
Данная функция позволяет создать новый поток. Первая версия данной функции создает рабочий поток. Вторая версия создает интерфейсный поток. Функция AfxBeginThread создает новый объект класса CWinThread, вызывает функцию CreateThread для начала исполнения потока, а также возвращает указатель на созданный объект класса потока. В процессе выполнения данной функции производятся все проверки, необходимые для того, чтобы гарантировать, что в случае возникновения ошибки в процессе выполнения данной функции все созданные до этого объекты будут соответствующим образом уничтожены. Для завершения работы потока следует вызвать функцию AfxEndThread из данного потока или выйти из исполняющей функции потока.
 
« Предыдущая статья   Следующая статья »