28-08-2005, 00:20
|
|
|
|
חבר מתאריך: 04.08.02
הודעות: 4,468
|
|
...
מצטער אבל לא אוכל לעזור לך בכיוון של דוט-נט.
אמנם, בכיוון של winapi, כשהמשתמש מכניס או מוציא דיסק, אתה מקבל הודעה WM_DEVICECHANGE, ובנוסף להודעה, אתה מקבל את האירוע (wparam) כמו DBT_DEVICEARRIVAL (כשהמשתמש מכניס דיסק), או DBT_DEVICEREMOVECOMPLETE/DBT_DEVICE_REMOVE (כשמשתמש מוציא את הדיסק)
ככה בעצם אתה יכול לזהות מתי הוכנס או הוצא דיסק.
אם אתה רוצה לבצע פעולות ישירות על ההתקן, אתה יכול להשתמש בפונקציה DeviceIoControl.
למשל, נניח והיית רוצה לנעול את הסידי-רום כך שלא יכולים לפתוח אותו עד שתשחרר, היית צריך לבצע את הצעדים הבאים:
1. להשתמש בCreateFile ע"מ לקבל handle להתקן.
2. להשתמש בDeviceIoControl ע"מ לשלוח להתקן את הפעולה שאתה מעוניין לבצע (IOCTL_STORAGE_EJECTION_CONTROL במקרה שלנו)
3. בנוסף הפונקציה DeviceIoControl דורשת מספר פרמטרים אחרים (החשוב ביותר במקרה שלנו, הינו הפרמטר שבו אנחנו מעבירים מצביע למבנה מסוג PREVENT_MEDIA_REMOVAL, שקובע בעצם האם לאפשר eject או לא).
זאת דוגמא בסיסית, אם אתה רוצה שאני אכתוב דוגמא ותראה איך זה עובד, אז תגיד.
הסברתי לך איך בעצם ללכוד את האירועים של הכנסת/הוצאת דיסק מהסידירום, אבל אם תפרט מה אתה רוצה לעשות בידיוק, נוכל לעזור לך יותר.
בנוסף, לפני שאתה מנסה לבצע כל דבר, תעיף מבט על MSDN.
יש שם איזור שלם על Device IO.
בהצלחה.
|