more curiosity than necessity (i like understanding things to the bone )
Why does SlimDX use a DataStream to work with DirectX Buffers? I have a feeling it has something to do with unmanaged array's being different than managed arrays but why isn't it abstracted away into the framework, if it's only that?
DataStream implements the Stream abstraction on top of unmanaged memory pointers. That makes it much easier to read and write data from them, otherwise you would have to use fairly low level constructs and possibly unmanaged code to interact with buffers of all sorts. It also allows us to safely round-trip native memory buffers to user code and back into SlimDX, which is used to accelerate some operations.