次の方法で共有


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 のサイズをバイト単位で指定する 2 バイトのプレフィックスを保持できます。デバイス ID。と null 終端記号。 IEEE 1284 デバイス ID のサイズは最大 64 KB です。 エラーが発生した場合、 GetLastError が エラー コード STATUS_BUFFER_TOO_SMALLを返した場合、出力バッファーは目的のデータを保持するのに十分な大きさではありません。

出力バッファーの長さ

出力バッファーは、デバイスの IEEE 1284 デバイス ID の長さ、デバイス ID (最大 64 KB のサイズ)、終端の null を保持する 2 バイトの数量を格納するのに十分な大きさである必要があります。

IOCTL_USBPRINT_GET_1284_ID出力バッファーの長さは、USB パケットに直接配置されます。 一部の USB 印刷デバイスでは、最大 65535 バイトを使用すると、エラー 23 で呼び出しが失敗する可能性があります。 この問題を解決するには、バッファーを 4094 バイト以下に減らします。

ステータス ブロック

Irp->要求が成功した場合、IoStatus.StatusSTATUS_SUCCESS に設定されます。 それ以外の場合は、NTSTATUS コードとして適切なエラー条件の状態

要件

要件
Header usbprint.h

こちらもご覧ください

ドライバー内での IOCTL 要求の作成

WdfIoTargetSendInternalIoctlOthersSynchronously

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously