Win32 API 日本語リファレンス
ホームUI.Shell › ICDBurn

ICDBurn

COM
IID3d73a659-e5d0-4d42-afc0-5121ba425c8d継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

システムに CD 書き込み用のハードウェアが存在するかどうかの判定、CD 書き込みデバイスのドライブ文字の取得、および CD 書き込みセッションのプログラムからの開始を行うためのメソッドを公開します。

メソッド 3

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

vtbl 3 HRESULT GetRecorderDriveLetter(LPWSTR pszDrive, DWORD cch)

書き込みが有効に設定された CD ドライブのドライブ文字を取得します。

pszDriveLPWSTRoutドライブ文字を格納する文字列へのポインター。例: "F:"。
cchDWORDinpszDrive が指す文字列のサイズ(文字数)。通常この値は 4 です。4 より大きい値も指定できますが、余分な文字はこのメソッドによって無視されます。4 未満の値は E_INVALIDARG エラーを発生させます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドが文字を返すドライブは、このドライブでの CD 書き込みを有効にする オプションが選択されているドライブです。このオプションはドライブのプロパティシートにあります。システム上でこのオプションを選択できるドライブは 1 つだけです。

書き込み可能な CD ドライブが存在していても、このオプションが選択解除されている場合、このメソッドはエラーコードを返します。

vtbl 4 HRESULT Burn(HWND hwnd)

ステージング領域から書き込み可能な CD へデータをコピーするよう指示します。

hwndHWNDinUI の親ウィンドウのハンドル。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

ステージング領域 の既定の場所は %userprofile%\Local Settings\Application Data\Microsoft\CD Burning です。実際のパスは、CSIDL_CDBURN_AREA 値を使用して SHGetFolderPathSHGetSpecialFolderPathSHGetFolderLocationSHGetSpecialFolderLocation、または SHGetFolderPathAndSubDir を通じて取得できます。

vtbl 5 HRESULT HasRecordableDrive(BOOL* pfHasRecorder)

書き込み機能を備えた CD ドライブがないかシステムをスキャンし、見つかった場合は TRUE を返します。

pfHasRecorderBOOL*out適切なデバイスが見つかった場合は TRUE、それ以外の場合は FALSE を格納する Boolean 値へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

この検索は、ドライブのプロパティシートにある このドライブでの CD 書き込みを有効にする オプションの状態には依存しません。代わりに、この判定は IMAPI に基づいて行われます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

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

出力引数:
#define global IID_ICDBurn "{3D73A659-E5D0-4D42-AFC0-5121BA425C8D}"
#usecom global ICDBurn IID_ICDBurn "{FBEB8A05-BEEE-4442-804E-409D6C4515E9}"
#comfunc global ICDBurn_GetRecorderDriveLetter  3 var,int
#comfunc global ICDBurn_Burn                    4 sptr
#comfunc global ICDBurn_HasRecordableDrive      5 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。