You can use LockRect with textures in the default pool under 9Ex.
Other alternatives include using UpdateTexture or UpdateSurface from a D3DPOOL_SYSTEMMEM source.
Under Vista+ (which I assume you're targetting since you're using 9Ex) you can supply the texture data via the pSharedHandle arg to CreateTexture; per the documentation:
In Windows Vista CreateTexture can create a texture from a system memory pointer allowing the application more flexibility over the use, allocation and deletion of the system memory.
Caveat: I haven't done this and can't vouch for it.