IOCTL_USBPRINT_GET_1284_ID IOCTL (usbprint.h)

IOCTL_USBPRINT_GET_1284_ID控制代码允许上层软件 ((如语言监视器) )请求并获取打印机的 IEEE 1284 设备 ID 字符串。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

此操作中未使用;将此参数设置为 NULL

输入缓冲区长度

此操作中未使用;将此参数设置为 0。

输出缓冲区

输出缓冲区将包含 UCHAR 数据。 成功后,此缓冲区可以保存以下内容:一个两字节前缀,用于指定设备的 IEEE 1284 设备 ID 的大小(以字节为单位);设备 ID;和 null 终止符。 IEEE 1284 设备 ID 的大小最大为 64 KB。 失败时,如果 GetLastError返回错误代码STATUS_BUFFER_TOO_SMALL,则输出缓冲区不够大,无法容纳用于它的数据。

输出缓冲区长度

输出缓冲区必须足够大,才能包含一个包含设备 IEEE 1284 设备 ID 长度的两字节数量,设备 ID (最大大小) 64 KB,以及终止 null。

IOCTL_USBPRINT_GET_1284_ID输出缓冲区长度直接放入 USB 数据包中。 在某些 USB 打印设备上,使用最大 65535 字节可能会导致调用失败并显示错误 23。 将缓冲区减少到 4094 字节或更少以解决此问题。

状态块

Irp->如果请求成功,IoStatus.Status 设置为 STATUS_SUCCESS 。 否则, 状态 为相应的错误条件作为 NTSTATUS 代码。

要求

要求
Header usbprint.h

另请参阅

在驱动程序中创建 IOCTL 请求

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously