Я не уявляю, чому Microsoft випустить зразок ramdisk, не встановивши його дозволів, але вони це зробили ... тож він за замовчуванням використовував дозволи лише для адміністратора.
Вам потрібно буде зателефонувати WdfDeviceInitAssignSDDLString () зсередини RamDiskEvtDeviceAdd (), після виклику до WdfDeviceInitAssignName () та перед викликом до WdfDeviceCreate (). Зауважте, що ця функція доступна лише в тому випадку, якщо ви посилаєтесь на файл wdmsec.lib, який потрібно буде додати до файлу "джерела". І, ймовірно, ви хочете використовувати один з рядків визначення ACL у wdmsec.h, хоча ви можете написати свій власний, якщо ви хочете дізнатися його структуру.
Інша проблема з драйвером зразка Microsoft ramdisk полягає в тому, що він не працюватиме понад 32 Мб (дійсно, він буде працювати лише до 31,99 МБ), оскільки код не обробляє переповнення 16-бітного bootSector-> bsSectors; виходячи із загального сектору 0x0000FFFF, слід встановити bootSector-> bsSectors до нуля і використовувати замість цього 32-бітний bootSector-> bsHugeSectors.
Зауважте, що після виправлення проблеми bootSector-> bsHugeSectors, ви налаштовуєте себе на те, щоб вичерпати пам'ять ядра непропанованого ядра, якщо ви не обережні ... хоча у більшості випадків ви безпечні до 96 Мб, оскільки в більшості (сучасні) випадків, коли у вашій системі WinXP доступно 128 МБ пам'яті непрогранованого ядра. Просто не забувайте, що ваш драйвер ramdisk - це не єдине, що використовує пул, що не використовується на сторінці.