Ho bisogno del mio servizio per aggiornare i campi nella memoria condivisa per un'applicazione client da leggere e visualizzare. Ho trovato la mia soluzione corrente per essere inefficace a causa di Session 0 Isolation.Condivisione della memoria tra servizio Windows e applicazione, qual è il più semplice?
ho ribattezzato mutex
es nel namespace globale che risolve tale elemento ma non guardare come se la dll sarà suscettibile di condivisione tra le sessioni, nonostante una soluzione per Session 0 Isolation essere:
"Scegliere esplicitamente il namespace Local \ o Global \ per qualsiasi oggetto denominato, ad esempio gli eventi o la memoria mappata resi disponibili dal servizio."
Non so quale parte della DLL possa essere classificata come oggetto con nome e ci vorrà troppo tempo per continuare a re-installarla e passarci attraverso per controllarla.
Ho visto i volumi di codice per i canali denominati ed è stato rimandato. Non voglio creare un file che tocchi il disco come immagino sia richiesto per la soluzione memoryMappedFile. È possibile far funzionare le sezioni condivise di DLL? Altrimenti cosa è più semplice?
public ref class ServerGUIBridge
{
public:
#pragma data_seg(".sdata")
static int commonIntShouldBeGlobal = 0;
static bool hasBeenInitializedMakeMeGlobal = false;
#pragma data_seg()
#pragma comment(linker, "/section:.sdata,rws")
Sto usando .NET 2.0 quindi non WCF per favore.
Se si crea il file mappato in memoria con INVALID_FILE_HANDLE, non viene creato alcun file. È solo la memoria che viene scaricata quando non si accede per un po '. Nota che le sezioni condivise sono un buco di sicurezza: non puoi mettere ACL su una sezione condivisa. (Cosa succede se un client entra e fa 'hasBeenInitializedMakeMeGlobal = false' o' commonIntShouldBeGlobal = rand() '?) –
@Raymond" Se hFile è INVALID_HANDLE_VALUE, il processo chiamante deve anche specificare una dimensione per l'oggetto di mappatura file nel dwMaximumSizeHigh e parametri dwMaximumSizeLow. In questo scenario, CreateFileMapping crea un oggetto di mapping di file di una dimensione specificata che viene supportato dal file di paging del sistema anziché da un file nel file system. " - Quindi, dove viene eseguito il backup se il file di paging del sistema è disattivato? – John
"Sostenuto dal file di paging del sistema" è di scarsa qualità. Dovrebbe essere davvero "supportato dal sistema di memoria virtuale". Se il file di paging è disabilitato, il sistema di memoria virtuale è solo memoria fisica. –