「平成」を感じるもの

Qt(Qt Creatorを使用)上でデバイスにアクセスして、
セクター単位でデータを読み込んだり、書き込みを行いたいのですが、
デバイスのオープンで失敗してしまいます。

下記オープン処理です。

char devName[256];
memset(devName, 0, sizeof(devName));

if (driveNo >= 0)
{
sprintf(devName, "\\\\.\\PHYSICALDRIVE%d", driveNo);

QFile file(tr(devName));

if ( file.open(QIODevice::ReadWrite) )
{
ui->lblResult->setText("success");

    /***処理***/

file.close();
}
else
{
ui->lblResult->setText("error");//オープン失敗
}
}

ちなみに「QIODevice::ReadOnly」で読込専用ですと成功します。
デバイスからのデータ取得を行えます。

何か情報をお持ちの方教えて頂けませんでしょうか。
よろしくお願いいたします。

A 回答 (1件)

file.errorString()を出力してみては。

なんか分かるかも。

Windowsなら、管理者モードに昇格して実行してみるとか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

教えて頂いたfile.errorString()でメッセージを出力してみたところ、
「パラメータが間違っています」
と出力されました。
パラメータは「\\\\.\\PHYSICALDRIVE ディスク番号」だけなんですが…。
「QIODevice::ReadOnly」に設定すると成功します。
「QIODevice::ReadWrite」時はPHYSICALDRIVEは設定できないのでしょうか。
それともなにか別のパラメータも一緒に追記しないといけないのでしょうか。

管理者モードですが、
デプロイしてexeファイルを直接管理者実行で行ってみましたが、
同じエラーになりました。

他何かお気づきになられたことがありましたら
お教え頂けませんでしょうか。

以上すみませんが
よろしくお願いいたします。

お礼日時:2021/08/06 09:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報