TNB Library
|
ドライブコマンダークラス [詳解]
#include <TnbDriveCommander.h>
クラス | |
struct | TSenseData |
SCSI センスデータ型 [詳解] | |
公開型 | |
enum | ESeekMode { TOP = FILE_BEGIN , CURRENT = FILE_CURRENT , END = FILE_END } |
シークのオフセット指定モード [詳解] | |
公開メンバ関数 | |
virtual void | AddRaw (size_t size, LPCVOID P) |
[追加] 追加. [詳解] | |
virtual bool | CanRead (void) const |
[確認] 読み込み可能か? [詳解] | |
virtual bool | CanWrite (void) const |
[確認] 書込み可能か? [詳解] | |
CDriveCommander (void) | |
コンストラクタ [詳解] | |
virtual void | Close (void) |
[操作] クローズ [詳解] | |
bool | DismountVolume () |
[設定] Dismount Volume. [詳解] | |
bool | GetGeometry (DISK_GEOMETRY &_g) const |
[取得] GEOMETRY 取得. [詳解] | |
LONGLONG | GetLeftoverSize (void) const |
[取得] 残りサイズ取得. [詳解] | |
virtual LPCTSTR | GetOpenName (void) const |
[取得] オープン名取得. [詳解] | |
virtual void | GetRaw (size_t size, LPVOID _P) const |
[取得] 取得. [詳解] | |
HANDLE | GetSafeHandle (void) const |
[取得] ハンドル取得. [詳解] | |
const TSenseData & | GetSense (void) const |
[取得] センスデータ取得 [詳解] | |
virtual LONGLONG | GetSize (void) const |
[取得] サイズ取得. [詳解] | |
bool | GetVendorId (CStr &_id, bool withRevision=false) const |
[取得] ベンダID 取得. [詳解] | |
bool | IsOpened (void) const |
[確認] オープン済み? [詳解] | |
bool | LockVolume (void) |
[設定] Lock Volume. [詳解] | |
bool | OpenDrive (DWORD driveNo) |
[操作] オープン. [詳解] | |
bool | OpenLetter (TCHAR driveLetter) |
[操作] オープン. [詳解] | |
template<typename T > | |
ISerializer & | operator<< (const T &t) |
[追加] 追加. [詳解] | |
template<typename T > | |
const IDeserializer & | operator>> (T &_t) const |
[取得] 取得. [詳解] | |
virtual size_t | Read (size_t size, LPVOID _P) const |
[取得] 読み込み [詳解] | |
void | ReadExactly (size_t size, LPVOID _P) const |
[取得] 読み込み. [詳解] | |
CByteVector | ReadExactly (size_t size=0) const |
[取得] 読み込み [詳解] | |
size_t | ReadInto (ICollectionT< BYTE > &_out, size_t size=0, size_t oneBlockSize=4096) const |
[取得] 読み込み. [詳解] | |
CByteVector | ReadInto (size_t size=0) const |
[取得] 読み込み [詳解] | |
virtual LONGLONG | Seek (LONGLONG llOffset, ESeekMode seek=TOP) const |
[操作] シーク. [詳解] | |
int | Send_Inquiry (ICollectionT< BYTE > &_d) |
[送信] INQUIRY CDB送信. [詳解] | |
int | Send_ModeSense (ICollectionT< BYTE > &_d, BYTE pc, bool isWithBd=false) |
[送信] MODESENSE CDB送信. [詳解] | |
int | Send_ReadCapacity (DWORD &_blockAddress, DWORD &_blockLength) |
[送信] Read Capacity CDB送信. [詳解] | |
int | Send_StartStop (BYTE b=2) |
[送信] STARTSTOP CDB送信. [詳解] | |
int | Send_TestUnit (void) |
[送信] TEST UNIT CDB送信. [詳解] | |
int | Send_Write10 (DWORD ba, const ISequenceCollectionT< BYTE > &d, DWORD div=512) |
[送信] Write(10) CDB送信. [詳解] | |
int | SendCommand (const ISequenceCollectionT< BYTE > &cdb) |
[送信] CDB送信. [詳解] | |
int | SendCommandWithReadPhase (ICollectionT< BYTE > &_d, const ISequenceCollectionT< BYTE > &cdb, int readSize) |
[送信] CDB送信(読込みフェーズ付). [詳解] | |
int | SendCommandWithWritePhase (const ISequenceCollectionT< BYTE > &cdb, const ISequenceCollectionT< BYTE > &data) |
[送信] CDB送信(書込みフェーズ付). [詳解] | |
virtual void | SetEnd (void) |
[設定] EOFを指定. [詳解] | |
bool | UnlockVolume (void) |
[設定] Unlock Volume. [詳解] | |
bool | Update () |
[設定] アップデート. [詳解] | |
virtual void | Write (size_t size, LPCVOID P) |
[保存] 書き込み [詳解] | |
void | WriteFrom (const IConstCollectionT< BYTE > &c) |
[保存] 書き込み. [詳解] | |
void | WriteFrom (const IReader &reader, size_t size=0, size_t oneBlockSize=4096) |
[保存] 書き込み. [詳解] | |
ドライブコマンダークラス
IWriter インターフェースを持っています。また、 SCSIコマンドにてデバイスを操作することができます。
TnbDriveCommander.h の 52 行目に定義があります。
|
inherited |
シークのオフセット指定モード
列挙値 | |
---|---|
TOP | 頭からのオフセット指定 |
CURRENT | 現在位置からのオフセット指定 |
END | 末からのオフセット指定 |
TnbReader.h の 38 行目に定義があります。
CDriveCommander | ( | void | ) |
コンストラクタ
TnbDriveCommander.h の 76 行目に定義があります。
|
virtualinherited |
[追加] 追加.
指定データを追加します。
size | 追加するデータサイズ(単位BYTE) |
P | 追加するデータ |
CTnbException | 失敗時は、任意のスローの可能性があります。 |
ISerializerを実装しています。
TnbWriter.h の 115 行目に定義があります。
|
virtual |
[確認] 読み込み可能か?
true | 可能 |
false | 不可能 |
IReaderを実装しています。
TnbDriveCommander.h の 430 行目に定義があります。
|
virtual |
[確認] 書込み可能か?
true | 可能 |
false | 不可能 |
IWriterを実装しています。
TnbDriveCommander.h の 442 行目に定義があります。
|
virtual |
bool DismountVolume | ( | ) |
bool GetGeometry | ( | DISK_GEOMETRY & | _g | ) | const |
[取得] GEOMETRY 取得.
true | 成功 |
false | 失敗 |
TnbDriveCommander.h の 482 行目に定義があります。
|
inherited |
|
virtual |
|
virtualinherited |
[取得] 取得.
指定データを取得します。
[in] | size | 取得するデータサイズ(単位BYTE) |
[out] | _P | 取得するデータ |
CTnbException | 失敗時は、任意のスローの可能性があります。 |
IDeserializerを実装しています。
TnbReader.h の 211 行目に定義があります。
HANDLE GetSafeHandle | ( | void | ) | const |
const TSenseData & GetSense | ( | void | ) | const |
[取得] センスデータ取得
TnbDriveCommander.h の 140 行目に定義があります。
|
virtual |
[取得] サイズ取得.
0以上 | サイズ |
マイナス | 取得失敗 |
IReaderを実装しています。
TnbDriveCommander.h の 462 行目に定義があります。
bool GetVendorId | ( | CStr & | _id, |
bool | withRevision = false |
||
) | const |
[取得] ベンダID 取得.
[out] | _id | 取得したベンダIDが格納されます。 |
[in] | withRevision | true なら版数も含むIDを返します。 |
true | 成功 |
false | 失敗 |
TnbDriveCommander.h の 389 行目に定義があります。
bool IsOpened | ( | void | ) | const |
bool LockVolume | ( | void | ) |
bool OpenDrive | ( | DWORD | driveNo | ) |
[操作] オープン.
driveNo | ドライブ番号 |
true | 成功。 |
false | 失敗。 |
TnbDriveCommander.h の 104 行目に定義があります。
bool OpenLetter | ( | TCHAR | driveLetter | ) |
[操作] オープン.
driveLetter | ドライブレター。 |
true | 成功。 |
false | 失敗。 |
TnbDriveCommander.h の 123 行目に定義があります。
|
inherited |
[追加] 追加.
指定データをシリアライズして追加します。
t | データ |
CNotSupportException | シリアライズをサポートしていない型が指定されると、スローされます。 |
CTnbException | 失敗時は、任意のスローの可能性があります。 |
TnbSerializer.h の 161 行目に定義があります。
|
inherited |
[取得] 取得.
指定データをデシリアライズして取得します。
[out] | _t | データ |
CNotSupportException | デシリアライズをサポートしていない型が指定されると、スローされます。 |
CTnbException | 失敗時は、任意のスローの可能性があります。 |
TnbSerializer.h の 277 行目に定義があります。
|
virtual |
[取得] 読み込み
[in] | size | 読み込みサイズ。 |
[out] | _P | 読み込みアドレス。 size 分書き込める領域である必要が有ります。 |
CReadFailureException | 読み込みに失敗すると、スローされます。 |
IReaderを実装しています。
TnbDriveCommander.h の 531 行目に定義があります。
|
inherited |
[取得] 読み込み.
[in] | size | 読み込みサイズ。 |
[out] | _P | 読み込みアドレス。 size 分書き込める領域である必要が有ります。 |
CReadFailureException | 読み込みに失敗すると、スローされます。 |
CShortOfDataException | 指定サイズ読込めないと、スローされます。 |
TnbReader.h の 114 行目に定義があります。
|
inherited |
[取得] 読み込み
size | 読み込みサイズ。0ならファイル最後まで読み込む。 |
CReadFailureException | 読み込みに失敗すると、スローされます。 |
CShortOfDataException | 指定サイズ読込めないと、スローされます。 |
TnbReader.h の 134 行目に定義があります。
|
inherited |
[取得] 読み込み.
[out] | _out | 読込先。クリアせず、後ろに追加します。 |
size | 読み込みサイズ。省略か0ならファイル最後まで読み込む。 | |
oneBlockSize | 一度に読み込むサイズ。省略なら4K。 |
CReadFailureException | 読み込みに失敗すると、スローされます。 |
TnbReader.h の 178 行目に定義があります。
|
inherited |
[取得] 読み込み
size | 読み込みサイズ。0ならファイル最後まで読み込む。 |
CReadFailureException | 読み込みに失敗すると、スローされます。 |
TnbReader.h の 150 行目に定義があります。
[操作] シーク.
アクセスポインタを移動します。
llOffset | アクセスポインタの移動数。 |
seek | 移動開始アクセスポインタ位置。省略すると TOP になります。 |
0以上 | シーク成功。数値は、現在のファイルポインタ |
マイナス | シーク失敗 |
IReaderを実装しています。
TnbDriveCommander.h の 503 行目に定義があります。
int Send_Inquiry | ( | ICollectionT< BYTE > & | _d | ) |
[送信] INQUIRY CDB送信.
[out] | _d | 読み込みデータ。 |
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 291 行目に定義があります。
int Send_ModeSense | ( | ICollectionT< BYTE > & | _d, |
BYTE | pc, | ||
bool | isWithBd = false |
||
) |
[送信] MODESENSE CDB送信.
[out] | _d | 読み込みデータ。 |
[in] | pc | ページコード、および、ページコントロール値。 |
[in] | isWithBd | true なら Block Descriptor も読み込みます。 省略か false なら 読み込みません。 |
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 271 行目に定義があります。
int Send_ReadCapacity | ( | DWORD & | _blockAddress, |
DWORD & | _blockLength | ||
) |
[送信] Read Capacity CDB送信.
[out] | _blockAddress | 成功時、最後のブロックアドレスが格納されます。 |
[out] | _blockLength | 成功時、ブロック長が格納されます。 |
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 336 行目に定義があります。
int Send_StartStop | ( | BYTE | b = 2 | ) |
[送信] STARTSTOP CDB送信.
b | フラグ。 2 なら Eject、0 なら Load します。 |
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 322 行目に定義があります。
int Send_TestUnit | ( | void | ) |
[送信] TEST UNIT CDB送信.
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 309 行目に定義があります。
int Send_Write10 | ( | DWORD | ba, |
const ISequenceCollectionT< BYTE > & | d, | ||
DWORD | div = 512 |
||
) |
[送信] Write(10) CDB送信.
ba | ブロックアドレス |
d | データ。長さは div の倍数である必要があります。 |
div | ブロック長。通常 512 です。 |
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 359 行目に定義があります。
int SendCommand | ( | const ISequenceCollectionT< BYTE > & | cdb | ) |
[送信] CDB送信.
cdb | CDB。 LUN エリアは無視されます。 |
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 196 行目に定義があります。
int SendCommandWithReadPhase | ( | ICollectionT< BYTE > & | _d, |
const ISequenceCollectionT< BYTE > & | cdb, | ||
int | readSize | ||
) |
[送信] CDB送信(読込みフェーズ付).
[out] | _d | 読み込みデータ。 |
[in] | cdb | CDB。 LUN エリアは無視されます。 |
[in] | readSize | 読み込みデータ長(CDBに正しく読み込みデータサイズを指定しておくこと)。 |
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 243 行目に定義があります。
int SendCommandWithWritePhase | ( | const ISequenceCollectionT< BYTE > & | cdb, |
const ISequenceCollectionT< BYTE > & | data | ||
) |
[送信] CDB送信(書込みフェーズ付).
cdb | CDB。 LUN エリアは無視されます。 |
data | 書込みデータ(CDBに正しくデータサイズ分を指定しておくこと)。 |
0 | 成功 |
1以上 | SCSIステータス。 2ならCheck Condition( GetSense() でセンス情報が得られます)。8ならBusy。 |
-1 | 失敗。 ::GetLastError() でエラー内容を確認できます。 |
TnbDriveCommander.h の 216 行目に定義があります。
|
virtual |
[設定] EOFを指定.
必ず失敗します。。
CNotSupportException | 失敗 |
IWriterを実装しています。
TnbDriveCommander.h の 569 行目に定義があります。
bool UnlockVolume | ( | void | ) |
bool Update | ( | ) |
|
virtual |
[保存] 書き込み
size | 書き込みサイズ。 |
P | 書き込みデータ。 |
CWriteFailureException | 書込みに失敗すると、スローされます。 |
IWriterを実装しています。
TnbDriveCommander.h の 549 行目に定義があります。
|
inherited |
[保存] 書き込み.
c | 書き込みデータ。 |
CWriteFailureException | 書込みに失敗すると、スローされます。 |
TnbWriter.h の 65 行目に定義があります。
|
inherited |
[保存] 書き込み.
reader | 書き込みデータ 。 |
size | 読み込みサイズ。省略か0ならファイル最後まで読み込む。 |
oneBlockSize | 一度に読み込むサイズ。省略なら4K。 |
CReadFailureException | 読み込みに失敗すると、スローされます。 |
CWriteFailureException | 書込みに失敗すると、スローされます。 |
TnbWriter.h の 85 行目に定義があります。