Сертификат "Программирование с использованием Win32 API" 2021
  • Сертификат "Программирование с использованием Win32 API" 2021
Сертификат "Программирование с использованием Win32 API" 2021
  • Сертификат "Программирование с использованием Win32 API" 2021

Программирование с использованием Win32 API

850,00 руб.
В течение часа!
Экзамен Программирование с использованием Win32 API для программистов и системных администраторов.
 
Сертифицированные специалисты RetraTech по программе «Программирование под Windows на С++ c использованием Win32 API» прекрасно владеют навыками программирования под Windows, обладают отличными знаниями Win32 API, который является основой основ для создания программ для семейства ОС Microsoft Windows. Программист, прошедший данную сертификацию, владеет различными приёмами создания приложений с использованием средств Win32 API, обладает навыками многопоточного программирования и хорошо знаком с архитектурой ОС Windows.
Количество
Есть в наличии!

Вопросы: экзамен состоит из 40 вопросов.
Время: на его прохождение отводится 100 минут.
Проходной балл: 70% и выше.

Бумажная версия сданного сертификата заказывается на сайте RetraTech.
10000 шт.
Внимание !
Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!

Для чего нужна динамическая локальная память потока (thread local storage, TLS)?

Для оптимизации хранения данных в многопоточной среде

Для решения задач синхронизации

Для хранения контекста потока.

Для хранения глобальных переменных

Для хранения потокозависимых данных

 

Какой функции для работы с виртуальной памятью не существует в Win32 API?

AllocMemory

FillMemory

MoveMemory

ZeroMemory

CopyMemory

 

Что выведет в консоль следующий код, если известно, что файл C:\demo_file.dat существует на диске, открывается функцией CreateFile без ошибок и его размер равен ровно 4Кб?

4096

Код не будет скомпилирован

Ничего

2048


 

Что будет нарисовано в клиентской области окна, фрагмент кода оконной процедуры которого следующий:

Желтый квадрат

Красный квадрат

Черный квадрат

Синий квадрат

Ничего

 

 

Cледующий код демострирует синхронизацию с помощью критической секции.
Что будет выведено на экран в результате выполнения программы?

Возникнет ошибка компиляции

Возникнет ошибка времени выполнения

5678901234

Порядок вывода цифр не определен

0123456789

 


Программист написал код:

При его выполнении в консоль вывелось:
Что нужно сделать, чтобы исправить досадную ошибку?

В строке 7 заменить флаги GENERIC_EXECUTE|GENERIC_READ на GENERIC_ALL

В строке 22 заменить NULL адресом корректно проинициализированной структуры OVERLAPPED

В строке 17 заменить WriteFile на WriteFileEx

В строке 8 заменить флаг OPEN_EXISTING на CREATE_ALWAYS

В строке 17 заменить !WriteFile на WriteFile


Укажите два ложных утверждения о GDI.

GDI унифицированно работает с различными устройствами

GDI отвечает за отрисовку окон, меню и других элементов Windows

В GDI есть средства для отрисовки 3D-графики

GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры

GDI является составной частью пользовательского интерфейса Microsoft Windows

 

 

Класс окна описывается структурой WNDCLASSEX и содержит следующую информацию об окне: (укажите ложное утверждение)

Адрес точки входа в приложение, в котором находится оконная процедура для этого класса

Дескриптор курсора, дескриптор пиктограммы и дескриптор кисти для фона окна

Дескриптор экземпляра приложения, в котором находится оконная процедура для этого класса

Указатель на оконную процедуру

Имя меню, применяемого по умолчанию для этого класса

 

Что из системных ресурсов не принадлежит потоку?

Код исполняемой функции

Рабочее множество страниц реальной памяти

Стек для работы ОС

Стек для работы приложения

Набор регистров процессора

 

 

Какое из следующих утверждений относительно функции DllMain не верно?

В DLL обязательно должна присутствовать функция DllMain.

DllMain вызывается при загрузке DLL в адресное пространство процесса и при выгрузке из него.

DllMain вызывается при создании процессом нового потока и при завершении этого потока.

Последний параметр DllMain содержит способ загрузки DLL.

Все утверждения верны.


 

Какая функция Win32API служит для создания каталогов?

CreateFolder

СreateDir

CreateCatalog

CreateDirectory

CreateFile


 

Каким будет результат работы программы? (предполагается, что потоки создаются успешно

в консоль будет выведено: 210

результат не определен

в консоль будет выведено: 012

в консоль будет выведено: 120

в консоль будет выведено: 201


 

Дан код, который пишет цифры от 0 до 9 в файл.
Следующий код считывает из файла и выводит в консоль одну цифру:
Какая цифра будет выведена?

7

Результат не определен

6

3

2


 

Функция Win32 API GetFileSize, возвращающая размер указанного файла и имеющая прототип
работает следующим образом: (выберите правильный вариант)

В случае успеха возвращает старшее слово размера файла, при этом во втором параметре возвращается младшее слово размера файла.

В случае успеха возвращает 0, при этом во втором параметре возвращается размер файла в байтах.

В случае успеха возвращает младшее слово размера файла, при этом во втором параметре возвращается старшее слово размера файла.

В случае успеха возвращает 0, при этом во втором параметре возвращается структура LARGE_INTEGER

В случае успеха возвращает не 0, при этом во втором параметре возвращается размер файла в байтах.

 


Какие два стиля из перечисленных точно имеет окно на рисунке?

WS_TILEDWINDOW

WS_THICKFRAME

WS_POPUP

WS_SYSMENU

WS_VSCROLL

 


Какие функции Win32 API используются для посылки асинхронных сообщений?

PostMessage

SendMessage

PostThreadMessage

PostQuitMessage

SendNotifyMessage


 

Программист написал небольшую DLL, которая экспортирует две переменные целого типа. Вот ее код:
Также программист написал программу(EXE), использующую эту DLL. Код программы такой:
Затем программист последовательно, не закрывая предыдущих, запустил 3 экземпляра программы Client.exe. Что выведет в консоль экземпляр программы Client.exe, запущенный последним(3-им)?

42

33

44

24

22


 

Нижеследующий код работает со стандартной кучей процесса. Определите, вызов какой функции Win32 API должен размещаться на месте прочерка в строке 12.

HeapOpen()

GetDefaultHeap()

GetProcessHeap()

GetHeap()

HeapCreate()


В предопределенные классы окон Windows не входит:

SCROLLBAR

STATIC

TREEVIEW

COMBOBOX

LISTBOX


 

Программист написал код асинхронной записи в файл.
Название какой функции Win32 API нужно подставить вместо ___1___, чтобы код корректно выполнился? (Считаем, что файл C:\demo_file.dat существует на диске, открывается функцией CreateFile без ошибок)

WaitForSingleObject

SleepEx

SuspendThread

Sleep

SignalObjectAndWait


 

Среди перечисленных режимов доступа к файлу укажите так называемые родовые режимы доступа.

FILE_SHARE_READ

GENERIC_READ

FILE_SHARE_DELETE

GENERIC_WRITE

GENERIC_EXECUTE

 


Функция GetCurrentThread() возвращает:

дескриптор текущего потока

другое

контекст текущего потока

идентификатор текущего потока

псевдодескриптор текущего потока

 

Какую библиотечную функцию рекомендуется использовать для создания потока вместо CreateThread при программировании на C++?

_beginthread

_beginthreadex

BeginThread

beginthread

beginthreadex

 


Пользователь посылает окну с дескриптором hWnd сообщение с помощью функции SendMessage() из того же потока. Каков будет упрощенный маршрут сообщения?

-> Оконная процедура с дескриптором окна hWnd.

-> Системная очередь сообщений -> Оконная процедура hWnd.

-> Системная очередь сообщений -> Очередь сообщений приложения с окном hWnd -> Оконная процедура hWnd.

-> Очередь сообщений приложения с окном hWnd -> Оконная процедура hWnd

-> Очередь сообщений потока, создавшего окно hWnd -> Оконная процедура hWnd.


 

Что выведет на экран нижеследующий код? (предполагается, что потоки создаются успешно)
33

00

13

Результат не определен

31



Что называют "Dll hell" в ОС Windows? (укажите наиболее точное определение)

Это понятие относится к использованию DLL в другой ОС (не семейства ОС Windows)

Пример плохой концепции программирования с использованием DLL

Тупиковую ситуацию, связанную с управлением библиотеками DLL

Такого понятия не существует

Несовместимость и невзаимозаменяемость различных версий DLL



Что нужно сделать, чтобы следующий код гарантированно завершил свое выполнение

Добавить квалификатор volatile перед объявлениями переменных flag и flagThread

В строке 5 добавить перед объявлением переменной flagThread квалификатор volatile

Заменить в строке 24 константу INFINITE на 1000

В строке 9 изменить while(!flagThread) на while(flagThread)

В строке 14 добавить перед объявлением переменной flag квалификатор volatile


_________ - это процесс, который загружается при загрузке ОС Windows или в процессе ее работы по специальной команде и заканчивает свою работу по завершении работы ОС или по специальной команде.

резидентная программа

сервис

фоновый процесс

задача

драйвер


 

Каков будет вывод в консоль в результате выполнения следующей программы?

120

110

111

121

160


 

Ниже представлен код, который тестирует механизм отображения файлов в память.
Замените метки __1__, __2__ и __3__ на соответствующие параметрам и контексту функции.

CreateFile, CreateFileMapping, CreateViewOfFile

CreateFileEx, CreateViewOfFile, CreateFileMapping

CreateFile, CreateFileMapping, MapViewOfFile

CreateFile, CreateViewOfFile, MapViewOfFile

CreateFileEx, CreateFileMapping, CreateViewOfFile


 

Программист написал программу для работы с виртуальной памятью, но в код вкралась ошибка, приводящая к access violation при обращении к указателю ‘a’ в строке 19.
Как исправить ошибку?

В строке 10 заменить NULL на корректный указатель

В строке 12 заменить MEM_RESERVE на MEM_RESET

В строке 13 заменить PAGE_ READWRITE на PAGE_EXECUTE_READWRITE

В строке 12 заменить MEM_RESERVE на MEM_COMMIT

В строку 18 вставить вызов VirtualLock(a, size * sizeof(int));


 

Какой фрагмент кода не вызовет глобальную раскрутку стека?

Перекрывающимся (overlapped) вводом-выводом данных в ОС Windows называется …

пакетированный ввод-вывод

файловый ввод-вывод

потоковый ввод-вывод

асинхронный ввод-вывод

синхронный ввод-вывод


Программист написал, скомпилировал и запустил код:
Результат его выполнения такой:
Определите, какой прототип из предложенных имеет функция GetFileTime, если файл demo_file.dat имеет следующие свойства:


BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime);

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime, LPFILETIME lpCreationTime);

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime, LPFILETIME lpLastWriteTime, LPFILETIME lpLastAccessTime);

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastWriteTime, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime);

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastAccessTime, LPFILETIME lpCreationTime, LPFILETIME lpLastWriteTime);

 

