// R - XENBUS_RANGE_SET_INTERFACE
// C - XENBUS_CACHE_INTERFACE
// G - XENBUS_GNTTAB_INTERFACE
+// U - XENBUS_UNPLUG_INTERFACE
+// CO - XENBUS_CONSOLE_INTERFACE
// EM - XENFILT_EMULATED_INTERFACE
-// REVISION S SI E D ST R C G U EM
-#define DEFINE_REVISION_TABLE \
- DEFINE_REVISION(0x08000009, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1), \
- DEFINE_REVISION(0x0800000A, 1, 2, 5, 1, 1, 1, 1, 1, 1, 1), \
- DEFINE_REVISION(0x0800000B, 1, 2, 5, 1, 2, 1, 1, 2, 1, 1), \
- DEFINE_REVISION(0x09000000, 1, 2, 5, 1, 2, 1, 1, 2, 1, 1), \
- DEFINE_REVISION(0x09000001, 1, 2, 6, 1, 2, 1, 1, 2, 1, 1)
+// REVISION S SI E D ST R C G U CO EM
+#define DEFINE_REVISION_TABLE \
+ DEFINE_REVISION(0x08000009, 1, 2, 4, 1, 1, 1, 1, 1, 1, 0, 1), \
+ DEFINE_REVISION(0x0800000A, 1, 2, 5, 1, 1, 1, 1, 1, 1, 0, 1), \
+ DEFINE_REVISION(0x0800000B, 1, 2, 5, 1, 2, 1, 1, 2, 1, 0, 1), \
+ DEFINE_REVISION(0x09000000, 1, 2, 5, 1, 2, 1, 1, 2, 1, 0, 1), \
+ DEFINE_REVISION(0x09000001, 1, 2, 6, 1, 2, 1, 1, 2, 1, 1, 1)
#endif // _REVISION_H
return FALSE;
}
-#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _EM) \
+#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _CO, _EM) \
(_N)
static DWORD DeviceRevision[] = {
IN PXENBUS_FDO Fdo
);
+#include "console.h"
+
+extern PXENBUS_CONSOLE_CONTEXT
+FdoGetConsoleContext(
+ IN PXENBUS_FDO Fdo
+ );
+
extern NTSTATUS
FdoDispatch(
IN PXENBUS_FDO Fdo,
ULONG CacheInterfaceVersion;
ULONG GnttabInterfaceVersion;
ULONG UnplugInterfaceVersion;
+ ULONG ConsoleInterfaceVersion;
ULONG EmulatedInterfaceVersion;
} XENBUS_PDO_REVISION, *PXENBUS_PDO_REVISION;
-#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _EM) \
- { (_N), (_S), (_SI), (_E), (_D), (_ST), (_R), (_C), (_G), (_U), (_EM) }
+#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _CO, _EM) \
+ { (_N), (_S), (_SI), (_E), (_D), (_ST), (_R), (_C), (_G), (_U), (_CO), (_EM) }
static XENBUS_PDO_REVISION PdoRevision[] = {
DEFINE_REVISION_TABLE
ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
Revision->UnplugInterfaceVersion == XENBUS_UNPLUG_INTERFACE_VERSION_MAX));
+ ASSERT(IMPLY(Revision->ConsoleInterfaceVersion != 0,
+ Revision->ConsoleInterfaceVersion >= XENBUS_CONSOLE_INTERFACE_VERSION_MIN));
+ ASSERT(IMPLY(Revision->ConsoleInterfaceVersion != 0,
+ Revision->ConsoleInterfaceVersion <= XENBUS_CONSOLE_INTERFACE_VERSION_MAX));
+ ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
+ Revision->ConsoleInterfaceVersion == XENBUS_CONSOLE_INTERFACE_VERSION_MAX));
+
ASSERT3U(Revision->EmulatedInterfaceVersion, >=, XENFILT_EMULATED_INTERFACE_VERSION_MIN);
ASSERT3U(Revision->EmulatedInterfaceVersion, <=, XENFILT_EMULATED_INTERFACE_VERSION_MAX);
ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
"CACHE v%u "
"GNTTAB v%u "
"UNPLUG v%u "
+ "CONSOLE v%u "
"EMULATED v%u\n",
Revision->Number,
Revision->SuspendInterfaceVersion,
Revision->CacheInterfaceVersion,
Revision->GnttabInterfaceVersion,
Revision->UnplugInterfaceVersion,
+ Revision->ConsoleInterfaceVersion,
Revision->EmulatedInterfaceVersion);
}
}
DEFINE_PDO_QUERY_INTERFACE(Cache)
DEFINE_PDO_QUERY_INTERFACE(Gnttab)
DEFINE_PDO_QUERY_INTERFACE(Unplug)
+DEFINE_PDO_QUERY_INTERFACE(Console)
struct _INTERFACE_ENTRY {
const GUID *Guid;
{ &GUID_XENBUS_CACHE_INTERFACE, "CACHE_INTERFACE", PdoQueryCacheInterface },
{ &GUID_XENBUS_GNTTAB_INTERFACE, "GNTTAB_INTERFACE", PdoQueryGnttabInterface },
{ &GUID_XENBUS_UNPLUG_INTERFACE, "UNPLUG_INTERFACE", PdoQueryUnplugInterface },
+ { &GUID_XENBUS_CONSOLE_INTERFACE, "CONSOLE_INTERFACE", PdoQueryConsoleInterface },
{ &GUID_XENFILT_EMULATED_INTERFACE, "EMULATED_INTERFACE", PdoDelegateIrp },
{ NULL, NULL, NULL }
};