/// キャプチャしたbyte[]をBitmapSource(Freezed)にして返す
        /// @param request スクリーンキャプチャ設定をまとめたリクエスト
        /// @return スクリーンキャプチャ結果が格納されたBitmapSource
        private BitmapSource CaptureByGetDIBits(ScreenCaptureRequest request)
        {
            if (request.ClippingWidth <= 0 || request.ClippingHeight <= 0) {
              // Debug.WriteLine("Invalid clipping size", "ScreenCaptureTimer.CaptureByGetDIBits");
              return null;
            }

            // GetDIBitsでbyte[]にデータを格納
            int dpiX, dpiY;
            var result = request.ExecuteByGetDIBits(out dpiX, out dpiY);
            if (result == null) return null;

            var bitmap = BitmapSource.Create(request.ClippingWidth, request.ClippingHeight,
                                 dpiX, dpiY, PixelFormats.Bgr32, null, result, request.Stride);

            result = null;
            /// @todo(me) あまり大きな画像をメモリにおいておきたくない。
            ///           とはいえ、TransformedBitmapはちょっと重過ぎる。
            ///           メモリよりもCPUリソースを残しておきたいのでこのままでいいかも。
            //bitmap = this.Resize(bitmap);

            // スレッド越しにアクセスされるためFreeze
            bitmap.Freeze();
            return bitmap;
        }