IQueryCancelAutoPlay
COM公式ドキュメント
AutoPlay または AutoRun をプログラムで上書きするメソッドを公開します。これにより、メディアが挿入されたときに起動されるコンテンツの場所と種類をカスタマイズできます。
解説(Remarks)
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ユーザーによって挿入されたメディアを再生するかどうか、また再生する場合はどのような制限を用いるかを決定します。
| pszPath | LPWSTR | in | D:\ の形式のドライブ文字。 |
| dwContentType | DWORD | in | 次のフラグで指定されるコンテンツの種類。 ARCONTENT_AUTORUNINF (0x00000002)Autorun.inf ファイルを使用します。これは従来の AutoRun の動作です。 ARCONTENT_AUDIOCD (0x00000004)オーディオ CD を AutoRun します。 ARCONTENT_DVDMOVIE (0x00000008)DVD を AutoRun します。 ARCONTENT_BLANKCD (0x00000010)空の CD-R および CD-RW を AutoPlay します。 ARCONTENT_BLANKDVD (0x00000020)空の DVD-R および DVD-RAM を AutoPlay します。 ARCONTENT_UNKNOWNCONTENT (0x00000040)メディアがフォーマット済みで、そのコンテンツが他のいずれのフラグでも扱われる種類に該当しない場合に AutoRun します。 ARCONTENT_AUTOPLAYPIX (0x00000080)コンテンツが .bmp や .jpg ファイルなど、画像として定義されるファイル種類で構成されている場合に AutoPlay します。 ARCONTENT_AUTOPLAYMUSIC (0x00000100)コンテンツが MP3 ファイルなど、音楽として定義されるファイル種類で構成されている場合に AutoPlay します。 ARCONTENT_AUTOPLAYVIDEO (0x00000200)コンテンツがビデオファイルとして定義されるファイル種類で構成されている場合に AutoPlay します。 ARCONTENT_VCD (0x00000400)Windows Vista で導入。ビデオ CD (VCD) を AutoPlay します。 ARCONTENT_SVCD (0x00000800)Windows Vista で導入。スーパービデオ CD (SVCD) メディアを AutoPlay します。 ARCONTENT_DVDAUDIO (0x00001000)Windows Vista で導入。DVD-Audio メディアを AutoPlay します。 ARCONTENT_BLANKBD (0x00002000)Blu-ray Disc™ 形式の空の記録可能な高精細 DVD メディア (BD-R または BD-RW) を AutoPlay します。注意: Windows 7 より前では、この値は HD DVD 形式の記録不可能なメディアを指定するものとして定義されていました。 ARCONTENT_BLURAY (0x00004000)Windows Vista で導入。Blu-ray Disc™ 形式の高精細 DVD メディアを AutoPlay します。 ARCONTENT_CAMERASTORAGE (0x00008000)Windows 8 で導入。 ARCONTENT_CUSTOMEVENT (0x00010000)Windows 8 で導入。 ARCONTENT_NONE (0x00000000)Windows Vista で導入。空だがフォーマット済みのメディアを AutoPlay します。 ARCONTENT_MASK (0x0001FFFE)Windows Vista で導入。メディア種類に対する有効な ARCONTENT フラグ値を示すマスク。このマスクには ARCONTENT_PHASE 値は含まれません。 ARCONTENT_PHASE_UNKNOWN (0x00000000)Windows Vista で導入。AutoPlay がメディアを検索中です。検索の段階 (presniff、sniffing、または final) は不明です。 ARCONTENT_PHASE_PRESNIFF (0x10000000)Windows Vista で導入。オーディオ CD や DVD ムービーなど、メディアの種類によって、メディアを検索する前にその内容が判明しています。 ARCONTENT_PHASE_SNIFFING (0x20000000)Windows Vista で導入。AutoPlay が現在メディアを検索中です。この段階で報告される結果は、さらに多くのコンテンツ種類が見つかる可能性があるため、部分的な一覧と見なすべきです。 ARCONTENT_PHASE_FINAL (0x40000000)Windows Vista で導入。AutoPlay がメディアの検索を完了しました。報告される結果は最終的なものです。 ARCONTENT_PHASE_MASK (0x70000000)Windows Vista で導入。有効な ARCONTENT_PHASE 値を示すマスク。 |
| pszLabel | LPWSTR | in | メディアのラベル。 |
| dwSerialNumber | DWORD | in | メディアのシリアル番号。 |
戻り値
解説(Remarks)
アプリケーションは、IQueryCancelAutoPlay インターフェースのインスタンスを実行中のオブジェクトテーブル (ROT) に登録します。ユーザーが新しいメディアを挿入したとき、シェルは AutoRun または AutoPlay を開始する前に、IQueryCancelAutoPlay を実装しているコンポーネントを ROT で確認します。見つかった場合、シェルはその実装の IQueryCancelAutoPlay::AllowAutoPlay メソッドを呼び出して、処理を続行すべきかどうか、またどのような制限を用いるかを判断します。
メディアが挿入されると、シェルは IQueryCancelAutoPlay を実装しているコンポーネントを ROT で検索します。見つかった場合、そのコンポーネントのモニカーのクラス識別子 (CLSID) が抽出されます。ROT 登録の存在は、そのコンポーネントが AutoRun または AutoPlay をキャンセルしたい可能性があることをシェルに知らせます。確認のため、シェルは同じ CLSID のレジストリキーを次の場所でも見つける必要があります。
HKEY_LOCAL_MACHINE
SOFTWARE
Microsoft
Windows
Current Version
Explorer
AutoplayHandlers
CancelAutoplay
CLSID
コンポーネントの CLSIDこの値は、通常はインストール時にアプリケーションまたはハードウェアによって追加されます。データ値は割り当てられません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IQueryCancelAutoPlay "{DDEFE873-6997-4E68-BE26-39B633ADBE12}"
#usecom global IQueryCancelAutoPlay IID_IQueryCancelAutoPlay "{}"
#comfunc global IQueryCancelAutoPlay_AllowAutoPlay 3 wstr,int,wstr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。