“Windows Drive Letters ไม่จำกัดแค่ A-Z”
บทความจาก Ryan Liptak อธิบายว่า drive letters ใน Windows ไม่ได้ถูกจำกัดอยู่ที่ A-Z อย่างที่หลายคนเข้าใจ แต่จริง ๆ แล้วเป็นเพียง สัญลักษณ์ที่ Object Manager ของ Windows ใช้เป็น symbolic link ไปยังอุปกรณ์หรือ volume ที่แท้จริง ตัวอย่างเช่น การใช้คำสั่ง subst +: C:\foo จะสร้าง drive +:\ ที่สามารถใช้งานได้เหมือน drive ปกติใน Command Prompt
สิ่งที่น่าสนใจคือ Windows สามารถรองรับ non-ASCII drive letters เช่น €:\ หรือ Λ:\ ได้เช่นกัน เนื่องจากระบบตรวจสอบเพียงว่ามีอักขระตามด้วย colon (:) เท่านั้น อย่างไรก็ตาม drive letters ที่อยู่นอกช่วง Unicode U+FFFF จะไม่สามารถใช้งานได้ เพราะ Windows ใช้การเข้ารหัสแบบ WTF-16 ซึ่งจำกัดอยู่ที่ code unit 16 บิต
แม้ระบบ NT Path Conversion จะรองรับ drive letters ที่หลากหลาย แต่ Explorer และ PowerShell กลับไม่ยอมรับ drive ที่อยู่นอก A-Z ทำให้ไม่สามารถเข้าถึงได้ผ่าน GUI หรือคำสั่ง PowerShell เช่น cd +:\ ซึ่งจะขึ้น error ว่าไม่พบ drive นี่สะท้อนถึงความไม่สอดคล้องกันระหว่าง API ระดับต่ำกับเครื่องมือที่ผู้ใช้ทั่วไปใช้งาน
บทความยังชี้ให้เห็นว่า การจัดการ path encoding มีผลต่อการตรวจสอบว่า path เป็น absolute หรือไม่ เช่น Rust จะถือว่าเฉพาะ A-Z เท่านั้นที่เป็น absolute path ขณะที่ Windows API จริง ๆ รองรับมากกว่า ทำให้เกิดความแตกต่างในการตีความระหว่างภาษาโปรแกรมและระบบปฏิบัติการ
สรุปสาระสำคัญ
Drive letters ไม่จำกัดแค่ A-Z
สามารถใช้สัญลักษณ์อื่น เช่น +:\
รองรับ non-ASCII เช่น €:\ หรือ Λ:\
การทำงานของ Windows Object Manager
Drive letter เป็น symbolic link ไปยัง volume จริง
ใช้ NT Path Conversion (RtlDosPathNameToNtPathName_U)
ข้อจำกัดของเครื่องมือทั่วไป
Explorer และ PowerShell รองรับเฉพาะ A-Z
ทำให้ drive อื่นไม่สามารถเข้าถึงได้ผ่าน GUI
คำเตือนและข้อควรระวัง
Drive letters ที่อยู่นอก Unicode U+FFFF ไม่สามารถใช้งานได้
ความไม่สอดคล้องระหว่าง API และเครื่องมืออาจทำให้โปรแกรมบางตัวทำงานผิดพลาด
https://www.ryanliptak.com/blog/windows-drive-letters-are-not-limited-to-a-z/
บทความจาก Ryan Liptak อธิบายว่า drive letters ใน Windows ไม่ได้ถูกจำกัดอยู่ที่ A-Z อย่างที่หลายคนเข้าใจ แต่จริง ๆ แล้วเป็นเพียง สัญลักษณ์ที่ Object Manager ของ Windows ใช้เป็น symbolic link ไปยังอุปกรณ์หรือ volume ที่แท้จริง ตัวอย่างเช่น การใช้คำสั่ง subst +: C:\foo จะสร้าง drive +:\ ที่สามารถใช้งานได้เหมือน drive ปกติใน Command Prompt
สิ่งที่น่าสนใจคือ Windows สามารถรองรับ non-ASCII drive letters เช่น €:\ หรือ Λ:\ ได้เช่นกัน เนื่องจากระบบตรวจสอบเพียงว่ามีอักขระตามด้วย colon (:) เท่านั้น อย่างไรก็ตาม drive letters ที่อยู่นอกช่วง Unicode U+FFFF จะไม่สามารถใช้งานได้ เพราะ Windows ใช้การเข้ารหัสแบบ WTF-16 ซึ่งจำกัดอยู่ที่ code unit 16 บิต
แม้ระบบ NT Path Conversion จะรองรับ drive letters ที่หลากหลาย แต่ Explorer และ PowerShell กลับไม่ยอมรับ drive ที่อยู่นอก A-Z ทำให้ไม่สามารถเข้าถึงได้ผ่าน GUI หรือคำสั่ง PowerShell เช่น cd +:\ ซึ่งจะขึ้น error ว่าไม่พบ drive นี่สะท้อนถึงความไม่สอดคล้องกันระหว่าง API ระดับต่ำกับเครื่องมือที่ผู้ใช้ทั่วไปใช้งาน
บทความยังชี้ให้เห็นว่า การจัดการ path encoding มีผลต่อการตรวจสอบว่า path เป็น absolute หรือไม่ เช่น Rust จะถือว่าเฉพาะ A-Z เท่านั้นที่เป็น absolute path ขณะที่ Windows API จริง ๆ รองรับมากกว่า ทำให้เกิดความแตกต่างในการตีความระหว่างภาษาโปรแกรมและระบบปฏิบัติการ
สรุปสาระสำคัญ
Drive letters ไม่จำกัดแค่ A-Z
สามารถใช้สัญลักษณ์อื่น เช่น +:\
รองรับ non-ASCII เช่น €:\ หรือ Λ:\
การทำงานของ Windows Object Manager
Drive letter เป็น symbolic link ไปยัง volume จริง
ใช้ NT Path Conversion (RtlDosPathNameToNtPathName_U)
ข้อจำกัดของเครื่องมือทั่วไป
Explorer และ PowerShell รองรับเฉพาะ A-Z
ทำให้ drive อื่นไม่สามารถเข้าถึงได้ผ่าน GUI
คำเตือนและข้อควรระวัง
Drive letters ที่อยู่นอก Unicode U+FFFF ไม่สามารถใช้งานได้
ความไม่สอดคล้องระหว่าง API และเครื่องมืออาจทำให้โปรแกรมบางตัวทำงานผิดพลาด
https://www.ryanliptak.com/blog/windows-drive-letters-are-not-limited-to-a-z/
💻 “Windows Drive Letters ไม่จำกัดแค่ A-Z”
บทความจาก Ryan Liptak อธิบายว่า drive letters ใน Windows ไม่ได้ถูกจำกัดอยู่ที่ A-Z อย่างที่หลายคนเข้าใจ แต่จริง ๆ แล้วเป็นเพียง สัญลักษณ์ที่ Object Manager ของ Windows ใช้เป็น symbolic link ไปยังอุปกรณ์หรือ volume ที่แท้จริง ตัวอย่างเช่น การใช้คำสั่ง subst +: C:\foo จะสร้าง drive +:\ ที่สามารถใช้งานได้เหมือน drive ปกติใน Command Prompt
สิ่งที่น่าสนใจคือ Windows สามารถรองรับ non-ASCII drive letters เช่น €:\ หรือ Λ:\ ได้เช่นกัน เนื่องจากระบบตรวจสอบเพียงว่ามีอักขระตามด้วย colon (:) เท่านั้น อย่างไรก็ตาม drive letters ที่อยู่นอกช่วง Unicode U+FFFF จะไม่สามารถใช้งานได้ เพราะ Windows ใช้การเข้ารหัสแบบ WTF-16 ซึ่งจำกัดอยู่ที่ code unit 16 บิต
แม้ระบบ NT Path Conversion จะรองรับ drive letters ที่หลากหลาย แต่ Explorer และ PowerShell กลับไม่ยอมรับ drive ที่อยู่นอก A-Z ทำให้ไม่สามารถเข้าถึงได้ผ่าน GUI หรือคำสั่ง PowerShell เช่น cd +:\ ซึ่งจะขึ้น error ว่าไม่พบ drive นี่สะท้อนถึงความไม่สอดคล้องกันระหว่าง API ระดับต่ำกับเครื่องมือที่ผู้ใช้ทั่วไปใช้งาน
บทความยังชี้ให้เห็นว่า การจัดการ path encoding มีผลต่อการตรวจสอบว่า path เป็น absolute หรือไม่ เช่น Rust จะถือว่าเฉพาะ A-Z เท่านั้นที่เป็น absolute path ขณะที่ Windows API จริง ๆ รองรับมากกว่า ทำให้เกิดความแตกต่างในการตีความระหว่างภาษาโปรแกรมและระบบปฏิบัติการ
📌 สรุปสาระสำคัญ
✅ Drive letters ไม่จำกัดแค่ A-Z
➡️ สามารถใช้สัญลักษณ์อื่น เช่น +:\
➡️ รองรับ non-ASCII เช่น €:\ หรือ Λ:\
✅ การทำงานของ Windows Object Manager
➡️ Drive letter เป็น symbolic link ไปยัง volume จริง
➡️ ใช้ NT Path Conversion (RtlDosPathNameToNtPathName_U)
✅ ข้อจำกัดของเครื่องมือทั่วไป
➡️ Explorer และ PowerShell รองรับเฉพาะ A-Z
➡️ ทำให้ drive อื่นไม่สามารถเข้าถึงได้ผ่าน GUI
‼️ คำเตือนและข้อควรระวัง
⛔ Drive letters ที่อยู่นอก Unicode U+FFFF ไม่สามารถใช้งานได้
⛔ ความไม่สอดคล้องระหว่าง API และเครื่องมืออาจทำให้โปรแกรมบางตัวทำงานผิดพลาด
https://www.ryanliptak.com/blog/windows-drive-letters-are-not-limited-to-a-z/
0 ความคิดเห็น
0 การแบ่งปัน
12 มุมมอง
0 รีวิว