private void DoIndex(IndexerType it, bool b)
        {
            IWMIndexer pIndex;

            WMUtils.WMCreateIndexer(out pIndex);
            IWMIndexer2 pIndex2 = pIndex as IWMIndexer2;

            pIndex2.Configure(0, it, null, null);

            m_IndexComplete = false;
            m_MaxIndex      = 0;
            m_IndexError    = 0;
            pIndex2.StartIndexing(sFileName, this, IntPtr.Zero);
            while (!m_IndexComplete)
            {
                if (b)
                {
                    pIndex.Cancel();
                }
                else
                {
                    System.Threading.Thread.Sleep(0);
                }
            }
            if (m_IndexError != 0)
            {
                throw new COMException("Indexing error", m_IndexError);
            }
        }
        private void Config()
        {
            IWMIndexer pIndex;

            WMUtils.WMCreateIndexer(out pIndex);
            IWMIndexer2 pIndex2 = pIndex as IWMIndexer2;

            pIndex2.Configure(0, IndexerType.FrameNumbers, null, null);

            pIndex2.StartIndexing(sFileName, this, IntPtr.Zero);
            while (!m_IndexComplete)
            {
                System.Threading.Thread.Sleep(0);
            }

            WMUtils.WMCreateSyncReader(IntPtr.Zero, Rights.Playback, out m_read);
        }
        private void TestMisc()
        {
            IWMIndexer2 wi2 = m_read as IWMIndexer2;

            m_read.SetRange(100, 200);
            m_read.SetRangeByFrame(1, 1, 0);

            int   on;
            short sn;

            m_read.GetOutputNumberForStream(2, out on);
            m_read.GetStreamNumberForOutput(on, out sn);

            Debug.Assert(sn == 2);

            m_read.OpenStream(this);
            Debug.WriteLine("here");
        }