Jak przekazać dane MemoryStream do niezarządzanej biblioteki DLL C ++ przy użyciu P / Invoke

Potrzebuję twojej pomocy w następującym scenariuszu:

Czytam dane ze sprzętu do MemoryStream (C #) i muszę przekazać te dane do pamięci dll zaimplementowanej w niezarządzanym C ++ (za pomocą wskaźnika ??). Odczytane dane (do strumienia) są bardzo duże (megabajty). Rozumiem, że mogę P / Invoke to dll, ale nie jestem pewien, jak przekazać wskaźnik / odniesienie danych strumienia do C ++ API?

Muszę przyznać, że jestem zdezorientowany, ponieważ jestem nowy w C # - czy muszę używać niebezpiecznego / naprawionego, ponieważ dane są duże lub nie są one istotne, ponieważ obiekt MemoryStream jest zarządzany przez GC? Pomocny byłby przykładowy kod / szczegółowy opis. Dzięki

Podpis niezarządzanego interfejsu API:

BOOL doSomething (void * rawData, int dataLength)

questionAnswers(1)

yourAnswerToTheQuestion