64 ビット Windows 用の Visual C++ で仮想カメラ アプリケーションを実装しようとしています。DirectShow フィルターを使用してビデオ キャプチャ デバイスをエミュレートする tmhare.mvps.org/downloads/vcam.zip のコードから始めました。32 ビットの Windows では問題なく動作しますが、64 ビットの Windows では動作しません。Visual C++ プロジェクトを次のように変更しました。
1) プラットフォームを x64 に変更し、dll を再コンパイルして、64 ビット バージョンの strmbase.lib にリンクします。 2) プリプロセッサ定義を WIN32,_WIN32 から WIN64,_WIN64 に変更。 3) ライブラリを再コンパイルし、C:\Windows\system32\regsvr32.exe を使用して dll を登録しました。
dll は正常に登録され、regedit は仮想カメラの 3 つのキーを表示します
HKEY_CLASSES_ROOT\CLSID\{860BB310-5D01-11D0-BD3B-00A0C911CE86}\Instance\{8E14549A-DB61-4309-AFA1-3578E927E933}, HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{860BB310-5D01-11D0-BD3B-00A0C911CE86}\Instance\{8E14549A-DB61-4309-AFA1-3578E927E933}, HKEY_CLASSES_ROOT\CLSID\{8E14549A-DB61-4309-AFA1-3578E927E933}\InprocServer32
ただし、Skype も Windows Live Messenger も、64 ビット Windows ではカメラを認識しません。
私は何を間違っていますか?Win64 には 64 ビット アプリケーション用の HKEY_LOCAL_MACHINE\Software\Classes\CLSID{guid} と 32 ビット アプリケーション用の HKEY_LOCAL_MACHINE\Software\Wow6432Node があることは理解していますが、コードを 64 ビット アプリケーションとしてコンパイルしているため、そのキーがレジストリの右側の部分に配置されていること。サンプルとして使用できる 64 ビット ウィンドウ用の DirectShow 仮想カメラ フィルターの実装はありますか (32 ビット ウィンドウ用のものしか見つかりませんでした)。