Generally you supply the update method.
If you use ID3DXSkinInfo::UpdateSkinnedMesh() then you'll more than likely want to add a mesh to recieve the updated data, if you're using D3DXMESHCONTAINER then just inherit, add the mesh, then when loading just clone. The nice thing about this method is that the maths is done for you and you can have as many bones as you like. The bad thing is you use two meshes, but with memory sizes these days a doubt that'll be too much of a problem, and that you're copying data from one mesh to the other.
If you use a vertex shader to do the animation you'll need to use something like ID3DXSkinInfo::ConvertToBlendedMesh() to get a usable mesh. The nice thing here is that you're using only one mesh, the vertices are being transformed in the shader, so there's no copying. The bad thing is you supply the maths and you're limited to the number of bones allowed, 60 odd, I've forgotten, for shader 2.