เทมเพลต Visual C++ UMDF V2 ดูเหมือนว่าจะสร้างโปรเจ็กต์ C ซึ่งตรงข้ามกับ C++

ฉันยังใหม่ต่อการพัฒนาไดรเวอร์ ฉันถูกขอให้เขียน Universal Mode Driver สำหรับอุปกรณ์ USB ธรรมดา ฉันอ่านหนังสือเรื่อง "การพัฒนาไดรเวอร์ด้วย Windows Driver Foundation" ฉันยังดูและพยายามทำความเข้าใจตัวอย่างโค้ดที่หนังสือเล่มนี้อ้างถึงด้วย หนังสือแสดงรหัส C++ และตัวอย่างโค้ดที่ฉันดูอยู่ในภาษา C++ ฉันยังต้องทบทวน C++ ด้วยซ้ำ เพราะฉันไม่ได้ดูมันในศตวรรษนี้ เมื่อใช้ VS 2017 เมื่อฉันสร้างโปรเจ็กต์จากเทมเพลต ฉันเลือก Visual C++ -> Windows Drivers -> WDF -> User Mode Driver (UMDF V2) หลังจากสร้างโปรเจ็กต์แล้ว ตามลักษณะที่ปรากฏทั้งหมด มันเป็นโปรเจ็กต์ C แทนที่จะเป็นโปรเจ็กต์ C++ ฉันแค่สับสนหรือเปล่า? คำตอบคือใช่ แต่ทำไมมันถึงสร้างโปรเจ็กต์ที่มีไฟล์ที่มีนามสกุล .c ซึ่งตรงข้ามกับ .cpp ในเมื่อฉันเลือกเทมเพลต Visual C++ อย่างชัดเจน มีข้อมูลเชิงลึกสำหรับไดรเวอร์อุปกรณ์มือใหม่หรือไม่


person Dar    schedule 18.10.2018    source แหล่งที่มา


คำตอบ (1)


UMDF 2 ได้รับการออกแบบมาเพื่อให้ง่ายต่อการพอร์ตไดรเวอร์ไปยัง KMDF ในที่สุด เนื่องจากไม่สามารถใช้ C++ ในโหมดเคอร์เนลได้ โปรเจ็กต์ UMDF 2 จึงได้รับการกำหนดค่าสำหรับ C ตามค่าเริ่มต้น หากคุณต้องการใช้ C++ ให้เปลี่ยนการตั้งค่าคอมไพเลอร์ในคุณสมบัติของโปรเจ็กต์ แต่โปรดตรวจสอบให้แน่ใจว่าไม่มีข้อยกเว้นใดที่จะหนีรอดจากโค้ดของคุณได้

person Swordfish    schedule 18.10.2018
comment
จริงๆ แล้ว C++ สามารถใช้ในโหมดเคอร์เนลได้ โดยคุณต้องใส่ใจกับไดรเวอร์ที่สำคัญๆ เช่น Page Faults - person Michael Chourdakis; 19.10.2018
comment
ขอบคุณสำหรับคำอธิบาย ด้วยการโหวตคำถามของฉัน ฉันกลัวว่าจะต้องผลักไสคำถามของฉันไปเป็นคำถามโง่แห่งปี - person Dar; 19.10.2018
comment
มีเอกสารไวท์เปเปอร์ (ค่อนข้างเก่า) เกี่ยวกับการใช้ C ++ ในโหมดเคอร์เนล: kmcode.doc (ลิงก์ดาวน์โหลดโดยตรง) - person Swordfish; 19.10.2018