Поделиться через


IOCTL_USBPRINT_GET_1284_ID IOCTL (usbprint.h)

Код управления IOCTL_USBPRINT_GET_1284_ID позволяет программному обеспечению верхнего уровня (например, языковому монитору) запрашивать и получать строку идентификатора устройства IEEE 1284 принтера.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Не используется в этой операции; Задайте для этого параметра значение NULL.

Длина входного буфера

Не используется в этой операции; Задайте для этого параметра значение 0.

Выходной буфер

Выходной буфер будет содержать данные UCHAR. При успешном выполнении этот буфер может содержать следующее: двухбайтовый префикс, указывающий размер (в байтах) идентификатора устройства IEEE 1284; идентификатор устройства; и признак конца null. Идентификатор устройства IEEE 1284 может иметь размер до 64 КБ. При сбое, если GetLastError возвращает код ошибки STATUS_BUFFER_TOO_SMALL, выходной буфер не был достаточно велик для хранения данных, предназначенных для него.

Длина выходного буфера

Выходной буфер должен быть достаточно большим, чтобы содержать двухбайтовый объем, содержащий длину идентификатора устройства IEEE 1284, идентификатор устройства (до 64 КБ) и завершающее значение NULL.

Длина IOCTL_USBPRINT_GET_1284_ID выходного буфера помещается непосредственно в ПАКЕТ USB. На некоторых usb-устройствах печати использование максимум 65535 байт может привести к сбою вызова с ошибкой 23. Чтобы устранить эту проблему, уменьшите размер буфера до 4094 байт или меньше.

Блок состояния

Irp->IoStatus.Status имеет значение STATUS_SUCCESS , если запрос выполнен успешно. В противном случае — Состояние до соответствующего условия ошибки в виде кода NTSTATUS .

Требования

Требование Значение
Заголовок usbprint.h

См. также раздел

Создание запросов IOCTL в драйверах

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously