@ সাগ্রু হিসাবে আমি একটি পুরানো থ্রেডও খনন করছি।
32768 কেন আছে তা ব্যাখ্যা করার জন্য (আমি মনে করি এটি 32767 হওয়া উচিত, তবে পরীক্ষামূলক পরীক্ষার ফলাফলকে বিশ্বাস করতে দেয়) উইন্ডোজ এপিআইতে খনন করতে আমাদের অক্ষরের সীমাবদ্ধতা রয়েছে।
আপনি কমান্ড লাইন আর্গুমেন্টের সাথে প্রোগ্রামটি কীভাবে লঞ্চ করবেন তা শেলএক্সেকিউট , ক্রিয়েটপ্রসেস বা তাদের সংস্করণে বাড়ানো কোনও বিষয় নয়। এই এপিআইগুলি মূলত অন্যান্য এনটি স্তরের এপিআই মুড়ে দেয় যা সরকারীভাবে নথিভুক্ত নয়। আমি যতদূর জানি এই কল মোড়ানো NtCreateProcess , যা প্রয়োজন OBJECT_ATTRIBUTES যে কাঠামো তৈরি করতে একটি প্যারামিটার হিসাবে গঠন, InitializeObjectAttributes ব্যবহার করা হয়। এই জায়গায় আমরা দেখতে UNICODE_STRING। সুতরাং এখন এই কাঠামোটি একবার দেখে নেওয়া যাক:
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING;
USHORTদৈর্ঘ্য সংরক্ষণের জন্য এটি (16-বিট দৈর্ঘ্য [0; 65535]) পরিবর্তনশীল ব্যবহার করে। আর অনুযায়ী এই , দৈর্ঘ্য বাইট, না অক্ষর আকার নির্দেশ করে। সুতরাং আমাদের আছে: 65535 / 2 = 32767(কারণ WCHARএটি 2 বাইট দীর্ঘ)।
এই সংখ্যাটি খননের জন্য কয়েকটি পদক্ষেপ রয়েছে তবে আমি আশা করি এটি পরিষ্কার হয়ে গেছে।
এছাড়াও, কীভাবে গ্রহণযোগ্য তা উত্তর দেওয়ার জন্য @ সুনোটোসের সমর্থন জানাতে। 8191 হ'ল সর্বাধিক সংখ্যাটিতে প্রবেশের অনুমতি দেওয়া হয়েছে cmd.exe, যদি আপনি এই সীমাটি অতিক্রম করেন তবে The input line is too long.ত্রুটি উত্পন্ন হয়। সুতরাং, cmd.exeনতুন প্রক্রিয়াটি করার পক্ষে যুক্তিগুলি পাস করার একমাত্র উপায় নয় তা সত্ত্বেও উত্তরটি সঠিক ।