IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// ntddstor.h

// CTL_CODE(0x002d, 0x304, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER 0x002D0C10
View the official Windows Driver Kit DDI reference
// winioctl.h

// CTL_CODE(0x002d, 0x304, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER 0x002D0C10
View the official Win32 API reference

NtDoc

No description available.

Windows Driver Kit DDI reference (ni-ntddstor-ioctl_storage_get_media_serial_number)

IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER IOCTL

Description

Queries the USB generic parent driver for the serial number of a USB device. If a USB device has a CSM-1 content security interface, a USB client driver can query for its serial number using this request. USB client drivers that help implement a digital rights management (DRM) system can use this information to ensure that only legitimate customers have access to digitized intellectual property.

Parameters

Major code

Input buffer

None.

Input buffer length

None.

Output buffer

The driver returns the serial number of the indicated device in a structure of type MEDIA_SERIAL_NUMBER_DATA in the buffer at Irp->AssociatedIrp.SystemBuffer.

Output buffer length

Parameters.DeviceIoControl.OutputBufferLength in the I/O stack location of the IRP indicates the size, in bytes, of the buffer, which must be at least sizeof(MEDIA_SERIAL_NUMBER_DATA).

Input/output buffer

Input/output buffer length

Status block

The Information field is set to the size, in bytes, of the returned data. The Status field can be set to STATUS_SUCCESS, or possibly to STATUS_INVALID_BUFFER_SIZE or STATUS_INSUFFICIENT_RESOURCES.

See also

MEDIA_SERIAL_NUMBER_DATA


Win32 API reference (ni-winioctl-ioctl_storage_get_media_serial_number)

IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER IOCTL

Description

Retrieves the serial number of a USB device.

To perform this operation, call the DeviceIoControl function with the following parameters.

BOOL DeviceIoControl(
  (HANDLE) hDevice,                         // handle to device
  IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER,    // dwIoControlCode
  NULL,                                     // lpInBuffer
  0,                                        // nInBufferSize
  (LPVOID) lpOutBuffer,                     // output buffer
  (DWORD) nOutBufferSize,                   // size of output buffer
  (LPDWORD) lpBytesReturned,                // number of bytes returned
  (LPOVERLAPPED) lpOverlapped               // OVERLAPPED structure
);

Parameters

Input buffer

Input buffer length

Output buffer

Output buffer length

Input/output buffer

Input/output buffer length

Status block

Irp->IoStatus.Status is set to STATUS_SUCCESS if the request is successful.

Otherwise, Status to the appropriate error condition as a NTSTATUS code.

For more information, see NTSTATUS Values.

See also