The following diagram shows how various transactions and tasks connect to the file system:
Figure 1-1 Transaction Model
The connection is an entity supplied by the OS. zRootKey creates the owner and the default task and transaction and returns the first key that has a NULL context (currently does not map to a directory or a file). New tasks can be created by calling zBeginTask.
If you want to use transactions, you must have transactions turned on for the volume. Every transaction is associated with a task, so a task ID must be supplied when a transaction is used. For some transactioned operations, the task ID is implied by the object being transactioned, such as for zRead and zWrite. When the key was created, a task ID was required and bound to the open file object during the zCreate or zOpen request. Because transactions are bound to a particular task, multiple tasks cannot use the same transaction.
The owner and door entities are transparent to the user and do not show in the functions.