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

IQueryCancelAutoPlay

COM
IIDddefe873-6997-4e68-be26-39b633adbe12継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

AutoPlay または AutoRun をプログラムで上書きするメソッドを公開します。これにより、メディアが挿入されたときに起動されるコンテンツの場所と種類をカスタマイズできます。

解説(Remarks)

注意 IQueryCancelAutoPlay は、現在実行中のユーザーが起動したアプリケーションでの使用のみを目的としています。通常の AutoPlay/AutoRun 機能の呼び出しを妨げないよう、不可視のアプリケーションやバックグラウンドのサービスアプリケーションで処理すべきではありません。メディアやデバイスがシステムに挿入されたときの動作をユーザーが選択できることは、このプラットフォームの重要な機能です。この機能は、ユーザー体験を向上させパーソナライズするために特別に設計されたものであり、バックグラウンドサービスによって妨げられるべきではありません。
IQueryCancelAutoPlay の正当な使用例を、次のシナリオで説明します。AutoPlay を通じて、ビデオカメラのイベントを処理するアプリケーション A を以前に指定していたとします。しかし、ビデオ編集にはアプリケーション B を使いたいと考えています。アプリケーション B を開き、以前に撮影したビデオの編集を開始し、その後、編集中のビデオに新しいコンテンツを追加しようと決めます。アプリケーション B のインポート機能は、新しいコンテンツにアクセスできるようにビデオカメラをオンにするよう促します。通常、このビデオデバイスの起動により、デバイスに関連付けられたアプリケーション A が起動されます。しかし幸いなことに、IQueryCancelAutoPlay を使用することで、アプリケーション B はビデオコンテンツの編集中にビデオカメライベントの AutoPlay 処理をキャンセルしています。この場合、アプリケーション B による AutoPlay のキャンセルによって、より良いユーザー体験が実現されています。

メソッド 1

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

vtbl 3 HRESULT AllowAutoPlay(LPWSTR pszPath, DWORD dwContentType, LPWSTR pszLabel, DWORD dwSerialNumber)

ユーザーによって挿入されたメディアを再生するかどうか、また再生する場合はどのような制限を用いるかを決定します。

pszPathLPWSTRinD:\ の形式のドライブ文字。
dwContentTypeDWORDin

次のフラグで指定されるコンテンツの種類。

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 値を示すマスク。

pszLabelLPWSTRinメディアのラベル。
dwSerialNumberDWORDinメディアのシリアル番号。

戻り値

型: HRESULT

AutoRun を許可する場合は S_OK を、AutoRun をキャンセルする場合は S_FALSE を返します。

解説(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
この値は、通常はインストール時にアプリケーションまたはハードウェアによって追加されます。データ値は割り当てられません。
注意 このキーの下に値として入力される CLSID は、波かっこで囲むべきではありません。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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が無いため "{}"(他メソッド/アクティベーションで取得)。