อ่าน 2 นาที
Windows Native API
Native API คือ อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ที่มีน้ำหนักเบา ซึ่งใช้โดย เคอร์เนล และ แอป พลิเคชันในโหมดผู้ใช้ ของ Windows NT API นี้ถูกใช้ในขั้นตอนแรก ๆ ของ...
Windows Native API
Native APIคืออินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ที่มีน้ำหนักเบา ซึ่งใช้โดยเคอร์เนลและ แอป พลิเคชันในโหมดผู้ใช้ของWindows NT API นี้ถูกใช้ในขั้นตอนแรก ๆ ของ กระบวนการเริ่มต้นทำงานของ Windows NTเมื่อส่วนประกอบและ API อื่น ๆ ยังไม่พร้อมใช้งาน ดังนั้น ส่วนประกอบของ Windows บางส่วน เช่นClient/Server Runtime Subsystem (CSRSS) จึงถูกนำไปใช้โดยใช้ Native API นอกจากนี้ Native API ยังถูกใช้โดยซับรูทีนเช่น ซับรูทีนในkernel32.dllที่ใช้งานWindows APIซึ่งเป็น API ที่ใช้ในการสร้างส่วนประกอบส่วนใหญ่ของ Windows
การเรียกใช้ Native API ส่วนใหญ่ถูกใช้งานในntoskrnl.exeและเปิดเผยสู่โหมดผู้ใช้โดยntdll.dllจุดเริ่มต้นของ ntdll.dll คือLdrInitializeThunkการเรียกใช้ Native API จะถูกจัดการโดยเคอร์เนลผ่านตารางคำอธิบายบริการระบบ (SSDT)
กลุ่มฟังก์ชัน
Native API ประกอบด้วยฟังก์ชันมากมาย ซึ่งรวมถึงฟังก์ชันรันไทม์ของภาษา Cที่จำเป็นสำหรับการทำงานพื้นฐาน ของ ภาษา Cเช่น strlen(), sprintf(), memcpy() และ floor() ส่วนฟังก์ชันทั่วไปอื่นๆ เช่น malloc(), printf(), scanf() นั้นไม่มี (ฟังก์ชันแรกเพราะไม่ได้ระบุฮีปที่จะจัดสรรหน่วยความจำ และฟังก์ชันที่สองและสามเพราะใช้คอนโซล ซึ่งเข้าถึงได้ผ่าน KERNEL32.DLL เท่านั้น) โดยทั่วไปแล้ว ฟังก์ชัน Native API ส่วนใหญ่จะมีคำนำหน้า 2 หรือ 3 ตัวอักษร ดังนี้:
- NtหรือZwคือการเรียกใช้ระบบที่ประกาศไว้ใน ntdll.dll และ ntoskrnl.exe เมื่อถูกเรียกจาก ntdll.dll ในโหมดผู้ใช้ กลุ่มเหล่านี้จะเหมือนกันเกือบทุกประการ โดยจะเรียกใช้การขัดจังหวะเข้าสู่โหมดเคอร์เนลและเรียกฟังก์ชันที่เทียบเท่าใน ntoskrnl.exe ผ่านSSDTเมื่อเรียกใช้ฟังก์ชันโดยตรงใน ntoskrnl.exe (ซึ่งเป็นไปได้เฉพาะในโหมดเคอร์เนลเท่านั้น) ตัวแปร Zw จะรับประกันโหมดเคอร์เนล ในขณะที่ตัวแปร Nt จะไม่รับประกัน[ 1 ]คำนำหน้า Zw ไม่ได้หมายถึงสิ่งใด[ 2 ]
- RTLเป็นกลุ่มคำสั่ง ntdll ที่ใหญ่เป็นอันดับสอง ซึ่งประกอบด้วยไลบรารีรันไทม์ C (แบบขยาย) ที่มีฟังก์ชันยูทิลิตี้มากมายที่แอปพลิเคชันเนทีฟสามารถใช้งานได้ แต่ไม่ได้เกี่ยวข้องกับการสนับสนุนเคอร์เนลโดยตรง
- CSRคือฟังก์ชันไคลเอ็นต์-เซิร์ฟเวอร์ที่ใช้ในการสื่อสารกับกระบวนการซับซิสเต็ม Win32 csrss.exe ( csrssย่อมาจาก client/server runtime sub-system)
- Dbgคือ ฟังก์ชัน สำหรับการดีบักเช่นการตั้งจุดหยุดการทำงานของ ซอฟต์แวร์
- Kiคือการเรียกขึ้นจากโหมดเคอร์เนลสำหรับเหตุการณ์ต่างๆ เช่นการส่งคำสั่งAPC
- Ldrคือฟังก์ชันตัวโหลดสำหรับ การจัดการไฟล์ PEและการเริ่มต้นกระบวนการใหม่
- NLS ย่อมาจากNational Language Support (คล้ายกับ Code Page)
- ไฟล์ Pfxสำหรับการจัดการคำนำหน้า
- Tpสำหรับการจัดการเธรดพูล
ไฟล์ user32.dll และ gdi32.dll มีฟังก์ชันเรียกใช้งานอื่นๆ อีกหลายฟังก์ชันที่เรียกใช้การขัดจังหวะเข้าสู่โหมดเคอร์เนล ฟังก์ชันเหล่านี้ไม่ได้เป็นส่วนหนึ่งของการออกแบบ Windows NT ดั้งเดิม ดังที่เห็นได้ในWindows NT 3.5อย่างไรก็ตาม เนื่องจากปัญหาด้านประสิทธิภาพของฮาร์ดแวร์ในยุคนั้น จึงมีการตัดสินใจย้ายระบบกราฟิกไปอยู่ในโหมดเคอร์เนล ดังนั้น การเรียกใช้ระบบในช่วง 0x1000-0x1FFF จึงถูกจัดการโดยwin32k.sys (แทนที่จะเป็น ntoskrnl.exe เหมือนที่ทำสำหรับ 0-0x0FFF) และถูกประกาศไว้ใน user32.dll และ gdi32.dll ฟังก์ชันเหล่านี้มี คำนำหน้า NtUserและNtGdi (เช่นNtUserLockWorkStationและNtGdiEnableEudc )
การใช้งาน
การใช้งานฟังก์ชัน Native API รวมถึงแต่ไม่จำกัดเพียง:
- การเปิดใช้งานและปิดใช้งานสิทธิ์ (RtlAdjustPrivilege)
- การสร้างเธรดระยะไกลภายในกระบวนการที่ทำงานอยู่ในเซสชันที่แตกต่างกัน (RtlCreateUserThread)
- การเรียกใช้งานแอปพลิเคชันแบบเนทีฟ (RtlCreateUserProcess)
- ดำเนินการปิดระบบแบบบังคับ (NtShutdownSystem)
- ทำให้เกิดหน้าจอฟ้า (BSOD) ในโหมดผู้ใช้ (NtRaiseHardError)
- การแสดงข้อความในโหมดเนทีฟ (NtDisplayString)
ดูเพิ่มเติม
ลิงก์ภายนอก
- เว็บไซต์ที่รวบรวมข้อมูลฟังก์ชันส่วนใหญ่ของ Native API (ถูกเก็บถาวรเมื่อวันที่ 25 ตุลาคม 2017 ในWayback Machine)
- ภายในแอปพลิเคชันเนทีฟ
- ภายใน Native API
- เฟรมเวิร์กการพัฒนาแอปพลิเคชันเนทีฟแบบโอเพนซอร์ส
- การคอมไพล์โปรแกรม Free Pascal สำหรับ API ดั้งเดิม
- Windows NT Native Tools - เครื่องมือพัฒนาแอปพลิเคชันแบบเนทีฟฟรี
- เชลล์ดั้งเดิม - พร้อมท์คำสั่งของ Windows ซึ่งสามารถเริ่มต้นได้ก่อน Winlogon และระบบย่อย Win32 เก็บถาวรเมื่อ 11 สิงหาคม 2015 ที่Wayback Machine
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ Windows Native API
Native API คือ อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ที่มีน้ำหนักเบา ซึ่งใช้โดย เคอร์เนล และ แอป พลิเคชันในโหมดผู้ใช้ ของ Windows NT API นี้ถูกใช้ในขั้นตอนแรก ๆ ของ...
กลุ่มฟังก์ชัน
Native API ประกอบด้วยฟังก์ชันมากมาย ซึ่งรวมถึง ฟังก์ชันรันไทม์ของภาษา C ที่จำเป็นสำหรับการทำงานพื้นฐาน ของ ภาษา C เช่น strlen(), sprintf(), memcpy() และ floor() ส่วนฟังก์ชันทั่วไปอื่นๆ เช่น malloc(), printf(), scanf() นั้นไม่มี (ฟังก์ชันแรกเพราะไม่ได้ระบุ ฮีป...
การใช้งาน
การใช้งานฟังก์ชัน Native API รวมถึงแต่ไม่จำกัดเพียง:
ลิงก์ภายนอก
เว็บไซต์ที่รวบรวมข้อมูลฟังก์ชันส่วนใหญ่ของ Native API (ถูกเก็บถาวรเมื่อวันที่ 25 ตุลาคม 2017 ใน Wayback Machine) ภายในแอปพลิเคชันเนทีฟ ภายใน Native API เฟรมเวิร์กการพัฒนาแอปพลิเคชันเนทีฟแบบโอเพนซอร์ส การคอมไพล์โปรแกรม Free Pascal สำหรับ API ดั้งเดิม Windows...