$dt = <<EOT
nt!_UNICODE_STRING
+0x000 Length : Uint2B
+0x002 MaximumLength : Uint2B
+0x004 Buffer : Ptr32 Uint2B
EOT
;
$dt =~ /(\w+)!_(\w+)\n/;
$module_name = $1;
$symbol_name = $2;
print "typedef struct /*" . $module_name . "!*/" . "_" . $symbol_name . "\n";
print "{" . "\n";
while ($' =~ /.*(\+0x\w\w\w) (\w+).*: (\w+)\n?/)
{
printf(" %-20s%-20s// %s\n", $3, ($2 . ";"), $1);
}
print "} " . $symbol_name . ", *P" . $symbol_name . ";\n";