/// コピーコンストラクタ 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; }
//=================================================================== // 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; }