Altering DirectX matrices directly with transforms.

I'm coming across a lot of instances when I would have an existing D3DXMatrix representing the transform (translation, rotation, and scaling) of an object. However, I often need to alter the transform by a very simple transom, like moving it on the y axis a certain amount or rotating it about the x axis by a certain amount.

I suppose I could put the transom i want into a vector or quaternion, make a matrix out of that, and multiply the existing matrix by that to get the final transform, but that seems wasteful. Is there an easier way to apply a vector or quaternion to a matrix?

Also, for directx functions that use matrices, such as SetTransform, if we alter or delete the matrix after we have sent its pointer to the function, will that mess things up, or is does the function just use it for multiplication and then doesn't care about what happens to the matrix afterward (meaning that you're have to keep calling the function and sending the matrix every time you want to alter it)?

Thanks!