The adapted data for a domain is called the DIB, for Derivative Information Block. There is a fixed array of DIBs. There is a pointer in the header of the domain root to the DIB and a pointer in the DIB to the domain root. The only time that a domain root is exclusively locked is when the domain is actually running on a CPU or in those brief intervals where kernel code is actually involved with a transaction for that domain. These transactions never involve I/O. It is thus always possible to find or steal a DIB frame from the array.
The DIB includes space to hold register values while the domain is not running. The 370 version includes space for the floating point registers too but see this idea for splitting off floating point state. The 370 domain logically comprises three nodes including a node for the general registers and floating point state and another node as the general keys node. The number keys for the node with register values are all involved DR. Slot 13 of the domain root node holds a hook key while there is a process in the domain. If some domain looks there, however, it will see DK(1).