ВУЗ:
Составители:
82
126. Что делать, если драйвер не может сразу обработать полученный IRP?
127. Как организуются очереди IRP?
128. Куда записывается первый элемент списка очереди IRP?
129. Какая функция используется для постановки IRP очередь?
130. Какая функция используется для извлечения IRP из очереди?
131. Для чего используется макрос CONTAINING_RECORD?
132. Для чего нужен объект DEVQUEUE?
133. Какова логика обработки
IRP с участием объекта DEVQUEUE?
134. Как можно определить общую диспетчерскую функция для запросов чтения
и записи?
135. Для чего нужен макрос PAGED_CODE?
136. Для чего используется функция IoMarkIrpPending?
137. Для чего используется функция StartPacket?
138. Для чего используется предложение #pragma PAGEDCODE?
139. Для чего нужен макрос LOCKED_CODE?
140. Для чего используется предложение #pragma LOCKEDCODE?
141. Какой последний аргумент задается
в функции StartPacket?
142. Какая функция вызывается при завершении IRP в DPC?
143. В каком случае вызывается функция StartNextPacket?
144. Когда возникает необходимость в отмене запроса ввода-вывода?
145. Как отменить запрос ввода-вывода в режиме ядра?
146. Как отменить запрос ввода-вывода в пользовательском режиме?
147. Как можно решить проблемы «гонок» при отмене IRP?
148.
Каковы основные сценарии обработки IRP?
149. При каких условиях IRP передается вниз с функцией завершения?
150. При каких условиях IRP передается вниз без функции завершения?
151. При каких условиях IRP завершается в диспетчерской функции?
152. При каких условиях IRP ставится в очередь для последующей обработки?
153. При каких условиях создаются асинхронные IRP?
154. При каких условиях IRP
создаются синхронные IRP?
155. При каких условиях выполняется синхронная передача IRP вниз?
156. При каких условиях выполняется синхронная асинхронных IRP?
126. Что делать, если драйвер не может сразу обработать полученный IRP? 127. Как организуются очереди IRP? 128. Куда записывается первый элемент списка очереди IRP? 129. Какая функция используется для постановки IRP очередь? 130. Какая функция используется для извлечения IRP из очереди? 131. Для чего используется макрос CONTAINING_RECORD? 132. Для чего нужен объект DEVQUEUE? 133. Какова логика обработки IRP с участием объекта DEVQUEUE? 134. Как можно определить общую диспетчерскую функция для запросов чтения и записи? 135. Для чего нужен макрос PAGED_CODE? 136. Для чего используется функция IoMarkIrpPending? 137. Для чего используется функция StartPacket? 138. Для чего используется предложение #pragma PAGEDCODE? 139. Для чего нужен макрос LOCKED_CODE? 140. Для чего используется предложение #pragma LOCKEDCODE? 141. Какой последний аргумент задается в функции StartPacket? 142. Какая функция вызывается при завершении IRP в DPC? 143. В каком случае вызывается функция StartNextPacket? 144. Когда возникает необходимость в отмене запроса ввода-вывода? 145. Как отменить запрос ввода-вывода в режиме ядра? 146. Как отменить запрос ввода-вывода в пользовательском режиме? 147. Как можно решить проблемы «гонок» при отмене IRP? 148. Каковы основные сценарии обработки IRP? 149. При каких условиях IRP передается вниз с функцией завершения? 150. При каких условиях IRP передается вниз без функции завершения? 151. При каких условиях IRP завершается в диспетчерской функции? 152. При каких условиях IRP ставится в очередь для последующей обработки? 153. При каких условиях создаются асинхронные IRP? 154. При каких условиях IRP создаются синхронные IRP? 155. При каких условиях выполняется синхронная передача IRP вниз? 156. При каких условиях выполняется синхронная асинхронных IRP? 82