Какие стили из перечисленных имеет окно на рисунке?

WS_MAXIMIZEBOX

WS_POPUP

WS_OVERLAPPEDWINDOW

WS_MINIMIZEBOX

WS_SYSMENU

 

Укажите ложное утверждение относительно следующего кода.

Указатель pa содержит адрес в куче

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

Утечек памяти не возникнет

Код скомпилируется и выполнится без ошибок

Все перечисленные утверждения верны


Выберите правильный прототип для пользовательской асинхронной процедуры (указатель на которую передается в функцию QueueUserAPC).

HANDLE CALLBACK APCProc(DWORD);

VOID CALLBACK APCProc(HANDLE, ULONG_PTR);

DWORD CALLBACK APCProc(DWORD, HANDLE);

VOID CALLBACK APCProc(ULONG_PTR);

VOID LRESULT APCProc(ULONG_PTR);


 

Представленный код должен открывать почтового клиента и создавать в нем новое сообщение с заполненным полем "Кому". В коде вызывается функция ShellExecute из Shell32.dll, которая поддерживается начиная с WindowsXP / Windows 2000 Server.
Проверка показала, что он не компилируется:
Что из перечисленного исправит это? (код компилируется без поддержки Unicode)

Заменить строку 1 на #define _WIN32_WINNT 0x0300

Заменить строку 1 на #define _WIN32_WINNT 0x0200

Нужно убрать строку 1

Заменить строку 1 на #define _WIN32_WINNT 0x0501

Заменить строку 1 на #define _WIN32_WINNT 0x0600


 

Какой точке входа в приложение Win32 соответствуют следующий набор параметров:(компилятор Microsoft Visual С++)

DllMain

main

WinMain

wWinMain

wmain


 

Совокупность правил контроля доступа субъектов к объектам в системе информационной безопасности называется …

состоянием системы безопасности

правами и привилегиями

моделью безопасности

монитором безопасности

политикой безопасности


 

Представлен код:
Данный код определяет, есть ли диск в CD-ROMе или дискета в дисководе. Но строка 30 не компилируется. Что нужно сделать, чтобы исправить этот баг? (код компилируется без поддержки Юникода)

В строке 5 заменить LPTSTR на LPСSTR

