Win32 API 日本語リファレンス
ホームStorage.Imapi › IDiscRecorder

IDiscRecorder

COM
IID85ac9776-ca88-4cf2-894e-09598c078a41継承元IUnknown自前メソッド開始 vtbl3

メソッド 15

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Init(BYTE* pbyUniqueID, DWORD nulIDSize, DWORD nulDriveNumber)
pbyUniqueIDBYTE*inレコーダーを一意に識別する ID を格納したバイトバッファへのポインタである。
nulIDSizeDWORDinID バッファのサイズをバイト単位で指定する。
nulDriveNumberDWORDinレコーダーに対応するドライブ番号を指定する。
vtbl 4 HRESULT GetRecorderGUID(BYTE* pbyUniqueID, DWORD ulBufferSize, DWORD* pulReturnSizeRequired)
pbyUniqueIDBYTE*inoutoptionalレコーダーの一意な ID を受け取るバイトバッファへのポインタである。
ulBufferSizeDWORDin受け取り用バッファのサイズをバイト単位で指定する。
pulReturnSizeRequiredDWORD*out実際に必要なバッファのバイト数を受け取るポインタである。
vtbl 5 HRESULT GetRecorderType(RECORDER_TYPES* fTypeCode)
fTypeCodeRECORDER_TYPES*outレコーダーの種別コードを受け取るポインタである。
vtbl 6 HRESULT GetDisplayNames(LPWSTR* pbstrVendorID, LPWSTR* pbstrProductID, LPWSTR* pbstrRevision)
pbstrVendorIDLPWSTR*inoutoptionalベンダー ID 文字列を受け取るポインタである。
pbstrProductIDLPWSTR*inoutoptional製品 ID 文字列を受け取るポインタである。
pbstrRevisionLPWSTR*inoutoptionalリビジョン文字列を受け取るポインタである。
vtbl 7 HRESULT GetBasePnPID(LPWSTR* pbstrBasePnPID)
pbstrBasePnPIDLPWSTR*outレコーダーの基底プラグアンドプレイ ID 文字列を受け取るポインタである。
vtbl 8 HRESULT GetPath(LPWSTR* pbstrPath)
pbstrPathLPWSTR*outレコーダーのデバイスパス文字列を受け取るポインタである。
vtbl 9 HRESULT GetRecorderProperties(IPropertyStorage** ppPropStg)
ppPropStgIPropertyStorage**outレコーダーのプロパティを格納した IPropertyStorage を受け取るポインタである。
vtbl 10 HRESULT SetRecorderProperties(IPropertyStorage* pPropStg)
pPropStgIPropertyStorage*inoptionalレコーダーへ設定するプロパティを格納した IPropertyStorage を指定する。
vtbl 11 HRESULT GetRecorderState(DISC_RECORDER_STATE_FLAGS* pulDevStateFlags)
pulDevStateFlagsDISC_RECORDER_STATE_FLAGS*outレコーダーの現在の状態を表すフラグを受け取るポインタである。
vtbl 12 HRESULT OpenExclusive()
vtbl 13 HRESULT QueryMediaType(MEDIA_TYPES* fMediaType, MEDIA_FLAGS* fMediaFlags)
fMediaTypeMEDIA_TYPES*out装着メディアの種別を受け取るポインタである。
fMediaFlagsMEDIA_FLAGS*outメディアに関する追加フラグを受け取るポインタである。
vtbl 14 HRESULT QueryMediaInfo(BYTE* pbSessions, BYTE* pbLastTrack, DWORD* ulStartAddress, DWORD* ulNextWritable, DWORD* ulFreeBlocks)
pbSessionsBYTE*outメディア上のセッション数を受け取るポインタである。
pbLastTrackBYTE*out最後のトラック番号を受け取るポインタである。
ulStartAddressDWORD*out書き込み開始アドレスを受け取るポインタである。
ulNextWritableDWORD*out次に書き込み可能なアドレスを受け取るポインタである。
ulFreeBlocksDWORD*outメディア上の空きブロック数を受け取るポインタである。
vtbl 15 HRESULT Eject()
vtbl 16 HRESULT Erase(BYTE bFullErase)
bFullEraseBYTEin完全消去を行う場合は 0 以外を、簡易消去を行う場合は 0 を指定する。
vtbl 17 HRESULT Close()

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDiscRecorder "{85AC9776-CA88-4CF2-894E-09598C078A41}"
#usecom global IDiscRecorder IID_IDiscRecorder "{}"
#comfunc global IDiscRecorder_Init                   3 var,int,int
#comfunc global IDiscRecorder_GetRecorderGUID        4 var,int,var
#comfunc global IDiscRecorder_GetRecorderType        5 var
#comfunc global IDiscRecorder_GetDisplayNames        6 var,var,var
#comfunc global IDiscRecorder_GetBasePnPID           7 var
#comfunc global IDiscRecorder_GetPath                8 var
#comfunc global IDiscRecorder_GetRecorderProperties  9 sptr
#comfunc global IDiscRecorder_SetRecorderProperties  10 sptr
#comfunc global IDiscRecorder_GetRecorderState       11 var
#comfunc global IDiscRecorder_OpenExclusive          12
#comfunc global IDiscRecorder_QueryMediaType         13 var,var
#comfunc global IDiscRecorder_QueryMediaInfo         14 var,var,var,var,var
#comfunc global IDiscRecorder_Eject                  15
#comfunc global IDiscRecorder_Erase                  16 int
#comfunc global IDiscRecorder_Close                  17
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。