管理者権限でしかアクセスできません

DDKのPortioを参考にしてKMDFでPCI用のドライバを作成しました。
ところが通常のレベルでCreateFileを行うと、Access Deniedでデバイスをオープンできません。
管理者権限でアプリを動作させると入出力も含め正常に動作します。
細かく調べると、GHENERIC_READのみなら通常レベルでもCreateFileができ、GENERIC_WRITEを追加すると
拒否されることがわかりました。

INFファイルにはD:Pでセキュリティレベルを設定しており、ここをいろいろ変えましたが
効果はありませんでした。
またSymbolicNameスタイルとGUIDによるDeviceInterfaceスタイルの両方を試しましたが、
どちらも同じです。
ターゲットOSはWindows7の32ビットと64ビットです。

WEB上には似たような書き込みが多数ありましたが、どれも解決まで至ったものはみあたりませんでした。
不思議なのはPORTIOサンプルを修正しないでビルドしても同じようにCreateFileできないことです。
サンプル自体が悪いのかな、という気がします。

同じような経験をした方はいらっしゃらないでしょうか?
もしいるようでしたら、解決のヒントをいただけると幸いです。

現象を確認して解決しました

7.1.0のPortIOのINF(必ずReleaseNotesの修正を行って下さい)で現象を確認したので、解決策を示します。
PortIOドライバで、非管理者の一般ユーザーがデバイスアクセスできるようにするには、例えば以下のようにします。

1.ClassGUIDの変更
最初にSampleClassが作られた時のINF記述でアクセス権が決まるので、自分で新しいクラス(GUID)を作ります。
例:
;;ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
ClassGuid={78A1C341-4539-11d3-B88D-29C04FAD5171}

2.Classのアクセス権の設定
;;HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GA;;;BA)
HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GA;;;BA)(A;;GA;;;LS)(A;;GA;;;WD)"

参考:http://msdn.microsoft.com/ja-jp/windows/hardware/gg487483

3.デバイスのセキュリティの設定
WD:World (EveryOne)のセキュリティの設定はCLASSだけではうまく行かない様子なので、次の様にデバイスノードのレジストリにも
権限を付加します。

[PortIO_Inst.NT]
CopyFiles=PortIO.CopyFiles
LogConfig=PortIO.LC0, PortIO.LC1
AddReg=PortIO_Inst.AddReg ;; 今回追加

[PortIO_Inst.AddReg] ;; 今回追加
HKR,,DeviceCharacteristics,0x10001,0x100 ;; 今回追加
HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GA;;;BA)(A;;GA;;;LS)(A;;GA;;;WD)"  ;; 今回追加

これでバッチリOKです。

ありがとうございました

hidaka 様、
解決策、ありがとうございます。
投稿後、しばらくして解決できたため、訪問が遅れ、お礼も遅れてしまい、申し訳ありません。
解決策は同様にデバイス側のセキュリティを追加することでした。

今後ともよろしくお願いいたします