मुझे पढ़ने और प्रदर्शित करने के लिए क्लाइंट एप्लिकेशन के लिए साझा मेमोरी में फ़ील्ड अपडेट करने के लिए मेरी सेवा की आवश्यकता है। मुझे Session 0 Isolation की वजह से मेरा वर्तमान समाधान अप्रभावी होने का पता चला है।विंडोज सेवा और एप्लिकेशन के बीच मेमोरी साझा करना, सबसे आसान क्या है?
मैं वैश्विक नाम स्थान जो उस तत्व को ठीक करता में mutex
तों नाम दिया है, लेकिन यह करने के लिए सत्र 0 अलगाव किया जा रहा है एक समाधान के बावजूद नहीं लगती है जैसे कि dll उत्तरदायी हो जाएगा सत्र के बीच साझा करने के लिए:
"किसी भी नामित ऑब्जेक्ट्स, जैसे ईवेंट या मैप किए गए मेमोरी के लिए स्पष्ट रूप से स्थानीय \ या ग्लोबल \ नेमस्पेस का चयन करें जो सेवा उपलब्ध कराता है।"
मुझे नहीं पता कि डीएल के किस हिस्से को नामित वस्तु के रूप में वर्गीकृत किया जा सकता है और इसे फिर से इंस्टॉल करने और जांचने के लिए इसे आगे बढ़ाने में बहुत लंबा समय लगेगा।
मैंने नामित चैनलों के लिए कोड वॉल्यूम देखा और इसे हटा दिया गया। मैं डिस्क को छूने वाली फ़ाइल नहीं बनाना चाहता हूं क्योंकि मुझे लगता है कि मेमोरी मैप्डफाइल समाधान की आवश्यकता है। काम करने के लिए डीएलएस के वर्ग साझा किए जा सकते हैं? अन्यथा सबसे आसान क्या है?
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")
मैं .NET 2.0 का उपयोग कर रहा हूं इसलिए कोई डब्ल्यूसीएफ कृपया नहीं।
यदि आप स्मृति-मैप की गई फ़ाइल INVALID_FILE_HANDLE के साथ बनाते हैं, तो कोई फ़ाइल नहीं बनाई गई है। यह सिर्फ स्मृति है जो थोड़ी देर तक पहुंचने पर बाहर निकलती है। ध्यान दें कि साझा अनुभाग एक सुरक्षा छेद हैं - आप साझा अनुभाग पर एसीएल नहीं डाल सकते हैं। (क्या होता है यदि कोई क्लाइंट चला जाता है और करता है 'हैबिनइंस्टाईलाइज्ड मेकमेग्लोबल = झूठा' या 'सामान्य इंटेलशॉल्डबीग्लोबल = रैंड() '?) –
@ रेमंड" अगर एचएफआईएल INVALID_HANDLE_VALUE है, तो कॉलिंग प्रक्रिया को भी dimMaximumSizeHigh में फ़ाइल मैपिंग ऑब्जेक्ट के लिए आकार निर्दिष्ट करना होगा और dwMaximumSizeLow पैरामीटर। इस परिदृश्य में, CreateFileMapping एक निर्दिष्ट आकार के फ़ाइल मैपिंग ऑब्जेक्ट बनाता है जिसे फ़ाइल सिस्टम में फ़ाइल के बजाय सिस्टम पेजिंग फ़ाइल द्वारा समर्थित किया जाता है। " - अगर सिस्टम पेजिंग फ़ाइल बंद है तो इसका समर्थन कहाँ किया जाता है? – John
"सिस्टम पेजफाइल द्वारा समर्थित" खराब शब्द है। यह वास्तव में "वर्चुअल मेमोरी सिस्टम द्वारा समर्थित" होना चाहिए। यदि पेजफाइल अक्षम है, तो वर्चुअल मेमोरी सिस्टम सिर्फ भौतिक स्मृति है। –