from pykd import *
import sys
union_DXGARG_SUBMITCOMMAND = createUnion("union_DXGARG", 0)
union_DXGARG_SUBMITCOMMAND.append("hDevice", baseTypes.VoidPtr)
union_DXGARG_SUBMITCOMMAND.append("hContext", baseTypes.VoidPtr)
dummy_struct = createStruct("DummyStruct", 0)
dummy_struct.append("LowPart", baseTypes.ULong)
dummy_struct.append("HighPart", baseTypes.Long)
u_struct = createStruct("u", 0)
u_struct.append("LowPart", baseTypes.ULong)
u_struct.append("HighPart", baseTypes.Long)
physical_address = createUnion("PHYSICAL_ADDRESS", 0)
physical_address.append("m_dummystruct", dummy_struct)
physical_address.append("m_ustruct", u_struct)
struct_DXGKARG_SUBMITCOMMAND = createStruct("_DXGKARG_SUBMITCOMMAND", 0)
struct_DXGKARG_SUBMITCOMMAND.append("m_union", union_DXGARG_SUBMITCOMMAND)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferSegmentId", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferPhysicalAddress", physical_address)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferSize", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferSubmissionStartOffset", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferSubmissionEndOffset", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("pDmaBufferPrivateData", baseTypes.VoidPtr)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferPrivateDataSize", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferPrivateDataSubmissionStartOffset", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferPrivateDataSubmissionEndOffset", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("SubmissionFenceId", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("VidPnSourceId", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("FlipInterval", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("Flags", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("EngineOrdinal", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("DmaBufferVirtualAddress", baseTypes.UInt4B)
struct_DXGKARG_SUBMITCOMMAND.append("NodeOrdinal", baseTypes.UInt4B)
def dump(address):
data = typedVar(struct_DXGKARG_SUBMITCOMMAND, address)
dprintln("\n")
dprintln(str(data))
address = sys.argv[1]
address = int(address, 16)
dump(address)