सवाल यह है कि सीमा अभी भी मौजूद क्यों है। निश्चित रूप से आधुनिक विंडोज MAX_PATH
लंबे रास्तों की अनुमति देने के पक्ष को बढ़ा सकता है। सीमा क्यों नहीं हटाई गई?
- इसका कारण यह नहीं निकाला जा सकता है कि विंडोज ने वादा किया था कि यह कभी नहीं बदलेगा।
एपीआई अनुबंध के माध्यम से, विंडोज ने सभी अनुप्रयोगों की गारंटी दी है कि मानक फ़ाइल एपीआई 260
वर्णों की तुलना में लंबे समय तक वापस नहीं आएगी ।
निम्नलिखित सही कोड पर विचार करें :
WIN32_FIND_DATA findData;
FindFirstFile("C:\Contoso\*", ref findData);
विंडोज ने मेरे कार्यक्रम की गारंटी दी कि यह मेरी WIN32_FIND_DATA
संरचना को आबाद करेगा :
WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
//...
TCHAR cFileName[MAX_PATH];
//..
}
मेरे एप्लिकेशन ने निरंतरता का मूल्य घोषित नहीं किया MAX_PATH
, विंडोज एपीआई ने किया। मेरे अनुप्रयोग ने उस परिभाषित मूल्य का उपयोग किया।
मेरी संरचना सही ढंग से परिभाषित है, और केवल 592
कुल बाइट्स आवंटित करता है । इसका मतलब है कि मैं केवल एक फ़ाइल नाम प्राप्त करने में सक्षम हूं जो 260
वर्णों से कम है । विंडोज ने मुझसे वादा किया कि अगर मैंने अपने आवेदन को सही तरीके से लिखा है, तो भविष्य में मेरा आवेदन काम करना जारी रखेगा।
यदि विंडोज़ को 260
वर्णों की तुलना में लंबे समय तक फ़ाइल नाम रखने की अनुमति थी, तो मेरा मौजूदा एप्लिकेशन (जो सही एपीआई को सही तरीके से उपयोग करता है) विफल हो जाएगा।
Microsoft को MAX_PATH
निरंतर बदलने के लिए कॉल करने वाले किसी भी व्यक्ति के लिए , उन्हें पहले यह सुनिश्चित करने की आवश्यकता है कि कोई मौजूदा एप्लिकेशन विफल न हो। उदाहरण के लिए, मैं अभी भी स्वयं का उपयोग करता हूं और एक विंडोज एप्लिकेशन का उपयोग करता हूं जिसे विंडोज 3.11 पर चलाने के लिए लिखा गया था। यह अभी भी 64-बिट विंडोज 10 पर चलता है। यही कारण है कि पीछे की संगतता आपको मिलती है।
Microsoft ने पूर्ण 32,768 पथ नामों का उपयोग करने का एक तरीका बनाया; लेकिन उन्हें ऐसा करने के लिए एक नया एपीआई अनुबंध बनाना पड़ा। एक के लिए, आपको फ़ाइलों को एन्यूमरेट करने के लिए शेल एपीआई का उपयोग करना चाहिए (क्योंकि हार्ड ड्राइव या नेटवर्क शेयर पर सभी फाइलें मौजूद नहीं हैं)।
लेकिन उन्हें मौजूदा उपयोगकर्ता अनुप्रयोगों को भी नहीं तोड़ना होगा। एप्लिकेशन के विशाल बहुमत फ़ाइल कार्य के लिए शेल एपीआई का उपयोग नहीं करते हैं। हर कोई बस एक दिन फोन करता FindFirstFile
/ FindNextFile
करती है।