• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# IO.UnmanagedMemoryStream类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中System.IO.UnmanagedMemoryStream的典型用法代码示例。如果您正苦于以下问题:C# UnmanagedMemoryStream类的具体用法?C# UnmanagedMemoryStream怎么用?C# UnmanagedMemoryStream使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



UnmanagedMemoryStream类属于System.IO命名空间,在下文中一共展示了UnmanagedMemoryStream类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: ReadPrefix

        public override int ReadPrefix(string shortSha, out ObjectId id, out UnmanagedMemoryStream data, out ObjectType objectType)
        {
            id = null;
            data = null;
            objectType = default(ObjectType);

            ObjectId matchingKey;

            int ret = ExistsPrefix(shortSha, out matchingKey);

            if (ret != (int)ReturnCode.GIT_OK)
            {
                return ret;
            }

            ret = Read(matchingKey, out data, out objectType);

            if (ret != (int)ReturnCode.GIT_OK)
            {
                return ret;
            }

            id = matchingKey;

            return (int)ReturnCode.GIT_OK;
        }
开发者ID:withzemi1,项目名称:libgit2sharp.voron,代码行数:26,代码来源:VoronOdbBackend.cs


示例2: GetData_ReturnArrayOfStructs

		public void GetData_ReturnArrayOfStructs()
		{
			unsafe
			{
				short[] @in = new short[50];
				for (int i = 0; i < 50; i++)
				{
					@in[i] = (short)i;
				}

				int inSize = 100; // 50 x 2 bytes per short

				// Allocate a block of unmanaged memory and return an IntPtr object.	
				IntPtr memIntPtr = Marshal.AllocHGlobal(inSize);

				// Get a byte pointer from the IntPtr object. 
				byte* memBytePtr = (byte*)memIntPtr.ToPointer();

				var stream = new UnmanagedMemoryStream(memBytePtr, inSize);

				// Set the data
				stream.SetData(@in);

				// Get the data back out
				short[] @out = stream.GetData<short>();

				Assert.AreEqual(@in.Length, @out.Length);

				for (int i = 0; i < 50; i++)
				{
					Assert.AreEqual(@in[i], @out[i]);
				}
			}
		}
开发者ID:flair2005,项目名称:PhysX.Net,代码行数:34,代码来源:StreamExtensionsTest.cs


示例3: LoadFromMemory

        public unsafe static Image LoadFromMemory(IntPtr pSource, int size, bool makeACopy, GCHandle? handle)
        {
            using (var memoryStream = new UnmanagedMemoryStream((byte*)pSource, size))
            using (var bitmap = (Bitmap)BitmapFactory.DecodeStream(memoryStream))
            {
                var bitmapData = bitmap.LockPixels();
            
                var image = Image.New2D(bitmap.Width, bitmap.Height, 1, PixelFormat.B8G8R8A8_UNorm, 1, bitmap.RowBytes);
#if SILICONSTUDIO_PARADOX_GRAPHICS_API_OPENGLES
                // Directly load image as RGBA instead of BGRA, because OpenGL ES devices don't support it out of the box (extension).
                CopyMemoryBGRA(image.PixelBuffer[0].DataPointer, bitmapData, image.PixelBuffer[0].BufferStride);
#else
                Utilities.CopyMemory(image.PixelBuffer[0].DataPointer, bitmapData, image.PixelBuffer[0].BufferStride);
#endif
                bitmap.UnlockPixels();
            
                if (handle != null)
                    handle.Value.Free();
                else if (!makeACopy)
                    Utilities.FreeMemory(pSource);
            
                return image;
            }

        }
开发者ID:Powerino73,项目名称:paradox,代码行数:25,代码来源:StandardImageHelper.Android.cs


示例4: Write

		public unsafe void Write(Stream value)
		{
			if (value.Length > _availableLength)
				throw new ArgumentException("Value is too long.");

			var buffer = new byte[4096];
			var lengthToWrite = value.Length;
			while (lengthToWrite > 0)
			{
				using (var stream = new UnmanagedMemoryStream(_currentPointer.Value.Ptr, _currentPointer.Value.AvailableLength, _currentPointer.Value.AvailableLength, FileAccess.ReadWrite))
				{
					do
					{
						var read = value.Read(buffer, 0, Math.Min(buffer.Length, _currentPointer.Value.AvailableLength));
						stream.Write(buffer, 0, read);

						lengthToWrite -= read;
						_currentPointer.Value.AvailableLength -= read;
					}
					while (_currentPointer.Value.AvailableLength > 0 && lengthToWrite > 0);
					
					_currentPointer = _currentPointer.Next;
				}
			}
		}
开发者ID:WimVergouwe,项目名称:ravendb,代码行数:25,代码来源:MultiBytePointer.cs


示例5: MumbleLink

        // Constructor
        public MumbleLink()
        {
            unsafe
            {
                _memSize = Marshal.SizeOf(typeof(MumbleLinkedMemory));

                _mappedFile = NativeMethods.OpenFileMapping(FileMapAccess.FileMapRead, false, Name);

                if (_mappedFile == IntPtr.Zero)
                {
                    _mappedFile = NativeMethods.CreateFileMapping(IntPtr.Zero, IntPtr.Zero, FileMapProtection.PageReadWrite, 0,
                        _memSize, Name);
                    if (_mappedFile == IntPtr.Zero)
                    {
                        throw new Exception("Unable to create file Mapping");
                    }
                }

                _mapView = NativeMethods.MapViewOfFile(_mappedFile, FileMapAccess.FileMapRead, 0, 0, _memSize);

                if (_mapView == IntPtr.Zero)
                {
                    throw new Exception("Unable to map view of file");
                }

                _buffer = new byte[_memSize];

                _bufferHandle = GCHandle.Alloc(_buffer, GCHandleType.Pinned);

                byte* p = (byte*)_mapView.ToPointer();

                _unmanagedStream = new UnmanagedMemoryStream(p, _memSize, _memSize, FileAccess.Read);

            }
        }
开发者ID:sidewinder94,项目名称:MumbleLink-CSharp,代码行数:36,代码来源:MumbleLink.cs


