How to access cudaArray in kernel?

I wonder is there a way to access cudaArray in kernel function?

For example, I need to copy my data from host to a cudaArray on GPU, and bind it with texture so that I can read those data with tex2D() in my kernel function.

What if I want to modify those data as well? I understand that once binded with texture those data is read-only. If I unbind it, can I then somehow access them inside a kernel? Is there some function to get the address and pitch of this 2D array?

Thanks!