2014-09-25 3 views
0

비 관리 코드에서 제공 한 IntPtr (C#)이 있습니다. 이 4096 요소를 바이트 배열에 대한 참조를 알고 있습니다.IntPtr to Byte [] Array C#

이제이 데이터를 IntPtr에서 Bytes []로 변환하지 않고 Marshal.Copy로 변환하려고합니다. 커널 공간의 메모리가 이미 할당 되었기 때문입니다. 난 단지 바이트 배열로 그 데이터를 interprete 싶어요.

나는 함수 "InteropUtils.ConvertIntPtrToByteArray - 메도"하지만 스마트 기기에서만 사용할 수 있다는 것을 알고 등

어쩌면 누군가 더 나은 생각을했다? 를 IntPtr은 단독 메모리 영역을 나타 내기 때문이다 바이트 [] 배열은 관리 메모리 영역을 나타내는 동안 요청이 어떤

+0

아마도 도움이 될 것입니다. http://stackoverflow.com/questions/713324/how-to-cast-intptr-to-byte/1304570#1304570 –

+0

@DavidG 내 질문을 읽지 않았다. 나는 Marshal.Copy() 메서드를 사용하고 싶지 않다. – REMberry

답변

0

불가능하다. 관리되지 않는 영역을 관리되는 영역으로 처리 할 수 ​​없습니다.

데이터를 Marshal.Copy를 통해 관리되는 영역에 복사하거나 안전하지 않은 코드를 사용하여 직접 조작해야합니다.