352{
358
359
360
361
364 {
365
366
367
369 }
370
371
372
373
376 {
377
378
379
381 }
382
383
384
385
387
388
389
390
393 {
394
395
396
399 }
400
401
402
403
405
406
407
408
411 {
412
413
414
415 DPRINT1(
"USBSTOR_SelectConfiguration failed to set interface %x\n",
Status);
419 }
420
421
422
423
425 if (!DeviceExtension->InterfaceInformation)
426 {
427
428
429
433 }
434
435
436
437
439
440
441
442
443 DeviceExtension->ConfigurationHandle =
Urb->UrbSelectConfiguration.ConfigurationHandle;
444
445
446
447
449
450
451
452
453 RtlCopyMemory(&
Urb->UrbSelectInterface.
Interface, DeviceExtension->InterfaceInformation, DeviceExtension->InterfaceInformation->Length);
454
455
456
457
459
460
461
462
464 {
465
466
467
468 ASSERT(
Urb->UrbSelectInterface.
Interface.Length == DeviceExtension->InterfaceInformation->Length);
470 }
471
472
473
474
477
478
479
480
482}
NTSTATUS NTAPI USBSTOR_ScanConfigurationDescriptor(IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, OUT PUSB_INTERFACE_DESCRIPTOR *OutInterfaceDescriptor, OUT PUSB_ENDPOINT_DESCRIPTOR *InEndpointDescriptor, OUT PUSB_ENDPOINT_DESCRIPTOR *OutEndpointDescriptor)
#define ExFreePoolWithTag(_P, _T)
PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
#define RtlCopyMemory(Destination, Source, Length)
struct _USBD_INTERFACE_INFORMATION * PUSBD_INTERFACE_INFORMATION
PURB NTAPI USBD_CreateConfigurationRequestEx(PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, PUSBD_INTERFACE_LIST_ENTRY InterfaceList)
#define UsbBuildSelectInterfaceRequest(urb, length, configurationHandle, interfaceNumber, alternateSetting)
_In_ PUSBD_INTERFACE_LIST_ENTRY InterfaceList
#define GET_SELECT_INTERFACE_REQUEST_SIZE(totalPipes)
struct _USBD_INTERFACE_LIST_ENTRY * PUSBD_INTERFACE_LIST_ENTRY
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_In_ WDFUSBINTERFACE _In_ UCHAR _Out_ PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor