112{
117
120
122 {
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
144 {
145 TRACE_(SERENUM,
"IRP_MJ_PNP / IRP_MN_START_DEVICE\n");
147 break;
148 }
150 {
151 switch (
Stack->Parameters.QueryDeviceRelations.Type)
152 {
154 {
156 }
158 {
160 TRACE_(SERENUM,
"IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / TargetDeviceRelation\n");
163 break;
164 }
165 default:
166 {
167 WARN_(SERENUM,
"IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / Unknown type 0x%lx\n",
168 Stack->Parameters.QueryDeviceRelations.Type);
171 break;
172 }
173 }
174 break;
175 }
177 {
180 TRACE_(SERENUM,
"IRP_MJ_PNP / IRP_MN_QUERY_CAPABILITIES\n");
181
183
193
197
202 break;
203 }
205 {
206 TRACE_(SERENUM,
"IRP_MJ_PNP / IRP_MN_QUERY_RESOURCES\n");
207
208
209
210
211
214 break;
215 }
217 {
218 TRACE_(SERENUM,
"IRP_MJ_PNP / IRP_MN_QUERY_RESOURCE_REQUIREMENTS\n");
219
220
221
222
223
226 break;
227 }
229 {
230 switch (
Stack->Parameters.QueryDeviceText.DeviceTextType)
231 {
233 {
236 TRACE_(SERENUM,
"IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_TEXT / DeviceTextDescription\n");
237
242 else
243 {
248 }
249 break;
250 }
252 {
253
254
255
258 break;
259 }
260 default:
261 {
262 WARN_(SERENUM,
"IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_TEXT / unknown type 0x%lx\n",
263 Stack->Parameters.QueryDeviceText.DeviceTextType);
266 }
267 }
268 break;
269 }
271 {
273 }
275 {
277 break;
278 }
280 {
282 TRACE_(SERENUM,
"IRP_MJ_PNP / IRP_MN_QUERY_BUS_INFORMATION\n");
283
285 if (!BusInfo)
287 else
288 {
291 &GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,
294
298 }
299 break;
300 }
301 default:
302 {
303
304
309 }
310 }
311
316}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define STATUS_NOT_SUPPORTED
#define STATUS_NOT_IMPLEMENTED
static const WCHAR Description[]
struct _PDO_DEVICE_EXTENSION * PPDO_DEVICE_EXTENSION
NTSTATUS NTAPI ForwardIrpToAttachedFdoAndForget(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define ExAllocatePoolWithTag(hernya, size, tag)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define memcpy(s1, s2, n)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
#define IoCompleteRequest
static NTSTATUS SerenumPdoQueryId(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, OUT ULONG_PTR *Information)
static NTSTATUS SerenumPdoQueryDeviceRelations(IN PDEVICE_OBJECT DeviceObject, OUT PDEVICE_RELATIONS *pDeviceRelations)
static NTSTATUS SerenumPdoStartDevice(IN PDEVICE_OBJECT DeviceObject)
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_In_ UCHAR _In_ UCHAR MinorFunction
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
#define DeviceCapabilities
struct _PNP_BUS_INFORMATION * PPNP_BUS_INFORMATION
#define IRP_MN_START_DEVICE
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define IRP_MN_QUERY_DEVICE_TEXT
#define IRP_MN_QUERY_CAPABILITIES
#define IRP_MN_QUERY_RESOURCES
@ DeviceTextLocationInformation
#define IRP_MN_QUERY_BUS_INFORMATION