วิธีรับคำอธิบาย

สารบัญ:

วิธีรับคำอธิบาย
วิธีรับคำอธิบาย

วีดีโอ: วิธีรับคำอธิบาย

วีดีโอ: วิธีรับคำอธิบาย
วีดีโอ: 7 วิธีการอธิบายเรื่องราวต่างๆให้เข้าใจง่ายขึ้น | 5 Minutes Podcast EP.592 2024, พฤศจิกายน
Anonim

อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันของระบบปฏิบัติการ Windows แสดงด้วยชุดของฟังก์ชัน เมื่อมีการเรียก อ็อบเจ็กต์ต่างๆ (ไฟล์ โปรเซส เธรด ออบเจ็กต์การซิงโครไนซ์ ฯลฯ) จะถูกสร้างขึ้นได้ เพื่อให้มีการเข้าถึงวัตถุเหล่านี้ที่เป็นนามธรรมและเป็นหนึ่งเดียวอย่างเพียงพอ การระบุของวัตถุจะดำเนินการโดยใช้ตัวอธิบาย - ค่าตัวเลข "ไม่มีตัวตน"

วิธีรับคำอธิบาย
วิธีรับคำอธิบาย

จำเป็น

  • - นักแปลจากภาษาการเขียนโปรแกรมที่อนุญาตให้ใช้ Windows API
  • - อาจเป็น Windows Platform SDK

คำแนะนำ

ขั้นตอนที่ 1

รับมือจับหน้าต่าง. มีหลายวิธีในการทำเช่นนี้ วิธีการที่แน่นอนขึ้นอยู่กับเป้าหมายสุดท้าย

ใช้ CreateWindow หรือ CreateWindowEx API เพื่อสร้างหน้าต่าง พวกเขาส่งคืนการจัดการกับความสำเร็จและ NULL เมื่อล้มเหลว

ค้นหาหน้าต่างระดับบนสุดและหน้าต่างย่อยตามพารามิเตอร์ต่างๆ โดยใช้ฟังก์ชัน FindWindow และ FindWindowEx ตามลำดับ เมื่อค้นหาสำเร็จ จะได้รับหมายเลขอ้างอิงหน้าต่าง

ระบุหน้าต่างด้วยฟังก์ชัน EnumWindows, EnumChildWindows, EnumThreadWindows หมายเลขอ้างอิงของหน้าต่างที่พบจะถูกส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันเรียกกลับ

หาที่จับของหน้าต่างซึ่งอยู่ที่ตำแหน่งเฉพาะบนหน้าจอ เรียกใช้ฟังก์ชันอย่างใดอย่างหนึ่ง: WindowFromPoint, ChildWindowFromPoint หรือ ChildWindowFromPointEx

ขั้นตอนที่ 2

รับการจัดการกระบวนการ สร้างกระบวนการใหม่โดยการเรียกฟังก์ชัน CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW หรือ CreateProcessWithLogonW API พวกเขาทั้งหมดส่งคืนหมายเลขอ้างอิงไปยังกระบวนการใหม่ในฟิลด์ hProcess ของโครงสร้าง PROCESS_INFORMATION ตัวชี้ที่ควรส่งผ่านไปยังพารามิเตอร์เหล่านี้เป็นพารามิเตอร์สุดท้าย

ค้นหาหมายเลขอ้างอิงของกระบวนการโดยใช้ตัวระบุที่รู้จัก ใช้การโทร OpenProcess สามารถรับ ID ของกระบวนการที่ทำงานอยู่ทั้งหมดได้ ตัวอย่างเช่น การใช้ฟังก์ชัน CreateToolhelp32Snapshot, Process32First และ Process32Next ของไลบรารี Tool Help

ดึงหมายเลขอ้างอิงหลอกของกระบวนการปัจจุบันโดยใช้ฟังก์ชัน GetCurrentProcess

ขั้นตอนที่ 3

รับคำอธิบายของเธรด ฟังก์ชัน CreateThread และ CreateRemoteThread สร้างเธรดในกระบวนการของตนเองและของผู้อื่น ตามลำดับ โดยส่งคืนแฮนเดิลของพวกเขา คุณสามารถเปิดเธรดที่มีอยู่โดยใช้ตัวระบุและรับแฮนเดิลที่เกี่ยวข้องโดยใช้ฟังก์ชัน OpenThread ตัวจัดการหลอกของโฟลว์ปัจจุบันจะถูกส่งคืนเมื่อมีการเรียก GetCurrentThread

ขั้นตอนที่ 4

ตัวอธิบายสำหรับไฟล์ ไดเร็กทอรี ฟิสิคัลดิสก์ ดิสก์โวลุ่ม คอนโซล ทรัพยากรการสื่อสาร (พอร์ต I / O) สล็อตเมล และไปป์ที่มีชื่อสามารถรับได้โดยการเรียกใช้ฟังก์ชันเดียว CreateFile

ขั้นตอนที่ 5

ตัวอธิบายอ็อบเจ็กต์การแมปไฟล์กับหน่วยความจำจะถูกส่งกลับโดยการเรียก CreateFileMapping และ OpenFileMapping

ขั้นตอนที่ 6

สร้างฟังก์ชัน CreateMutex, CreateSemaphore และ CreateEvent และฟังก์ชัน OpenMutex, OpenSemaphore และ OpenEvent จะเปิดออบเจ็กต์การซิงโครไนซ์ที่มีอยู่ (mutexes สัญญาณและเหตุการณ์) พวกเขาทั้งหมดกลับคำอธิบาย

ขั้นตอนที่ 7

ออบเจ็กต์ GDI ทั้งหมด (เช่น บริบทของอุปกรณ์ ฟอนต์ แปรง ดินสอ บิตแมปที่ขึ้นกับฮาร์ดแวร์และอิสระ ส่วน DIB ฯลฯ) จะได้รับการจัดการผ่านตัวอธิบาย ฟังก์ชันสำหรับการสร้างวัตถุ GDI นั้นมีมากมาย และควรปรึกษาในส่วน MSDN สำหรับข้อมูลเกี่ยวกับวัตถุเหล่านี้

ขั้นตอนที่ 8

ตัวอธิบายที่ได้รับในกระบวนการหนึ่งตามกฎไม่สามารถใช้ในอีกกระบวนการหนึ่งได้ อย่างไรก็ตาม ในบางกรณี เป็นไปได้ที่จะได้รับตัวอธิบายที่ซ้ำกันซึ่งสอดคล้องกับออบเจกต์หลัก เรียก DuplicateHandle API เพื่อทำซ้ำหมายเลขอ้างอิง สามารถใช้ ตัวอย่างเช่น เพื่อแชร์ออบเจ็กต์การซิงโครไนซ์ที่ไม่มีชื่อหรือแชนเนลระหว่างหลายกระบวนการ