{"action":"created","issue":{"url":"https://api.github.com/repos/dokan-dev/dokany/issues/83","labels_url":"https://api.github.com/repos/dokan-dev/dokany/issues/83/labels{/name}","comments_url":"https://api.github.com/repos/dokan-dev/dokany/issues/83/comments","events_url":"https://api.github.com/repos/dokan-dev/dokany/issues/83/events","html_url":"https://github.com/dokan-dev/dokany/issues/83","id":110304385,"number":83,"title":"Dokan does not pass the full range of dwFlagsAndAttributes to the DOKAN_OPERATIONS.CreateFile callback","user":{"login":"Corillian","id":1821719,"avatar_url":"https://avatars.githubusercontent.com/u/1821719?v=3","gravatar_id":"","url":"https://api.github.com/users/Corillian","html_url":"https://github.com/Corillian","followers_url":"https://api.github.com/users/Corillian/followers","following_url":"https://api.github.com/users/Corillian/following{/other_user}","gists_url":"https://api.github.com/users/Corillian/gists{/gist_id}","starred_url":"https://api.github.com/users/Corillian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Corillian/subscriptions","organizations_url":"https://api.github.com/users/Corillian/orgs","repos_url":"https://api.github.com/users/Corillian/repos","events_url":"https://api.github.com/users/Corillian/events{/privacy}","received_events_url":"https://api.github.com/users/Corillian/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dokan-dev/dokany/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-10-07T19:58:52Z","updated_at":"2015-10-28T19:25:59Z","closed_at":null,"body":"User mode `CreateFile()` combines flags and attributes into a single 32-bit value called `dwFlagsAndAttributes ` however it gets split between two parameters, `FileAttributes` and `CreateOptions`, when `CreateFile()` gets translated into its kernel mode equivalent `ZwCreateFile()`. Dokan.dll `DispatchCreate()` does not translate the kernel mode `ZwCreateFile()` `CreateOptions ` back into their user mode `CreateFile()` `dwFlagsAndAttributes ` equivalents which results in these values being lost."},"comment":{"url":"https://api.github.com/repos/dokan-dev/dokany/issues/comments/151963851","html_url":"https://github.com/dokan-dev/dokany/issues/83#issuecomment-151963851","issue_url":"https://api.github.com/repos/dokan-dev/dokany/issues/83","id":151963851,"user":{"login":"Corillian","id":1821719,"avatar_url":"https://avatars.githubusercontent.com/u/1821719?v=3","gravatar_id":"","url":"https://api.github.com/users/Corillian","html_url":"https://github.com/Corillian","followers_url":"https://api.github.com/users/Corillian/followers","following_url":"https://api.github.com/users/Corillian/following{/other_user}","gists_url":"https://api.github.com/users/Corillian/gists{/gist_id}","starred_url":"https://api.github.com/users/Corillian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Corillian/subscriptions","organizations_url":"https://api.github.com/users/Corillian/orgs","repos_url":"https://api.github.com/users/Corillian/repos","events_url":"https://api.github.com/users/Corillian/events{/privacy}","received_events_url":"https://api.github.com/users/Corillian/received_events","type":"User","site_admin":false},"created_at":"2015-10-28T19:25:59Z","updated_at":"2015-10-28T19:25:59Z","body":"Addressing @billziss-gh's concerns:\r\n\r\n1. As mentioned above I don't consider this an issue. With the helper function I created this is a trivial change which is clearly documented in the Mirror example code.\r\n2. I agree with you that we should look into removing those functions however I kept my PR within the scope of #83. I have no problem with increasing the scope of the PR to cover those changes - particularly given that we're already instituting a breaking API change. We could also create a separate issue to cover those changes.\r\n3. The user mode code is still technically the driver level. We should not remove information relevant to the implementation of a file system driver just because we think it's hard to understand. That's how we ended up in this mess with missing flags in the first place. It's better to provide all of the information that may be needed along with helper functions to cover the most common usage scenarios.\r\n4. That's a pretty arbitrary measurement of danger\r\n\r\nI don't see the point in having a reserved parameter when you know you're going to need to solve that problem anyway."}}