はい、libusbを使用して行うことができます(libusbをC++で使用する場合はthis linkに従ってください)。今、いくつか注意しておくべきこと -
1 - デバイスアドレスは何ですか? (libusb APIを使用して取得できます)
libusb_get_device_list (libusb_context *ctx, libusb_device ***list)
libusb_get_device_address (libusb_device *dev)
libusb_get_port_number (libusb_device *dev)
2 - デバイスはルートハブポートまたはハブポートに接続されていますか?
libusb_get_parent (libusb_device *dev)
3(これは、親の/ dev/SDB1のデバイスまたはSDA1を読み取ることにより行うことができる) - ハブへのその接続されている場合、そのポートの「クリア」PORT_POWER機能への制御の転送を行います。これでポートがオフになり、デバイスが切断されます。 PORT_POWER機能を「設定」してポートをオンにすると、デバイスが再び接続されます。スペックに従った切断イベントは発生しません。 (EHCIまたはXHCI)
int libusb_control_transfer ( libusb_device_handle * dev_handle,
uint8_t bmRequestType,
uint8_t bRequest,
uint16_t wValue,
uint16_t wIndex,
unsigned char * data,
uint16_t wLength,
unsigned int timeout
)
4 - デバイスがルートハブのポートに接続されている場合のlibusbがクリアルートハブポートの電力をサポートする場合、直接、次に確認してください。私はこれについては分かりません。これは、ホストコントローラのドライバスタックにも依存します。
これらのAPIの使用例については、上のリンクをご覧ください。
slwaysには、「eject」プログラムがあります。 –
だからです。しかし、私はまた、プログラムで再挿入する必要があるので、問題の半分しか解決できません。それを明確にするために質問を編集します。ありがとうございました。 – IndefatibableGoodForm
マニュアルページを調べましたか?システム上のUSBドライブをリストするコマンドがあれば、それは何ですか? (googleを使ってください)どうしてあなたはバス、ポート、デバイスを知っていますか?あなたが知らないときはどうやって見つけますか? (ヒント - グーグル "どのように私はすべてのUSBデバイスをリストしていますか?)おそらくあなたはもっと多くの研究をするかもしれません...これらの質問のための他のリソースがありますが、これらのどれもC++ではありません –