Just like each for each device class there is a C structure in OIC, so for each device created in a program using OIC there is a device structure. The device structure is created (in the object_create method implemented in the device class) by allocating memory for it and initialising it. Once created the device is referred to by its pointer. Each device belongs to a class. Each device contains a pointer to its class. Any methods or commands implemented in the device's class can be executed by calling the method_finder and specifying the device.
Each device has its own copy of the device structure. This means each device has its own copy of the all data stored in the device structure. Programmers should be aware of this when defining the device structure. Any data which is common to all devices should be stored in the device's class structure. Devices only contain data not code. All code implemented in a class is common to all devices.