示例6: ResourceReader

 internal ResourceReader(Stream stream, Dictionary<string, ResourceLocator> resCache)
 {
     this._resCache = resCache;
     this._store = new BinaryReader(stream, Encoding.UTF8);
     this._ums = stream as UnmanagedMemoryStream;
     this.ReadResources();
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:7,代码来源:ResourceReader.cs


示例7: UnpackBigEndian

        private void UnpackBigEndian(string path)
        {
            if (!Directory.Exists(path))
                Directory.CreateDirectory(path);

            int count = *(bint*)(_source.Address + 0x08);

            for (int i = 0; i < count; i++)
                stringOffsets.Add(*(bint*)(_source.Address + (i * 0x04) + 0x10));
            for (int i = 0; i < count; i++)
                dataOffsets.Add(*(bint*)(_source.Address + (stringOffsets.Count * 4) + (i * 4) + 0x10));
            for (int i = 0; i < count; i++)
                sizes.Add(*(bint*)(_source.Address + (stringOffsets.Count * 4) + (dataOffsets.Count * 4) + (i * 4) + 0x10));

            foreach (int off in stringOffsets)
                strings.Add(new String((sbyte*)_source.Address + off));

            for (int i = 0; i < count; i++)
            {
                byte[] _fileData = new byte[sizes[i]];

                using (UnmanagedMemoryStream stream = new UnmanagedMemoryStream((byte*)(_source.Address + dataOffsets[i]), sizes[i]))
                    stream.Read(_fileData, 0, (int)stream.Length);

                try
                {
                    File.WriteAllBytes(path+"/" + strings[i], _fileData);
                }

                catch (Exception x) { Console.WriteLine(x.Message); }
            }
        }
开发者ID:chrisall76,项目名称:Sm4sh-Tools,代码行数:32,代码来源:Unpacker.cs


示例8: Add

 //Adds the sound we want to play
 public void Add(int index, UnmanagedMemoryStream stream)
 {
     _soundStreams[index] = new SoundStream(stream);
     _audioBuffers[index] = new AudioBuffer();
     _audioBuffers[index].Stream = _soundStreams[index].ToDataStream();
     _audioBuffers[index].AudioBytes = (int) _soundStreams[index].Length;
     _audioBuffers[index].Flags = BufferFlags.EndOfStream;
     _sourceVoices[index] = new SourceVoice(_audio, _soundStreams[index].Format);
 }
开发者ID:quibsorg,项目名称:CsGoAimbot,代码行数:10,代码来源:SoundManager.cs


示例9: playSoundEffect

 public static void playSoundEffect(UnmanagedMemoryStream soundFile)
 {
     if (soundFlag == true)
     {
         Stream stream = soundFile;
         sp = new System.Media.SoundPlayer(stream);
         sp.Play();
     }
 }
开发者ID:atadjiki,项目名称:Underworld2171,代码行数:9,代码来源:Audio.cs


示例10: on_trace_data_collected

        private void on_trace_data_collected(cef_trace_client_t* self, byte* fragment, UIntPtr fragment_size)
        {
            CheckSelf(self);

            using (var stream = new UnmanagedMemoryStream(fragment, (long)fragment_size))
            {
                OnTraceDataCollected(stream);
            }
        }
开发者ID:lukeandshuo,项目名称:HydataBrowser,代码行数:9,代码来源:CefTraceClient.cs


示例11: Add

 public void Add(int index, UnmanagedMemoryStream sourceStream)
 {
     streams[index] = new SoundStream(sourceStream);
     buffers[index] = new AudioBuffer();
     buffers[index].Stream = streams[index].ToDataStream();
     buffers[index].AudioBytes = (int)streams[index].Length;
     buffers[index].Flags = BufferFlags.EndOfStream;
     voices[index] = new SourceVoice(audio, streams[index].Format);
 }
开发者ID:nkarpey,项目名称:Zat-s-External-CSGO-Multihack,代码行数:9,代码来源:SoundManager.cs


示例12: WriterWorkItem

 public WriterWorkItem(FileStream fileStream, UnmanagedMemoryStream memStream, MD5 md5)
 {
     _fileStream = fileStream;
     _memStream = memStream;
     _workingStream = (Stream)fileStream ?? memStream;
     Buffer = new MemoryStream(8192);
     BufferWriter = new BinaryWriter(Buffer);
     MD5 = md5;
 }
开发者ID:danieldeb,项目名称:EventStore,代码行数:9,代码来源:WriterWorkItem.cs


示例13: GetImageFileMachineType

 /// <summary>
 /// Gets the image file machine type.
 /// </summary>
 /// <param name="buffer">Memory buffer representing native library.</param>
 /// <returns>Image file machine type.</returns>
 public static unsafe ushort GetImageFileMachineType(byte[] buffer)
 {
     fixed(byte *ptr = buffer)
     {
         using(UnmanagedMemoryStream ums = new UnmanagedMemoryStream(ptr, buffer.Length))
         {
             return GetImageFileMachineType(ums);
         }
     }
 }
开发者ID:jhabjan,项目名称:Ghostscript.NET,代码行数:15,代码来源:NativeLibraryHelper.cs


示例14: write

        /// <summary>
        /// Write raw binary data.
        /// </summary>
        private int write(cef_write_handler_t* self, /*const*/ void* ptr, int size, int n)
        {
            ThrowIfObjectDisposed();

            long length = size * n;
            using (var m_stream = new UnmanagedMemoryStream((byte*)ptr, size * n, size * n, FileAccess.Read))
            {
                return this.Write(m_stream, size, n);
            }
        }
开发者ID:yasoonOfficial,项目名称:cefglue,代码行数:13,代码来源:CefWriteHandler.Impl.cs


示例15: read

        private UIntPtr read(cef_read_handler_t* self, void* ptr, UIntPtr size, UIntPtr n)
        {
            CheckSelf(self);

            var length = (long)size * (long)n;
            using (var stream = new UnmanagedMemoryStream((byte*)ptr, length, length, FileAccess.Write))
            {
                return (UIntPtr)Read(stream, length);
            }
        }
开发者ID:whztt07,项目名称:SDK,代码行数:10,代码来源:CefReadHandler.cs


示例16: read

        /// <summary>
        /// Read raw binary data.
        /// </summary>
        private int read(cef_read_handler_t* self, void* ptr, int size, int n)
        {
            ThrowIfObjectDisposed();

            long length = size * n;
            using (var m_stream = new UnmanagedMemoryStream((byte*)ptr, length, length, FileAccess.Write))
            {
                return this.Read(m_stream, size, n);
            }
        }
开发者ID:yasoonOfficial,项目名称:cefglue,代码行数:13,代码来源:CefReadHandler.Impl.cs


示例17: ToStream

		public void ToStream(byte* ptr, long count, Stream output)
		{
			using (var stream = new UnmanagedMemoryStream(ptr, count))
			{
				while (stream.Position < stream.Length)
				{
					var read = stream.Read(_buffer, 0, _buffer.Length);
					output.Write(_buffer, 0, read);
				}
			}
		}
开发者ID:WimVergouwe,项目名称:ravendb,代码行数:11,代码来源:DataCopier.cs


示例18: on_download_data

        private void on_download_data(cef_urlrequest_client_t* self, cef_urlrequest_t* request, void* data, UIntPtr data_length)
        {
            CheckSelf(self);

            var m_request = CefUrlRequest.FromNative(request);

            using (var stream = new UnmanagedMemoryStream((byte*)data, (long)data_length))
            {
                OnDownloadData(m_request, stream);
            }
        }
开发者ID:lukeandshuo,项目名称:HydataBrowser,代码行数:11,代码来源:CefUrlRequestClient.cs


示例19: received_data

        /// <summary>
        /// A portion of the file contents have been received. This method will
        /// be called multiple times until the download is complete. Return
        /// |true| to continue receiving data and |false| to cancel.
        /// </summary>
        private int received_data(cef_download_handler_t* self, void* data, int data_size)
        {
            ThrowIfObjectDisposed();

            var m_stream = new UnmanagedMemoryStream((byte*)data, data_size, data_size, FileAccess.Read);

            var handled = this.ReceivedData(m_stream);

            m_stream.Dispose();

            return handled ? 1 : 0;
        }
开发者ID:yasoonOfficial,项目名称:cefglue,代码行数:17,代码来源:CefDownloadHandler.Impl.cs


示例20: flush

        public void flush()
        {
            lock (this)
            {
                if (callCount == 0)
                    return;

                //Insert the EOF
                binaryWriter.Write((int)StreamInstructionTypes.STREAM_INSTRUCTION_EOF);

                IntPtr incomingPointer;

                unsafe
                {
                    InstanceManager.sync(instancePtr, bufferPointer, &incomingPointer);

                    UnmanagedMemoryStream strm = new UnmanagedMemoryStream((byte*)incomingPointer, maxCallLenght, maxCallLenght, FileAccess.Read);

                    BinaryReader reader = new BinaryReader(strm);

                    UInt32 instruction;
                    bool EOF = false;
                    while (!EOF)
                    {
                        try
                        {
                            instruction = reader.ReadUInt32();
                        }
                        catch(Exception eek)
                        {
                            Console.WriteLine("EOF is invalid!");
                            Console.WriteLine(eek.ToString());
                            break;
                        }

                        switch(instruction)
                        {
                            case (int)StreamInstructionTypes.STREAM_INSTRUCTION_CALL:
                                String cmd = StreamHelper.ReadString(reader);
                                handleEvent(cmd, reader);
                                break;
                            case (int)StreamInstructionTypes.STREAM_INSTRUCTION_EOF:
                                EOF = true;
                                break;
                        }
                    }

                    resetBuffers();
                }
            }
        }
开发者ID:LauriM,项目名称:PropellerEngine,代码行数:51,代码来源:NativeInstance.cs



注:本文中的System.IO.UnmanagedMemoryStream类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# IO.XmlReader类代码示例发布时间:2022-05-26
下一篇:
C# IO.TextWriter类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap