Alexandre Julliard wrote:
It doesn't seem to me there is much to marshal in the OBJECT_ATTRIBUTES structure apart from the security descriptor, so I'm not sure what you plan to do.
The useful fields are RootDirectory, ObjectName, Attributes (for the OBJ_INHERIT and OBJ_CASE_INSENSITIVE flags) and SecurityDescriptor. These are handled individually by server calls that use them, or not at all in some cases (for example the RootDirectory and OBJ_CASE_INSENSITIVE flag). Also, all of these should by handled by the create_object or find_object call on the server side, so it makes sense to keep them together.
Also I'm not convinced at all that you can avoid making the namespace know about case sensitivity; if you allow the caller to specify it, you can create names that differ only in case which will break callers that do case insensitive lookups.
Testing on Windows shows that case insensitive lookups use the last added object with that name. For example: Create event with name "Test" Create mutex with name "test" Open event with case insensitive name "TEst" -> fails with STATUS_OBJECT_TYPE_MISMATCH Open mutex with case insensitive name "TEst" -> succeeds
Rob