В строке 30 убрать скобки вокруг выражения IsDiskInDrive("E:\") ? "full" : "empty"

Для корректной работы IsDiskInDrive должна возвращать bool, а не BOOL

Заменить в строке 30 "E:\" на "E:\"

Заменить в строке 30 "E:\" на L"E:\"

 

Выделенный блок программного кода, в котором может произойти исключение, называется:

охраняемым блоком

фреймом

охраняемым кодом

блоком-фильтром

небезопасным кодом


 

Есть два потока. thread1() и thread2() – соответственно функции этих потоков. a и b – глобальные переменные целого типа, cs1 и cs2 – критические секции.
Укажите места в коде, прерывание выполнения потока в которых приведет к возникновению взаимной блокировки(deadlock).

//2

//3

//1

//5

//4


 

Какого состояния потока не существует в модели потоков Windows?

Подвешен/приостановлен (suspended state)

Состояние готовности (ready state)

Состояние ожидания (wait state)

Состояние завершения (terminated state)

Сигнальное состояние (signal state)


 

Распределенная процессом область виртуальной памяти, используемая им для захвата и освобождения блоков памяти, размер которых меньше размера виртуальной страницы, называется …

хранилищем памяти

стеком

статической памятью

кучей

свободной памятью

 

Где функция LoadLibrary ищет нужную библиотеку в последнюю очередь?

В каталогах , которые указаны в переменной окружения PATH

В каталоге Windows

В системном каталоге Windows

В текущем каталоге процесса

В каталоге, из которого запущено приложение


 

Следующий код демонстрирует известный прием, позволяющий получить хэндл консольного окна.
Однако код не компилируется. Определите, в какой строке ошибка (поддержка Юникода отключена).

В строке с меткой //3

В строке с меткой //4

В строке с меткой //2

В строке с меткой //5

В строке с меткой //1


 

Программист написал код создания объекта сервиса (будем считать, что сервис уже собран, называется DemoService и располагается в корневом каталоге диска С).
Какая ошибка содержится в этом коде?

Функции CloseServiceHandle не существует. Следует использовать CloseHandle

Внешнее и внутреннее имя сервиса не совпадают

Путь к сервису указан неверно

Не открыт менеджер сервисов

Константы SERVICE_ALL_ACCESS не существует

 

Какого состояния не существует в модели пяти состояний процесса в Windows?

Подвешен (Suspended)

Завершен (Exit)

Блокирован (Blocked)

Выполняется (Running)

Готов (Ready)


 

При работе с консольными приложениями (в том числе и посредством Win32 API) нередко приходится устанавливать кодировку. В каких из представленных популярных кодировок используется кириллица?

CP437

CP866

ANSI-1252

CP1251

Windows-1250


 

Программист написал функцию удаления каталога и всех его подкаталогов:
Что нужно подставить вместо ___1___, чтобы она корректно работала? (будем считать, что CString – просто класс для работы со строками, удобная оболочка над строкой в стиле С):

RemoveDirectory

MoveFileEx

RemoveDirectoryEx

RemoveDir

DeleteFile


 

Какой функции из перечисленных не существует в Win32 API?

UnloadLibrary

VirtualFree

MapViewOfFile

TranslateMessage

WaitForMultipleObjects

 


Это сообщение посылается когда пользователь выбирает команду меню или посылает команду из элемента управления.

WM_ACTIVATE

WM_NOTIFY

WM_COMMAND

WM_CHOOSE

WM_SELECT

 

Какой базовый стиль окна не входит в комбинированный стиль WS_OVERLAPPEDWINDOW?

WS_MAXIMIZEBOX

WS_MINIMIZEBOX

WS_CAPTION

WS_SYSMENU

WS_CHILD

 


Если выполнить вызов Sleep(0), то …

поток приостановится на 1 миллисекунду

поток приостановится на неопределенное время

поток приостановится и сразу встанет в очередь на выполнение

поток не приостановится и не передаст управление другому потоку

Вызов Sleep() просто проигнорируется


 

На рисунке представлен пример матрицы управления доступами.
Строки соответствуют субъектам, столбцы – объектам. В клетках прописаны соответствующие права. Определите, какое утверждение ложно.

Борис имеет право удалить файл Василия и свой файл, но не имеет прав чтения на Объект 1

Исполнять Объект 2 могут только Александр, Никита и Менеджер

Михаил и Никита обладают одинаковыми правами только на файл Бориса и на Объект 1.

Александр имеет право на чтение файла Василия, Василий имеет право на запись файла
Никиты, а Никита имеет право на чтение файлов Бориса и Василия

Менеджер имеет право устанавливать режимы доступа для всех перечисленных в таблице
объектов, но передавать права управления объектами другим субъектам - только для
файлов Бориса и Василия


 

Следующий код использует Native API для перевода ПК в режим гибернации (работает для WinXP / Win 7):
Какой вариант из представленных нужно вставить в строку 8, чтобы код успешно скомпилировался и выполнился? (код компилируется с поддержкой Unicode)

NTDll_PA NtInitiatePowerAction = (NTDll_PA)GetDllProcAddress("NtInitiatePowerAction");

NTDll_PA NtInitiatePowerAction = GetProcAddress("NtInitiatePowerAction");

NTDll_PA NtInitiatePowerAction = GetDllProcAddress("NtInitiatePowerAction");

NTDll_PA NtInitiatePowerAction = (NTDll_PA)GetProcAddress(Dll, "NtInitiatePowerAction");

NTDll_PA NtInitiatePowerAction = GetProcAddress(Dll, "NtInitiatePowerAction");



Есть работоспособный фрагмент кода рисования в клиентской области окна:
Какое число будет нарисовано в клиентской области окна в результате его выполнения?
*Цифры изображаются в стиле начертания индекса на почтовых конвертах

11

17

38

88

30


 

Чтобы удалить учетную запись пользователя, нужно вызвать функцию NetUserDel как например в этом коде:
Какие могут быть причины неудачного выполнения функции NetUserDel в данном коде, если известно, что код выполняется на локальном компьютере?

Не указан пароль пользователя

Код запущен не под администратором

Учетная запись пользователя заблокирована

Указано неправильное имя компьютера

Указано несуществующее имя пользователя

 


Чего нельзя сделать с помощью функции SetWindowLong?

Ассоциировать с окном пользовательские данные

Поменять иконку, ассоциированную с окном

Поменять курсор для окна

Поменять стиль окна

Поменять адрес оконной процедуры окна


 

Семейство Interlocked-функций используется для синхронизации параллельных потоков,если синхронизировать нужно несложные действия над общими переменными и применение мьютексов или критических секций накладно.
В следующей программе один поток производит символические продукты, а другой поток - их потребляет, осуществляя при этом вывод на экран общее количество потребляемых продуктов:
По идее на экран должна выводиться возрастающая последовательность чисел, а на деле выводится последовательность из нулей. Из предложенных вариантов выберите правильный способ для устранения ошибки.

Синхронизировать потоки с помощью мьютекса или критической секции

Заменить строку 18 на InterlockedExchange(&goods, n);

В строке 18 заменить InterlockedExchange на InterlockedExchangeAdd

Убрать строку 17

Заменить строку 9 на InterlockedIncrement(n);


 

Какая модель безопасности реализована в Windows?

дискреционная

мандатная

строгая

либеральная

ролевая



Что означает префикс «sz» в венгерской нотации?

число, задающее размер

короткое целое число

структуру SIZE

size_t

строку, заканчивающуюся нулевым байтом




Подставьте вместо звездочек название функции Win32 API, которой соответствует сигнатура:

WaitForMultipleObjectsEx

WaitForMultipleObjects

WaitForSingleObjectEx

WaitForSingleObject

SignalObjectAndWait

 


Какое утверждение относительно динамически подключаемых библиотек (DLL) является верным?

Для каждого процесса, использующего конкретнуюю DLL, создается отдельная копия этой DLL

Точка входа в DLL обязательно должна иметь имя DllMain.

Исполняемый код DLL хранится в физической памяти в одном экземпляре.

Данные, содержащиеся в DLL, разделяются между всеми процессами, использующими эту DLL.

Механизм загрузки DLL не основан на отображении файлов в память (file-mapping).




Что выведет в консоль следующий код, если запустить его на выполнение?

10

2

Код будет заблокирован

1



Макрос AbnormalTermination имеет прототип
и возвращает ноль(FALSE) если блок __try завершился нормально. Что будет выведено на экран после выполнения следующего кода?

Ничего

Результат выполнения кода не определен (Undefined behaivior)

10

20


Чем именованные каналы отличаются от анонимных (неименованных) каналов?

возможностью синхронного обмена данных

ограничением на тип передаваемых данных

возможностью моделирования любой топологии связей

возможностью передачи данных потоком

возможностью двустороннего обмена данными


 

Какое сообщение Windows посылается оконной процедуре диалогового окна непосредственно перед тем как оно будет отображено на экране?

WM_RESIZEDIALOG

WM_CREATEDIALOG

WM_INITDIALOG

WM_MODALDIALOG

WM_SHOWDIALOG

 

Что делает следующий код?

Выводит в консоль заголовки всех окон второго уровня

Выводит в консоль заголовки всех окон верхнего уровня

Выводит в консоль заголовки всех дочерних окон первого окна вернего уровня

Выводит в консоль заголовки всех окон всех уровней

Выводит в консоль заголовки всех дочерних окон активного окна


 

Реализованная в Windows модель безопасности удовлетворяет уровню безопасности С-2, который определен министерством обороны США. Далее перечислены наиболее важные требования, которым должна удовлетворять система, поддерживающая безопасность на этом уровне. В одном из них умышленно допущена ошибка и соответственно Windows ему не удовлетворяет. Определите это ложное утверждение.

ОС должна защищать ресурсы от случайного повторного использования, например,
содержимое памяти завершившегося процесса должно быть недоступно другому процессу;

Администратор системы должен иметь средства для проведения аудита событий, связанных с безопасностью системы. Доступ к полученным при аудите данным должен иметь только авторизованный администратор системы;

Система должна защищать себя от постороннего вмешательства во время своей работы,
например, система должна защищать себя от модификации извне во время своей работы.

Владелец ресурса должен управлять доступом к ресурсу;

Каждый пользователь системы должен при входе в систему указывать свое имя и
пароль, но система может не иметь средств для отслеживания работы пользователя;


 

Программист создал приложение Win32 Application. Цикл обработки сообщений в функции WinMain имеет вид:
switch-обработчик сообщений в оконной процедуре имеет вид:
Что будет содержать сообщение c заголовком Result, если запустить эту программу, перевести фокус на появившееся окно, один раз нажать например клавишу «F», а затем закрыть окно?

dcu

du

Окно сообщения не будет отображено

duc

c


 

Есть следующая небольшая DLL:
Следующая программа использует эту библиотеку, используя статическую загрузку.
Проверка показала, что код не линкутся. Что нужно добавить вместо комментария, чтобы код собрался и выполнился?

Дан фрагмент кода:
Какие утверждения относительно этого кода верны?

Функция Foo вызывает функцию WndProc

После выполнения инструкции return 0; ( в точке //2) функция WndProc больше не будет вызвана

В точке //1 Bar будет указывать на WndProc

Прием, применяемый в этом коде, называется сабклассингом (sub-classing)

Прием, применяемый в этом коде, называется суперклассингом (super-classing)

 


Какой заголовочный файл нужно подключить, чтобы воспользоваться функцией _beginthreadex для создания потоков?

crt.h

windows.h

process.h

thread.h

WindowsNT.h

 



Какая функция Win32 API из представленных служит для перемещения (переименования) каталогов?

MoveFolder

RenameDirectory

MoveDirectory

MoveDir

MoveFile



Следующий код не компилируется:
Определите, в чем проблема, если известно, что ошибка компиляции происходит в строке 22 и что код собирается в Юникоде.

Нужно заменить функцию NetUserChangePassword на UserChangePassword

Нужно заменить функцию NetUserChangePassword на NetUserSetInfo

Нужно подключить заголовочный файл lm.h

Нужно подключить библиотеку netapi32.lib через настройки проекта

Достаточно заменить NET_API_STATUS на NET_STATUS или на LONG


 

Что выведет в консоль следующая программа?

3

Программа блокируется в функции WaitForSingleObject

4

Результат не определен


 

Базовый приоритет потока определяется как сумма приоритета процесса и уровня приоритета потока. В следующей таблице все возможные базовые приотеты потоков в Windows. По столбцам указаны приоритеты классов процессов, а по строкам — уровни приоритетов потоков.
Какой уровень приоритета потоков является наивысшим? (подставьте вместо знака вопроса)

Time critical

Critical

Supreme

Maximum

Real time

 

Что из перечисленного не является объектом ядра?

критическая секция (critical section)

мьютекс (mutex)

поток (thread)

процесс (process)

неименованный канал (anonymous pipe)

 


 

Следующий код, создающий ожидающий таймер и устанавливающий для него процедуру завершения ожидания, при выполнении ведет себя по-разному в различных компиляторах, что явно похоже на Undefined behavior.
Определите, какой способ из предложенных исправляет положение.

Нужно поменять тип qwTimeInterval на ULONGLONG, а также qwTimeInterval = -1 * _SECOND на qwTimeInterval = 1 * _SECOND

Нужно передать в CreateWaitableTimer первым параметром инициализированный указатель

5-ый параметр функции SetWaitableTimer нужно заменить на “” (пустую строку)

Нужно заменить qwTimeInterval = -1 * _SECOND на qwTimeInterval = 1 * _SECOND

Нужно заменить вызов SleepEx(INFINITE, TRUE) на вызов Sleep(1000)


 

Даны DLL и программа, её использующая.
При сборке кода возникают 3 ошибки линковки:
Определите, что из перечисленного необходимо сделать, чтобы код собрался и выполнился?

Подключить библиотеку импорта к use_dll.exe

В коде use_dll.exe добавить extern "C" к прототипу функции Min

В коде библиотеки dll.dll в строках 8 и 13 добавить extern "C" перед __declspec(dllexport)

В коде use_dll.exe добавить extern "C" к прототипу функции Abs

В коде use_dll.exe добавить extern "C" к прототипу функции Max


 

Укажите две функции, которые обязательно должны присутствовать в сервисе (службе) Windows?

обработчик управляющих команд ОС

функция регистрации / дерегистрации в системе

оконная процедура

точка входа

функция WinMain


 

Имеется следующий фрагмент кода открытия именованного канала:
Что означает точка в имени канала (первом параметре)?

локальную машину

объект канала будет храниться в специальном каталоге Windows

текущий каталог

объект канала будет храниться в виртуальной памяти

канал открывается, а не создается


 

Дан фрагмент работоспособного кода, отрезками рисующего в клиентской области окна геометрическую фигуру в виде буквы латинского или русского алфавита:
Какая буква будет нарисована на экране после выполнения кода?

Х

L

И

I

Г



Как средствами Windows API можно завершить GUI-приложение, оконная процедура единственного окна которого имеет вид:

Вызвать TerminateProcess() для процесса, в котором выполняется приложение

Отправить в очередь сообщений его окна сообщение WM_QUIT

Послать сообщение WM_DESTROY окну, принадлежащему приложению

Послать сообщение WM_CLOSE окну, принадлежащему приложению

Вызвать PostQuitMessage(0) в приложении


 

Следующий код производит синхронизацию потоков с помощью объекта ядра "событие".
Что будет выведено на экран в результате выполнения кода? (предполагается, что объекты событий и поток создаются успешно)

x01c2

порядок вывода не определен

0x1c2

произойдет взаимная блокировка

01xc2


 

Какого зарезервированного слова не существует в механизме SEH?

__leave

__except

__finaly

__try

Все перечисленные слова входят в SEH


 

Если поток ожидает событие, которое никогда не произойдет, то говорят, что поток …

навсегда приостановлен

«завис»

заблокирован

закольцован

находится в тупике


 

Какой текст выведет сообщение в результате выполнения следующего кода?
(будем считать, что код компилируется без поддержки Юникода и что вызовы VirtualProtect выполняются успешно).

Возникнет ошибка времени выполнения

707

700

777

Возникнет ошибка компиляции



Каких функций для работы с объектом синхронизации "семафор" из представленных не существует в Win32?

ReleaseSemaphore

OpenSemaphore

IncrementSemaphore

CloseSemaphore

CreateSemaphore

 

С помощью какой функции Win32 API можно выполнить удаление директории и всех её поддиректорий за один вызов?

SHFileOperation

DeleteFileEx

RemoveDirRecursive

RemoveDirectory

Такой функции не существует в Win32 API

 

Следующий код демонстрирует специфику работы инструкции __finally.

Какой будет вывод в консоль в результате выполнения программы?

21

14

4

20

13


 

Что будет нарисовано в клиентской области окна приложения, если код следующий?

Ничего

Круг внутри квадрата

Квадрат внутри круга

Квадрат

Круг


 

Следующий код служит для создания учетной записи пользователя на локальном компьютере.
Определите, в какой из предложенных строк есть ошибка? (программа компилируется с поддержкой Юникода)

23

10

14

21

22


 

Следующий код не компилируется. Какое из представленных решений не исправляет ошибку?

Заменить TCHAR на CHAR

Обернуть "Error" в макрос _TEXT()

Убрать директиву #define

Добавить символ L перед "Error"

Обернуть "Error" в макрос _T()


Какая функция Win32 используется для установки фильтр-процедур для контроля над некоторыми типами событий в системе?

SetWindowFilter

SetWindowsHookEx

SetFilterProcedure

SetFilterHook

SetWindowsHook


 

Следующий код работает с консолью – меняет её заголовок, а затем возвращает размеры консоли:
Код не компилируется. В каких строках из отмеченных есть ошибки? (код компилируется с поддержкой Юникода)

//5

//3

//1

//4

//2


Программист написал код, который создает дочерний процесс и через аргумент командной строки передает в дочерний процесс дескриптор своего потока. Код следующий:
Код, выполняющейся в дочернем процессе, таков: :
При запуске приложения выяснилось, что дочерний процесс запускается и корректно завершается, а основной процесс "зависает". Что нужно сделать, чтобы исправить ситуацию? (сделать так, чтобы основной процесс тоже корректно завершался)

В строке 28 кода основного процесса заменить FALSE на TRUE

Строку 9 кода дочернего процесса заменить на WaitForSingleObject(hThread, 1000);

Убрать строки 41 и 42 в коде основного процесса

Изменить строку 6 кода дочернего процесса на HANDLE hThread = (HANDLE)atoi(argv[0]);

Строку 14 кода основного процесса заменить на sa.bInheritHandle = FALSE;


На рисунке представлена общая схема канала передачи данных между процессами:
T1 и T2 – пользовательские процессы, выполняющиеся в контекстах разных процессов. Что на схеме обозначено буквой «M»?

Общая память

Сообщение WM_COPYDATA

Поток ядра ОС

Менеджер потоков ядра

Буфер


 

Какие клавиши относятся к так называемым клавишам-модификаторам?

Shift

Alt

Ctrl

Insert

Caps Lock


 

Что делает представленный код? (укажите все возможные варианты)

Выводит длину идентификатора безопасности

Проверяет достоверность идентификатора безопасности

Выводит значение относительного идентификатора SID

Инициализирует идентификатор безопасности (SID)

Связывает SID с учетной записью


 

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



Cогласованность данных, хранящихся в файле, отображенном в память несколькими процессами, называется __________

симметрией данных

синхронизацией данных

когерентностью данных

корелляцией данных

разделяемостью данных



Достижение некоторого фиксированного соотношения (порядка) между сигналами, которыми обмениваются два процесса, называется …

параллелизмом процессов

сбалансированностью процессов

синхронизацией процессов

дивергенцией процессов

ковариантностью процессов



Укажите верное определение для параметра /EHa компилятора от Microsoft (Visual Studio).

Ни одно из определений не верно

Задает модель обработки, в которой перехватываются только исключения C++,
а при использовании функций «extern C» не предполагается возникновение исключений C++.

Задает модель обработки, в которой перехватываются асинхронные (структурированные) и синхронные (C++) исключения.

Задает модель обработки, в которой перехватываются только исключения C++,
а при использовании функций «extern C» предполагается возникновение исключений.

Этот параметр устарел и больше не поддерживается


 

Что верно относительно следующего кода?

Он успешно конвертирует строку "string" в Юникод

Возникнет ошибка времени выполнения

Возникнет ошибка компиляции из-за TCHAR

Возникнет ошибка компиляции из-за "string"

Ошибок компиляции не возникнет, но строка "string" не будет конвертирована в Юникод


 

Посмотрите на следующую схему и ответьте, какая функция из семейства функций по работе с разделяемой памятью скрыта?

GetViewOfFile

UnmapViewOfFile

CloseViewOfFile

DeleteViewOfFile

MoveViewOfFile

 

Что из перечисленного не является способом создания меню средствами Win32 API?

При помощи класса CMenu

При помощи структуры MENU и функции CreateWindow

На основе шаблона меню, определенного в памяти, и функции LoadMenuIndirect

На основе шаблона меню, определенного в файле ресурсов

При помощи функций CreateMenu и AppendMenu


 

Какая функция не используется в так называемом цикле обработки сообщений приложения Win32 API?

GetMessage()

PeekMessage()

PostMessage()

TranslateMessage()

DispatchMessage()

 

Отметьте верное утверждение. Если функция реентерабельна, то она:

потокобезопасна

не использует статические переменные, определенные внутри функции

может использовать глобальные переменные без ограничений

обеспечивает блокировку доступа к ресурсам, которые она использует

Ни одно из утверждений не верно


Какие префиксы из венгерской нотации не предполагают целочисленное значение?

w

c

v

b

by

 

Что из перечисленного является способом обмена данными между процессами?

сообщение WM_COPYDATA

асинхронный вызов процедур (asynchronous procedure call)

именованные каналы (named pipes)

сокеты(sockets)

отображение файлов в память(file mapping)


 

Что не относится к графическим объектам GDI

Все это графические объекты GDI

Палитра (palette)

Реги

Внимание !
Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!

Что будет нарисовано в клиентской области окна, фрагмент кода оконной процедуры которого следующий:

Желтый квадрат

Красный квадрат

Черный квадрат

Синий квадрат

Ничего

 

 

Cледующий код демострирует синхронизацию с помощью критической секции.
Что будет выведено на экран в результате выполнения программы?

Возникнет ошибка компиляции

Возникнет ошибка времени выполнения

5678901234

Порядок вывода цифр не определен

0123456789

 

Программист написал код:

При его выполнении в консоль вывелось:
Что нужно сделать, чтобы исправить досадную ошибку?

В строке 7 заменить флаги GENERIC_EXECUTE|GENERIC_READ на GENERIC_ALL

В строке 22 заменить NULL адресом корректно проинициализированной структуры OVERLAPPED

В строке 17 заменить WriteFile на WriteFileEx

В строке 8 заменить флаг OPEN_EXISTING на CREATE_ALWAYS

В строке 17 заменить !WriteFile на WriteFile


Укажите два ложных утверждения о GDI.

GDI унифицированно работает с различными устройствами

GDI отвечает за отрисовку окон, меню и других элементов Windows

В GDI есть средства для отрисовки 3D-графики

GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры

GDI является составной частью пользовательского интерфейса Microsoft Windows

 

Класс окна описывается структурой WNDCLASSEX и содержит следующую информацию об окне: (укажите ложное утверждение)

Адрес точки входа в приложение, в котором находится оконная процедура для этого класса

Дескриптор курсора, дескриптор пиктограммы и дескриптор кисти для фона окна

Дескриптор экземпляра приложения, в котором находится оконная процедура для этого класса

Указатель на оконную процедуру

Имя меню, применяемого по умолчанию для этого класса


Что из системных ресурсов не принадлежит потоку?

Код исполняемой функции

Рабочее множество страниц реальной памяти

Стек для работы ОС

Стек для работы приложения

Набор регистров процессора


Какое из следующих утверждений относительно функции DllMain не верно?

В DLL обязательно должна присутствовать функция DllMain.

DllMain вызывается при загрузке DLL в адресное пространство процесса и при выгрузке из него.

DllMain вызывается при создании процессом нового потока и при завершении этого потока.

Последний параметр DllMain содержит способ загрузки DLL.

Все утверждения верны.


 

Какая функция Win32API служит для создания каталогов?

CreateFolder

СreateDir

CreateCatalog

CreateDirectory

CreateFile

 

Каким будет результат работы программы? (предполагается, что потоки создаются успешно)

в консоль будет выведено: 210

результат не определен

в консоль будет выведено: 012

в консоль будет выведено: 120

в консоль будет выведено: 201


Дан код, который пишет цифры от 0 до 9 в файл.
Следующий код считывает из файла и выводит в консоль одну цифру:
Какая цифра будет выведена?

7

Результат не определен

6

3

2


 

Функция Win32 API GetFileSize, возвращающая размер указанного файла и имеющая прототип
работает следующим образом: (выберите правильный вариант)

В случае успеха возвращает старшее слово размера файла, при этом во втором параметре возвращается младшее слово размера файла.

В случае успеха возвращает 0, при этом во втором параметре возвращается размер файла в байтах.

В случае успеха возвращает младшее слово размера файла, при этом во втором параметре возвращается старшее слово размера файла.

В случае успеха возвращает 0, при этом во втором параметре возвращается структура LARGE_INTEGER

В случае успеха возвращает не 0, при этом во втором параметре возвращается размер файла в байтах.

 

Какие два стиля из перечисленных точно имеет окно на рисунке?

WS_TILEDWINDOW

WS_THICKFRAME

WS_POPUP

WS_SYSMENU

WS_VSCROLL


Какие функции Win32 API используются для посылки асинхронных сообщений?

PostMessage

SendMessage

PostThreadMessage

PostQuitMessage

SendNotifyMessage


 

Программист написал небольшую DLL, которая экспортирует две переменные целого типа. Вот ее код:
Также программист написал программу(EXE), использующую эту DLL. Код программы такой:
Затем программист последовательно, не закрывая предыдущих, запустил 3 экземпляра программы Client.exe. Что выведет в консоль экземпляр программы Client.exe, запущенный последним(3-им)?

42

33

44

24

22


Нижеследующий код работает со стандартной кучей процесса. Определите, вызов какой функции Win32 API должен размещаться на месте прочерка в строке 12.

HeapOpen()

GetDefaultHeap()

GetProcessHeap()

GetHeap()

HeapCreate()

 

В предопределенные классы окон Windows не входит:

SCROLLBAR

STATIC

TREEVIEW

COMBOBOX

LISTBOX


 

Программист написал код асинхронной записи в файл. Название какой функции Win32 API нужно подставить вместо ___1___, чтобы код корректно выполнился? (Считаем, что файл C:\demo_file.dat существует на диске, открывается функцией CreateFile без ошибок)

WaitForSingleObject

SleepEx

SuspendThread

Sleep

SignalObjectAndWait


 

Среди перечисленных режимов доступа к файлу укажите так называемые родовые режимы доступа.

FILE_SHARE_READ

GENERIC_READ

FILE_SHARE_DELETE

GENERIC_WRITE

GENERIC_EXECUTE

 

Функция GetCurrentThread() возвращает:

дескриптор текущего потока

другое

контекст текущего потока

идентификатор текущего потока

псевдодескриптор текущего потока


Какую библиотечную функцию рекомендуется использовать для создания потока вместо CreateThread при программировании на C++?

 _beginthread

_beginthreadex

BeginThread

beginthread

beginthreadex


Пользователь посылает окну с дескриптором hWnd сообщение с помощью функции SendMessage() из того же потока. Каков будет упрощенный маршрут сообщения?

-> Оконная процедура с дескриптором окна hWnd.

-> Системная очередь сообщений -> Оконная процедура hWnd.

-> Системная очередь сообщений -> Очередь сообщений приложения с окном hWnd -> Оконная процедура hWnd.

-> Очередь сообщений приложения с окном hWnd -> Оконная процедура hWnd

-> Очередь сообщений потока, создавшего окно hWnd -> Оконная процедура hWnd.


 

Что выведет на экран нижеследующий код? (предполагается, что потоки создаются успешно)

33

00

13

Результат не определен

31



Что называют "Dll hell" в ОС Windows? (укажите наиболее точное определение)

Это понятие относится к использованию DLL в другой ОС (не семейства ОС Windows)

Пример плохой концепции программирования с использованием DLL

Тупиковую ситуацию, связанную с управлением библиотеками DLL

Такого понятия не существует

Несовместимость и невзаимозаменяемость различных версий DLL


Что нужно сделать, чтобы следующий код гарантированно завершил свое выполнение?

Добавить квалификатор volatile перед объявлениями переменных flag и flagThread

В строке 5 добавить перед объявлением переменной flagThread квалификатор volatile

Заменить в строке 24 константу INFINITE на 1000

В строке 9 изменить while(!flagThread) на while(flagThread)

В строке 14 добавить перед объявлением переменной flag квалификатор volatile

 

_________ - это процесс, который загружается при загрузке ОС Windows или в процессе ее работы по специальной команде и заканчивает свою работу по завершении работы ОС или по специальной команде.

резидентная программа

сервис

фоновый процесс

задача

драйвер


 

Каков будет вывод в консоль в результате выполнения следующей программы?

120

110

111

121

160


 

Ниже представлен код, который тестирует механизм отображения файлов в память.
Замените метки __1__, __2__ и __3__ на соответствующие параметрам и контексту функции.

CreateFile, CreateFileMapping, CreateViewOfFile

CreateFileEx, CreateViewOfFile, CreateFileMapping

CreateFile, CreateFileMapping, MapViewOfFile

CreateFile, CreateViewOfFile, MapViewOfFile

CreateFileEx, CreateFileMapping, CreateViewOfFile


 

Программист написал программу для работы с виртуальной памятью, но в код вкралась ошибка, приводящая к access violation при обращении к указателю ‘a’ в строке 19.
Как исправить ошибку?

В строке 10 заменить NULL на корректный указатель

В строке 12 заменить MEM_RESERVE на MEM_RESET

В строке 13 заменить PAGE_ READWRITE на PAGE_EXECUTE_READWRITE

В строке 12 заменить MEM_RESERVE на MEM_COMMIT

В строку 18 вставить вызов VirtualLock(a, size * sizeof(int));


Перекрывающимся (overlapped) вводом-выводом данных в ОС Windows называется …

пакетированный ввод-вывод

файловый ввод-вывод

потоковый ввод-вывод

асинхронный ввод-вывод

синхронный ввод-вывод


 

Программист написал, скомпилировал и запустил код:
Результат его выполнения такой:
Определите, какой прототип из предложенных имеет функция GetFileTime, если файл demo_file.dat имеет следующие свойства:

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime);

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime, LPFILETIME lpCreationTime);

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime, LPFILETIME lpLastWriteTime, LPFILETIME lpLastAccessTime);

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastWriteTime, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime);

BOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpLastAccessTime, LPFILETIME lpCreationTime, LPFILETIME lpLastWriteTime);


Какие стили из перечисленных имеет окно на рисунке

WS_MAXIMIZEBOX

WS_POPUP

WS_OVERLAPPEDWINDOW

WS_MINIMIZEBOX

WS_SYSMENU

 

Укажите ложное утверждение относительно следующего кода.
 
Указатель pa содержит адрес в куче

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

Утечек памяти не возникнет

Код скомпилируется и выполнится без ошибок

Все перечисленные утверждения верны


Выберите правильный прототип для пользовательской асинхронной процедуры (указатель на которую передается в функцию QueueUserAPC).

HANDLE CALLBACK APCProc(DWORD);

VOID CALLBACK APCProc(HANDLE, ULONG_PTR);

DWORD CALLBACK APCProc(DWORD, HANDLE);

VOID CALLBACK APCProc(ULONG_PTR);

VOID LRESULT APCProc(ULONG_PTR);


Представленный код должен открывать почтового клиента и создавать в нем новое сообщение с заполненным полем "Кому". В коде вызывается функция ShellExecute из Shell32.dll, которая поддерживается начиная с WindowsXP / Windows 2000 Server.
Проверка показала, что он не компилируется:
Что из перечисленного исправит это? (код компилируется без поддержки Unicode)

