Não consigo imaginar por que a Microsoft lançaria o exemplo do ramdisk sem definir suas permissões, mas o fizeram ... por isso, o padrão é usar permissões somente de administrador.
Você precisará chamar WdfDeviceInitAssignSDDLString () de dentro de RamDiskEvtDeviceAdd (), após a chamada para WdfDeviceInitAssignName () e antes da chamada para WdfDeviceCreate (). Observe que essa função só está disponível se você vincular ao wdmsec.lib, o que será necessário incluir no arquivo "sources". E você provavelmente desejará usar uma das strings de definição da ACL em wdmsec.h, embora você possa escrever a sua própria se quiser saber como é sua estrutura.
Outro problema com o driver de amostra ramdisk da Microsoft é que ele não funcionará acima de 32MB (na verdade, ele funcionará somente para até 31.99 MB) porque o código não manipula o estouro do bootSector de 16 bits - > bsectores; Além de 0x0000FFFF total de setores, ele deve definir betsSectors de bootSector- > para zero e usar os bsHugeSectors de 32 bits bitSector- > bsHen.
Observe que, após corrigir o problema de bootSector- & gs; bsHugeSectors, você está se preparando para ficar sem memória kernel não-paginada se não for cuidadoso ... embora na maioria dos casos você esteja seguro até 96MB desde A maioria dos casos (modernos) do seu sistema WinXP tem 128 MB de memória kernel não-paginável disponível. Só não esqueça que o seu driver de disco ram não é a única coisa que usa o pool não paginado.