/// コピーコンストラクタ
 public InternalEntry(Entry interprocessEntry)
 {
     this.ProcessID = interprocessEntry.ProcessID;
     this.ProcessName = interprocessEntry.ProcessName;
     this.SampleWidth = interprocessEntry.SampleWidth;
     this.SampleHeight = interprocessEntry.SampleHeight;
     this.SamplePixelFormat = (ImagePixelFormats)interprocessEntry.SamplePixelFormat;
     this.FPS = interprocessEntry.FPS;
 }
Ejemplo n.º 2
0
        //===================================================================
        // for SCFF DirectShow Filter
        //===================================================================
        /// エントリを追加する
        /// @param entry 追加されるエントリ
        /// @return 追加が成功したか
        public bool AddEntry(Entry entry)
        {
            // 初期化されていなければ失敗
            if (!this.IsDirectoryInitialized()) {
              Trace.WriteLine("****Interprocess: AddEntry FAILED");
              return false;
            }

            Trace.WriteLine("****Interprocess: AddEntry");

            // ロック取得
            this.mutexDirectory.WaitOne();

            // コピー取得
            Directory directory = this.ReadDirectory();

            bool success = false;
            for (int i = 0; i < MaxEntry; i++) {
              /// @warning 重複する場合がある?
              if (directory.Entries[i].ProcessID == 0) {
            // PODなのでコピー可能(のはず)
            directory.Entries[i] = entry;
            success = true;
            break;
              }
            }

            // 変更を適用
            this.WriteDirectory(directory);

            // ロック解放
            this.mutexDirectory.ReleaseMutex();

            if (success) {
              Trace.WriteLine("****Interprocess: AddEntry SUCCESS");
            }

            return success;
        }