I need to be able to load and save their data, so... (PS I am using VB6, DX8)

* I have found functions that I can use to get/set the raw vertex data from a D3DXMesh object, which is a start. However, this does not preserve the submesh information. How can I get/set this, or is it possible to do so?

* If it isn't possible, then how could I read in a .x file myself in order to load up a 3d mesh into a custom class object that I would write for this? The mssdk reference material only helps to make this more confusing to me. In other words, how would I open up the .x file and parse the data?

If the first one is possible, I would really prefer it, as it would be a lot easier for me.
Note that once I have this data, I am writing it to my own binary resource file and then reading it in later. I can already handle the materials and the textures, so it is just the 3d data itself (and particularly the submesh data) I am worried about.