+/**\r
+ Get the contents of the node Node of the PV device. Returns the contents in\r
+ *Result which should be freed after use.\r
+\r
+ @param This A pointer to XENBUS_PROTOCOL instance.\r
+ @param Transaction The XenStore transaction covering this request.\r
+ @param Node The basename of the file to read.\r
+ @param Result The returned contents from this file.\r
+\r
+ @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value\r
+ indicating the type of failure.\r
+\r
+ @note The results buffer is malloced and should be free'd by the\r
+ caller.\r
+**/\r
+typedef\r
+XENSTORE_STATUS\r
+(EFIAPI *XENBUS_XS_READ)(\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST CHAR8 *Node,\r
+ OUT VOID **Result\r
+ );\r
+\r
+/**\r
+ Get the contents of the node Node of the PV device's backend. Returns the\r
+ contents in *Result which should be freed after use.\r
+\r
+ @param This A pointer to XENBUS_PROTOCOL instance.\r
+ @param Transaction The XenStore transaction covering this request.\r
+ @param Node The basename of the file to read.\r
+ @param Result The returned contents from this file.\r
+\r
+ @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value\r
+ indicating the type of failure.\r
+\r
+ @note The results buffer is malloced and should be free'd by the\r
+ caller.\r
+**/\r
+typedef\r
+XENSTORE_STATUS\r
+(EFIAPI *XENBUS_XS_BACKEND_READ)(\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST CHAR8 *Node,\r
+ OUT VOID **Result\r
+ );\r
+\r
+/**\r
+ Print formatted write to a XenStore node.\r
+\r
+ @param This A pointer to XENBUS_PROTOCOL instance.\r
+ @param Transaction The XenStore transaction covering this request.\r
+ @param Directory The dirname of the path to read.\r
+ @param Node The basename of the path to read.\r
+ @param Format AsciiSPrint format string followed by a variable number\r
+ of arguments.\r
+\r
+ @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value\r
+ indicating the type of write failure.\r
+**/\r
+typedef\r
+XENSTORE_STATUS\r
+(EFIAPI *XENBUS_XS_PRINTF) (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST CHAR8 *Directory,\r
+ IN CONST CHAR8 *Node,\r
+ IN CONST CHAR8 *Format,\r
+ ...\r
+ );\r
+\r
+/**\r
+ Remove a node or directory (directories must be empty) of the PV driver's\r
+ subdirectory.\r
+\r
+ @param This A pointer to XENBUS_PROTOCOL instance.\r
+ @param Transaction The XenStore transaction covering this request.\r
+ @param Node The basename of the node to remove.\r
+\r
+ @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value\r
+ indicating the type of failure.\r
+**/\r
+typedef\r
+XENSTORE_STATUS\r
+(EFIAPI *XENBUS_XS_REMOVE) (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST CHAR8 *Node\r
+ );\r
+\r
+/**\r
+ Start a transaction.\r
+\r
+ Changes by others will not be seen during the lifetime of this\r
+ transaction, and changes will not be visible to others until it\r
+ is committed (XsTransactionEnd).\r
+\r
+ @param This A pointer to XENBUS_PROTOCOL instance.\r
+ @param Transaction The returned transaction.\r
+\r
+ @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value\r
+ indicating the type of failure.\r
+**/\r
+typedef\r
+XENSTORE_STATUS\r
+(EFIAPI *XENBUS_XS_TRANSACTION_START)(\r
+ IN XENBUS_PROTOCOL *This,\r
+ OUT XENSTORE_TRANSACTION *Transaction\r
+ );\r
+\r
+/**\r
+ End a transaction.\r
+\r
+ @param This A pointer to XENBUS_PROTOCOL instance.\r
+ @param Transaction The transaction to end/commit.\r
+ @param Abort If TRUE, the transaction is discarded\r
+ instead of committed.\r
+\r
+ @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value\r
+ indicating the type of failure.\r
+**/\r
+typedef\r
+XENSTORE_STATUS\r
+(EFIAPI *XENBUS_XS_TRANSACTION_END) (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN XENSTORE_TRANSACTION Transaction,\r
+ IN BOOLEAN Abort\r
+ );\r
+\r