224{
229 ULONG FieldLengthVendor, FieldLengthProduct, FieldLengthRevision,
TotalLength, FieldLengthSerialNumber;
238
239 DPRINT(
"USBSTOR_HandleQueryProperty\n");
240
244
246
247
250 {
251
253 }
254
255
257 {
258
260 }
261
263 {
264
266 }
267
268
270 {
271 DPRINT(
"USBSTOR_HandleQueryProperty StorageDeviceProperty OutputBufferLength %lu\n", IoStack->
Parameters.DeviceIoControl.OutputBufferLength);
272
274 ASSERT(PDODeviceExtension);
276
278 ASSERT(FDODeviceExtension);
280
281 InquiryData = (
PINQUIRYDATA)&PDODeviceExtension->InquiryData;
282
283
287
288 if (FDODeviceExtension->SerialNumber)
289 {
290 FieldLengthSerialNumber =
wcslen(FDODeviceExtension->SerialNumber->bString);
291 }
292 else
293 {
294 FieldLengthSerialNumber = 0;
295 }
296
297
298
300
301
303 {
304
307
308
311
314 }
315
316
318
330 DeviceDescriptor->RawPropertiesLength = FieldLengthVendor + FieldLengthProduct + FieldLengthRevision + FieldLengthSerialNumber + 3 + (FieldLengthSerialNumber > 0 ? + 1 : 0);
331
332
334
336 Buffer[FieldLengthVendor] =
'\0';
337 Buffer += FieldLengthVendor + 1;
338
340 Buffer[FieldLengthProduct] =
'\0';
341 Buffer += FieldLengthProduct + 1;
342
344 Buffer[FieldLengthRevision] =
'\0';
345 Buffer += FieldLengthRevision + 1;
346
347 if (FieldLengthSerialNumber)
348 {
350
354
357 }
358
363
366 }
367 else
368 {
369
370
371 DPRINT(
"USBSTOR_HandleQueryProperty StorageAdapterProperty OutputBufferLength %lu\n", IoStack->
Parameters.DeviceIoControl.OutputBufferLength);
372
374 {
375
378
379
382
385 }
386
387
388 AdapterDescriptor =
Irp->AssociatedIrp.SystemBuffer;
389
390
391
392
399 .BusMajorVersion = 2,
400 .BusMinorVersion = 0
401 };
402
403
404
405
407
409 }
410}
struct _FDO_DEVICE_EXTENSION * PFDO_DEVICE_EXTENSION
ULONG USBSTOR_GetFieldLength(IN PUCHAR Name, IN ULONG MaxLength)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
* PSTORAGE_DESCRIPTOR_HEADER
STORAGE_DESCRIPTOR_HEADER
* PSTORAGE_DEVICE_DESCRIPTOR
struct _STORAGE_PROPERTY_QUERY * PSTORAGE_PROPERTY_QUERY
STORAGE_DEVICE_DESCRIPTOR
#define STATUS_INVALID_PARAMETER_2
#define STATUS_INVALID_PARAMETER_1
struct _STORAGE_ADAPTER_DESCRIPTOR_WIN8 STORAGE_ADAPTER_DESCRIPTOR_WIN8
const KSDEVICE_DESCRIPTOR DeviceDescriptor
COMMON_DEVICE_EXTENSION Common
UCHAR ProductRevisionLevel[4]
STORAGE_QUERY_TYPE QueryType
STORAGE_PROPERTY_ID PropertyId
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size