In DirectX 2, palettes can be shared between multiple surfaces. The same palette can be set on the front and back buffers of a flipping chain or shared between multiple texture surfaces. When a palette is attached to a surface with the IDirectDrawSurface::SetPalette method, the surface increments the reference count of that palette. When the reference count of the surface reaches 0, it will decrement the reference count of the attached palette. In addition, if a palette is detached from a surface by calling IDirectDrawSurface::SetPalette with a NULL palette interface pointer, the reference count of the surface's palette will be decremented.
Note If the IDirectDrawSurface::SetPalette method is called several times consecutively for the same surface with the same palette, the reference count for the palette will be incremented only once. Subsequent calls will not affect the palette's reference count.