Christoph Frick wrote:
The old code copied the default constant format and applied caclulate_ids on it. So the dwTypes where set with proper MAKEINSTANCE(...) calls. So an app, that requested later its own data format with SetDataFormat using the data from EnumObjects. After the change now the default const has ANY_INSTANCE all over the place but the app request a certain instance - so on SetDataFormat there are no matches.
So the big question is: is our SetDataFormat wrong or is this patch wrong? Please advice.
I know about this problem. The test I added actually has that sort of custom data format. The thing is, I'm not sure yet how to fix this properly. I don't want to just copy default data format, modify it and use it as internal format. This is only one place that needs to be fixed. But there are several other areas that need this data format with some additional requirements.
The biggest problem is we don't properly "initialize" device. We should create our own data format structure that has only found objects. So we don't need to do it over and over again in EnumObjects or GetObjectInfo.
Also, because we create user format during device creation, we can not check if user actually set data format.
Vitaliy Margolen.