2013-04-17 15 views
5

Mam ogólne pytanie dotyczące C# & Windows API:Stwórz wirtualną ścieżkę pliku ze strumienia

Moim zadaniem jest ładowanie pliku z systemem zarządzania dokumentami (DMS) i utworzyć tablicę bajtów z tego pliku. Od dewelopera DMS Mam DLL, który dostarcza metody takie jak to:

loadFile(int DocId, string PathToSaveFile); 

Niestety dany dll nie daje mi sposób dostarczania żądany plik jako tablicy bajtów lub dowolnego rodzaju strumienia. Teraz moje pytanie, czy jest możliwe, aby w C# utworzyć jakąś ścieżkę wirtualną, która w rzeczywistości nie istnieje w pamięci wtórnej. Zamiast tego wszystkie bity i bajty zapisane na tej ścieżce są przesyłane do mnie w strumieniu? Celem mojej intencji jest zwiększenie wydajności, ponieważ nie muszę zapisywać danych na dysku twardym.

Już dużo przeszukałem, ale tak naprawdę nie znam słów kluczowych, które muszę wyszukać. Być może ktoś może dać mi wskazówkę lub po prostu powiedzieć, że nie jest to w ogóle możliwe.

+1

a serwer WEBDAV? Na przykład http://www.webdavsystem.com/ – I4V

+0

Uwaga boczna: "Zwiększ wydajność, ponieważ nie muszę zapisywać danych na dysku twardym." - wymaga bardzo dobrego planowania użycia pamięci/dysku. W przeciwnym razie uzyskasz więcej danych, które w rozsądny sposób zmieszczą się w pamięci fizycznej twojego komputera, a zamiast poprawy wydajności otrzymasz wolniejszy i znacznie bardziej skomplikowany kod. Interesujące do napisania, ale nie konieczne, szybciej. –

Odpowiedz

2

To będzie trochę zależało od tego, w jaki sposób biblioteka otworzy plik i odczyta plik. Jeśli używasz CreateFile, istnieje potencjał, że możesz zapewnić dostęp przez nazwaną potokę. Ścieżkę do nazwanego potoku można określić za pomocą \\.\pipe\PipeNameHere. W języku C# można użyć NamedPipeServerStream.

Sądzę jednak, że szanse na to, że aplikacja kliencka jest zgodna z tym rozwiązaniem, są względnie niewielkie i sugerowałoby utworzenie modelu RAM drive, który będzie łatwiejszy w implementacji i łatwiej będzie działać. Napęd RAM pojawi się jako normalny napęd dyskowy. Możesz zapisywać i ładować do niego pliki, ale wszystko odbywa się w pamięci.

Powiązane problemy