Заменить строку 1 на #define _WIN32_WINNT 0x0300

Заменить строку 1 на #define _WIN32_WINNT 0x0200

Нужно убрать строку 1

Заменить строку 1 на #define _WIN32_WINNT 0x0501

Заменить строку 1 на #define _WIN32_WINNT 0x0600


 

Какой точке входа в приложение Win32 соответствуют следующий набор параметров:(компилятор Microsoft Visual С++)

DllMain

main

WinMain

wWinMain

wmain


Совокупность правил контроля доступа субъектов к объектам в системе информационной безопасности называется …

состоянием системы безопасности

правами и привилегиями

моделью безопасности

монитором безопасности

политикой безопасности


 

Представлен код:
Данный код определяет, есть ли диск в CD-ROMе или дискета в дисководе. Но строка 30 не компилируется. Что нужно сделать, чтобы исправить этот баг? (код компилируется без поддержки Юникода)

В строке 5 заменить LPTSTR на LPСSTR

В строке 30 убрать скобки вокруг выражения IsDiskInDrive("E:\") ? "full" : "empty"

Для корректной работы IsDiskInDrive должна возвращать bool, а не BOOL

Заменить в строке 30 "E:\" на "E:\"

Заменить в строке 30 "E:\" на L"E:\"


Выделенный блок программного кода, в котором может произойти исключение, называется:

охраняемым блоком

фреймом

охраняемым кодом

блоком-фильтром

небезопасным кодом


 

Есть два потока. thread1() и thread2() – соответственно функции этих потоков. a и b – глобальные переменные целого типа, cs1 и cs2 – критические секции.
Укажите места в коде, прерывание выполнения потока в которых приведет к возникновению взаимной блокировки(deadlock).

//2

//3

//1

//5

//4


Какого состояния потока не существует в модели потоков Windows?

Подвешен/приостановлен (suspended state)

Состояние готовности (ready state)

Состояние ожидания (wait state)

Состояние завершения (terminated state)

Сигнальное состояние (signal state)


Распределенная процессом область виртуальной памяти, используемая им для захвата и освобождения блоков памяти, размер которых меньше размера виртуальной страницы, называется …

хранилищем памяти

стеком

статической памятью

кучей

свободной памятью

 

Где функция LoadLibrary ищет нужную библиотеку в последнюю очередь?

В каталогах , которые указаны в переменной окружения PATH

В каталоге Windows

В системном каталоге Windows

В текущем каталоге процесса

В каталоге, из которого запущено приложение


Следующий код демонстрирует известный прием, позволяющий получить хэндл консольного окна.
Однако код не компилируется. Определите, в какой строке ошибка (поддержка Юникода отключена).

В строке с меткой //3

В строке с меткой //4

В строке с меткой //2

В строке с меткой //5

В строке с меткой //1


 

Программист написал код создания объекта сервиса (будем считать, что сервис уже собран, называется DemoService и располагается в корневом каталоге диска С).
Какая ошибка содержится в этом коде?

Функции CloseServiceHandle не существует. Следует использовать CloseHandle

Внешнее и внутреннее имя сервиса не совпадают

Путь к сервису указан неверно

Не открыт менеджер сервисов

Константы SERVICE_ALL_ACCESS не существует


Какого состояния не существует в модели пяти состояний процесса в Windows?

Подвешен (Suspended)

Завершен (Exit)

Блокирован (Blocked)

Выполняется (Running)

Готов (Ready)


При работе с консольными приложениями (в том числе и посредством Win32 API) нередко приходится устанавливать кодировку. В каких из представленных популярных кодировок используется кириллица?

CP437/1

CP866/1

ANSI-1252

CP1251

Windows-1250


Программист написал функцию удаления каталога и всех его подкаталогов:
Что нужно подставить вместо ___1___, чтобы она корректно работала? (будем считать, что CString – просто класс для работы со строками, удобная оболочка над строкой в стиле С):

RemoveDirectory

MoveFileEx

RemoveDirectoryEx

RemoveDir

DeleteFile


 

Какой функции из перечисленных не существует в Win32 API?

UnloadLibrary

VirtualFree

MapViewOfFile

TranslateMessage

WaitForMultipleObjects


Это сообщение посылается когда пользователь выбирает команду меню или посылает команду из элемента управления.

WM_ACTIVATE

WM_NOTIFY

WM_COMMAND

WM_CHOOSE

WM_SELECT

 

Какой базовый стиль окна не входит в комбинированный стиль WS_OVERLAPPEDWINDOW?

WS_MAXIMIZEBOX

WS_MINIMIZEBOX

WS_CAPTION

WS_SYSMENU

WS_CHILD


Если выполнить вызов Sleep(0), то …

поток приостановится на 1 миллисекунду

поток приостановится на неопределенное время

поток приостановится и сразу встанет в очередь на выполнение

поток не приостановится и не передаст управление другому потоку

Вызов Sleep() просто проигнорируется


На рисунке представлен пример матрицы управления доступами.
Строки соответствуют субъектам, столбцы – объектам. В клетках прописаны соответствующие права. Определите, какое утверждение ложно.

Борис имеет право удалить файл Василия и свой файл, но не имеет прав чтения на Объект 1

Исполнять Объект 2 могут только Александр, Никита и Менеджер

Михаил и Никита обладают одинаковыми правами только на файл Бориса и на Объект 1.

Александр имеет право на чтение файла Василия, Василий имеет право на запись файла
Никиты, а Никита имеет право на чтение файлов Бориса и Василия

Менеджер имеет право устанавливать режимы доступа для всех перечисленных в таблице
объектов, но передавать права управления объектами другим субъектам - только для
файлов Бориса и Василия


Следующий код использует Native API для перевода ПК в режим гибернации (работает для WinXP / Win 7):
Какой вариант из представленных нужно вставить в строку 8, чтобы код успешно скомпилировался и выполнился? (код компилируется с поддержкой Unicode)

NTDll_PA NtInitiatePowerAction = (NTDll_PA)GetDllProcAddress("NtInitiatePowerAction");

NTDll_PA NtInitiatePowerAction = GetProcAddress("NtInitiatePowerAction");

NTDll_PA NtInitiatePowerAction = GetDllProcAddress("NtInitiatePowerAction");

NTDll_PA NtInitiatePowerAction = (NTDll_PA)GetProcAddress(Dll, "NtInitiatePowerAction");

NTDll_PA NtInitiatePowerAction = GetProcAddress(Dll, "NtInitiatePowerAction");


Есть работоспособный фрагмент кода рисования в клиентской области окна:

Какое число будет нарисовано в клиентской области окна в результате его выполнения?
*Цифры изображаются в стиле начертания индекса на почтовых конвертах

11

17

38

88

30


 

Чтобы удалить учетную запись пользователя, нужно вызвать функцию NetUserDel как например в этом коде:
Какие могут быть причины неудачного выполнения функции NetUserDel в данном коде, если известно, что код выполняется на локальном компьютере?

Не указан пароль пользователя

Код запущен не под администратором

Учетная запись пользователя заблокирована

Указано неправильное имя компьютера

Указано несуществующее имя пользователя


Чего нельзя сделать с помощью функции SetWindowLong?

Ассоциировать с окном пользовательские данные

Поменять иконку, ассоциированную с окном

Поменять курсор для окна

Поменять стиль окна

Поменять адрес оконной процедуры окна


Семейство Interlocked-функций используется для синхронизации параллельных потоков,если синхронизировать нужно несложные действия над общими переменными и применение мьютексов или критических секций накладно.
В следующей программе один поток производит символические продукты, а другой поток - их потребляет, осуществляя при этом вывод на экран общее количество потребляемых продуктов:



По идее на экран должна выводиться возрастающая последовательность чисел, а на деле выводится последовательность из нулей. Из предложенных вариантов выберите правильный способ для устранения ошибки.

Синхронизировать потоки с помощью мьютекса или критической секции

Заменить строку 18 на InterlockedExchange(&goods, n);

В строке 18 заменить InterlockedExchange на InterlockedExchangeAdd

Убрать строку 17

Заменить строку 9 на InterlockedIncrement(n);


 

Какая модель безопасности реализована в Windows?

дискреционная

мандатная

строгая

либеральная

ролевая

 


Что означает префикс «sz» в венгерской нотации?

число, задающее размер

короткое целое число

структуру SIZE

size_t

строку, заканчивающуюся нулевым байтом


Подставьте вместо звездочек название функции Win32 API, которой соответствует сигнатура:

WaitForMultipleObjectsEx

WaitForMultipleObjects

WaitForSingleObjectEx

WaitForSingleObject

SignalObjectAndWait

 

Какое утверждение относительно динамически подключаемых библиотек (DLL) является верным?

Для каждого процесса, использующего конкретнуюю DLL, создается отдельная копия этой DLL

Точка входа в DLL обязательно должна иметь имя DllMain.

Исполняемый код DLL хранится в физической памяти в одном экземпляре.

Данные, содержащиеся в DLL, разделяются между всеми процессами, использующими эту DLL.

Механизм загрузки DLL не основан на отображении файлов в память (file-mapping).




Что выведет в консоль следующий код, если запустить его на выполнение?

10

2

Код будет заблокирован

1


 

Макрос AbnormalTermination имеет прототип
и возвращает ноль(FALSE) если блок __try завершился нормально. Что будет выведено на экран после выполнения следующего кода?

Ничего

Результат выполнения кода не определен (Undefined behaivior)

10

20

 

Чем именованные каналы отличаются от анонимных (неименованных) каналов?

возможностью синхронного обмена данных

ограничением на тип передаваемых данных

возможностью моделирования любой топологии связей

возможностью передачи данных потоком

возможностью двустороннего обмена данными


Какое сообщение Windows посылается оконной процедуре диалогового окна непосредственно перед тем как оно будет отображено на экране?

WM_RESIZEDIALOG

WM_CREATEDIALOG

WM_INITDIALOG

WM_MODALDIALOG

WM_SHOWDIALOG


Что делает следующий код?

Выводит в консоль заголовки всех окон второго уровня

Выводит в консоль заголовки всех окон верхнего уровня

Выводит в консоль заголовки всех дочерних окон первого окна вернего уровня

Выводит в консоль заголовки всех окон всех уровней

Выводит в консоль заголовки всех дочерних окон активного окна


 

Реализованная в Windows модель безопасности удовлетворяет уровню безопасности С-2, который определен министерством обороны США. Далее перечислены наиболее важные требования, которым должна удовлетворять система, поддерживающая безопасность на этом уровне. В одном из них умышленно допущена ошибка и соответственно Windows ему не удовлетворяет. Определите это ложное утверждение.

ОС должна защищать ресурсы от случайного повторного использования, например,
содержимое памяти завершившегося процесса должно быть недоступно другому процессу;

Администратор системы должен иметь средства для проведения аудита событий, связанных с безопасностью системы. Доступ к полученным при аудите данным должен иметь только авторизованный администратор системы;

Система должна защищать себя от постороннего вмешательства во время своей работы,
например, система должна защищать себя от модификации извне во время своей работы.

Владелец ресурса должен управлять доступом к ресурсу;

Каждый пользователь системы должен при входе в систему указывать свое имя и
пароль, но система может не иметь средств для отслеживания работы пользователя;


Программист создал приложение Win32 Application. Цикл обработки сообщений в функции WinMain имеет вид:
switch-обработчик сообщений в оконной процедуре имеет вид:
Что будет содержать сообщение c заголовком Result, если запустить эту программу, перевести фокус на появившееся окно, один раз нажать например клавишу «F», а затем закрыть окно?

dcu

du

Окно сообщения не будет отображено

duc

c


 

Есть следующая небольшая DLL:
Следующая программа использует эту библиотеку, используя статическую загрузку.
Проверка показала, что код не линкутся. Что нужно добавить вместо комментария, чтобы код собрался и выполнился?

 


Дан фрагмент кода:
Какие утверждения относительно этого кода верны?

Функция Foo вызывает функцию WndProc

После выполнения инструкции return 0; ( в точке //2) функция WndProc больше не будет вызвана

В точке //1 Bar будет указывать на WndProc

Прием, применяемый в этом коде, называется сабклассингом (sub-classing)

Прием, применяемый в этом коде, называется суперклассингом (super-classing)


Какой заголовочный файл нужно подключить, чтобы воспользоваться функцией _beginthreadex для создания потоков?

crt.h

windows.h

process.h

thread.h

WindowsNT.h

 

Какая функция Win32 API из представленных служит для перемещения (переименования) каталогов?

MoveFolder

RenameDirectory

MoveDirectory

MoveDir

MoveFile



Следующий код не компилируется:
Определите, в чем проблема, если известно, что ошибка компиляции происходит в строке 22 и что код собирается в Юникоде.

Нужно заменить функцию NetUserChangePassword на UserChangePassword

Нужно заменить функцию NetUserChangePassword на NetUserSetInfo

Нужно подключить заголовочный файл lm.h

Нужно подключить библиотеку netapi32.lib через настройки проекта

Достаточно заменить NET_API_STATUS на NET_STATUS или на LONG


Что выведет в консоль следующая программа?

3

Программа блокируется в функции WaitForSingleObject

4

Результат не определен


 

Базовый приоритет потока определяется как сумма приоритета процесса и уровня приоритета потока. В следующей таблице все возможные базовые приотеты потоков в Windows. По столбцам указаны приоритеты классов процессов, а по строкам — уровни приоритетов потоков.
Какой уровень приоритета потоков является наивысшим? (подставьте вместо знака вопроса)

Time critical

Critical

Supreme

Maximum

Real time


Что из перечисленного не является объектом ядра?

критическая секция (critical section)

мьютекс (mutex)

поток (thread)

процесс (process)

неименованный канал (anonymous pipe)


Следующий код, создающий ожидающий таймер и устанавливающий для него процедуру завершения ожидания, при выполнении ведет себя по-разному в различных компиляторах, что явно похоже на Undefined behavior.
Определите, какой способ из предложенных исправляет положение.

Нужно поменять тип qwTimeInterval на ULONGLONG, а также qwTimeInterval = -1 * _SECOND на qwTimeInterval = 1 * _SECOND

Нужно передать в CreateWaitableTimer первым параметром инициализированный указатель

5-ый параметр функции SetWaitableTimer нужно заменить на “” (пустую строку)

Нужно заменить qwTimeInterval = -1 * _SECOND на qwTimeInterval = 1 * _SECOND

Нужно заменить вызов SleepEx(INFINITE, TRUE) на вызов Sleep(1000)


 

Даны DLL и программа, её использующая.
При сборке кода возникают 3 ошибки линковки:
Определите, что из перечисленного необходимо сделать, чтобы код собрался и выполнился?

Подключить библиотеку импорта к use_dll.exe

В коде use_dll.exe добавить extern "C" к прототипу функции Min

В коде библиотеки dll.dll в строках 8 и 13 добавить extern "C" перед __declspec(dllexport)

В коде use_dll.exe добавить extern "C" к прототипу функции Abs

В коде use_dll.exe добавить extern "C" к прототипу функции Max


 

Укажите две функции, которые обязательно должны присутствовать в сервисе (службе) Windows?

обработчик управляющих команд ОС

функция регистрации / дерегистрации в системе

оконная процедура

точка входа

функция WinMain

 

Имеется следующий фрагмент кода открытия именованного канала:

Что означает точка в имени канала (первом параметре)?

локальную машину

объект канала будет храниться в специальном каталоге Windows

текущий каталог

объект канала будет храниться в виртуальной памяти

канал открывается, а не создается


 

Дан фрагмент работоспособного кода, отрезками рисующего в клиентской области окна геометрическую фигуру в виде буквы латинского или русского алфавита:
Какая буква будет нарисована на экране после выполнения кода?

Х

L

И

I

Г


 

Как средствами Windows API можно завершить GUI-приложение, оконная процедура единственного окна которого имеет вид:

Вызвать TerminateProcess() для процесса, в котором выполняется приложение

Отправить в очередь сообщений его окна сообщение WM_QUIT

Послать сообщение WM_DESTROY окну, принадлежащему приложению

Послать сообщение WM_CLOSE окну, принадлежащему приложению

Вызвать PostQuitMessage(0) в приложении


 

Следующий код производит синхронизацию потоков с помощью объекта ядра "событие".
Что будет выведено на экран в результате выполнения кода? (предполагается, что объекты событий и поток создаются успешно)

x01c2

порядок вывода не определен

0x1c2

произойдет взаимная блокировка

01xc2


 

Какого зарезервированного слова не существует в механизме SEH?

__leave

__except

__finaly

__try

Все перечисленные слова входят в SEH


Если поток ожидает событие, которое никогда не произойдет, то говорят, что поток …

навсегда приостановлен

«завис»

заблокирован

закольцован

находится в тупике


 

Какой текст выведет сообщение в результате выполнения следующего кода?
(будем считать, что код компилируется без поддержки Юникода и что вызовы VirtualProtect выполняются успешно).

Возникнет ошибка времени выполнения

707

700

777

Возникнет ошибка компиляции


Каких функций для работы с объектом синхронизации "семафор" из представленных не существует в Win32?

ReleaseSemaphore

OpenSemaphore

IncrementSemaphore

CloseSemaphore

CreateSemaphore

 

С помощью какой функции Win32 API можно выполнить удаление директории и всех её поддиректорий за один вызов?

SHFileOperation

DeleteFileEx

RemoveDirRecursive

RemoveDirectory

Такой функции не существует в Win32 API

 

Следующий код демонстрирует специфику работы инструкции __finally.
Какой будет вывод в консоль в результате выполнения программы?

21

14

4

20

13


 

Что будет нарисовано в клиентской области окна приложения, если код следующий?

Ничего

Круг внутри квадрата

Квадрат внутри круга

Квадрат

Круг


 

Следующий код служит для создания учетной записи пользователя на локальном компьютере.
Определите, в какой из предложенных строк есть ошибка? (программа компилируется с поддержкой Юникода)

23

10

14

21

22


 

Следующий код не компилируется. Какое из представленных решений не исправляет ошибку?

Заменить TCHAR на CHAR

Обернуть "Error" в макрос _TEXT()

Убрать директиву #define

Добавить символ L перед "Error"

Обернуть "Error" в макрос _T()


Какая функция Win32 используется для установки фильтр-процедур для контроля над некоторыми типами событий в системе?

SetWindowFilter

SetWindowsHookEx

SetFilterProcedure

SetFilterHook

SetWindowsHook


 

Следующий код работает с консолью – меняет её заголовок, а затем возвращает размеры консоли:
Код не компилируется. В каких строках из отмеченных есть ошибки? (код компилируется с поддержкой Юникода)

//5

//3

//1

//4

//2


 

Программист написал код, который создает дочерний процесс и через аргумент командной строки передает в дочерний процесс дескриптор своего потока. Код следующий:
Код, выполняющейся в дочернем процессе, таков: :
При запуске приложения выяснилось, что дочерний процесс запускается и корректно завершается, а основной процесс "зависает". Что нужно сделать, чтобы исправить ситуацию? (сделать так, чтобы основной процесс тоже корректно завершался)

В строке 28 кода основного процесса заменить FALSE на TRUE

Строку 9 кода дочернего процесса заменить на WaitForSingleObject(hThread, 1000);

Убрать строки 41 и 42 в коде основного процесса

Изменить строку 6 кода дочернего процесса на HANDLE hThread = (HANDLE)atoi(argv[0]);

Строку 14 кода основного процесса заменить на sa.bInheritHandle = FALSE;


 

На рисунке представлена общая схема канала передачи данных между процессами:
T1 и T2 – пользовательские процессы, выполняющиеся в контекстах разных процессов. Что на схеме обозначено буквой «M»?

Общая память

Сообщение WM_COPYDATA

Поток ядра ОС

Менеджер потоков ядра

Буфер



Какие клавиши относятся к так называемым клавишам-модификаторам?

Shift

Alt

Ctrl

Insert

Caps Lock



Что делает представленный код? (укажите все возможные варианты)

Выводит длину идентификатора безопасности

Проверяет достоверность идентификатора безопасности

Выводит значение относительного идентификатора SID

Инициализирует идентификатор безопасности (SID)

Связывает SID с учетной записью


 

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

 


Cогласованность данных, хранящихся в файле, отображенном в память несколькими процессами, называется __________

симметрией данных

синхронизацией данных

когерентностью данных

корелляцией данных

разделяемостью данных

 

Достижение некоторого фиксированного соотношения (порядка) между сигналами, которыми обмениваются два процесса, называется …

параллелизмом процессов

сбалансированностью процессов

синхронизацией процессов

дивергенцией процессов

ковариантностью процессов

 

Укажите верное определение для параметра /EHa компилятора от Microsoft (Visual Studio).

Ни одно из определений не верно

Задает модель обработки, в которой перехватываются только исключения C++,
а при использовании функций «extern C» не предполагается возникновение исключений C++.

Задает модель обработки, в которой перехватываются асинхронные (структурированные) и синхронные (C++) исключения.

Задает модель обработки, в которой перехватываются только исключения C++,
а при использовании функций «extern C» предполагается возникновение исключений.

Этот параметр устарел и больше не поддерживается


 

Что верно относительно следующего кода?

Он успешно конвертирует строку "string" в Юникод

Возникнет ошибка времени выполнения

Возникнет ошибка компиляции из-за TCHAR

Возникнет ошибка компиляции из-за "string"

Ошибок компиляции не возникнет, но строка "string" не будет конвертирована в Юникод



Посмотрите на следующую схему и ответьте, какая функция из семейства функций по работе с разделяемой памятью скрыта?
 

GetViewOfFile

UnmapViewOfFile

CloseViewOfFile

DeleteViewOfFile

MoveViewOfFile


Что из перечисленного не является способом создания меню средствами Win32 API?

При помощи класса CMenu

При помощи структуры MENU и функции CreateWindow

На основе шаблона меню, определенного в памяти, и функции LoadMenuIndirect

На основе шаблона меню, определенного в файле ресурсов

При помощи функций CreateMenu и AppendMenu


 

Какая функция не используется в так называемом цикле обработки сообщений приложения Win32 API?

etMessage()

PeekMessage()

PostMessage()

TranslateMessage()

DispatchMessage()

 

Отметьте верное утверждение. Если функция реентерабельна, то она:

потокобезопасна

не использует статические переменные, определенные внутри функции

может использовать глобальные переменные без ограничений

обеспечивает блокировку доступа к ресурсам, которые она использует

Ни одно из утверждений не верно


Какие префиксы из венгерской нотации не предполагают целочисленное значение?

w

c

v

b

by

 


Что из перечисленного является способом обмена данными между процессами?

сообщение WM_COPYDATA

асинхронный вызов процедур (asynchronous procedure call)

именованные каналы (named pipes)

сокеты(sockets)

отображение файлов в память(file mapping)



Что не относится к графическим объектам GDI?

Все это графические объекты GDI

Палитра (palette)

Регион (region)

Шрифт (font)

Растровое изображение (bitmap)

 

Синонимом чего из перечисленного является понятие «нить»?

Поток выполнения

Передача синхронного сообщения

Соединение по именованному каналу

Соединение по анонимному каналу

Вызов асинхронной процедуры


В пользовательском приложении указатель получил адрес (к примеру 0x004c1560). По какой схеме этот адрес будет преобразован к физическому?

логический адрес -> физический адрес

линейный адрес -> виртуальный адрес -> физический адрес

виртуальный адрес ->линейный адрес-> физический адрес

виртуальный адрес -> физический адрес

линейный адрес -> физический адрес


 

Следующий код программно нажимает, а затем на 2 секунды прячет кнопку Пуск в Windows (не работает в Vista и более новых). Определите, вызов какой функции скрывается за ___1___.

GetWindowByName()

GetWindowHandle()

GetHwnd()

GetTaskBar()

FindWindow()

 

Перемеинованием какого стандартного типа C++ является тип BOOL?

unsigned int

bool

char

unsigned char

int


 

Какие из вариантов прототипа оконной процедуры корректны (не вызовут ошибок компиляции)?

3

4

1

5

2


 

Какой контекст устройства не поддерживается или не существует в Win32 API?

контекст принтера

метафайловый контекст

контекст в памяти (совместимый)

контекст бу

Вы можете обратится к нам напрямую, через:

skype По Skype: molodoyberkut
telegram По Telegram: @MolodoyBerkut
icq По ICQ: 657089516
По Viber: molodoyberkut

Или через форму обратной связи на нашем сайте
4.png