volatile is legal (and used now!) in a typedef struct {}.
diff --git a/tools/winapi/winapi_parser.pm b/tools/winapi/winapi_parser.pm
index ee2443c..368853c 100644
--- a/tools/winapi/winapi_parser.pm
+++ b/tools/winapi/winapi_parser.pm
@@ -359,8 +359,9 @@
$statements = undef;
} elsif($in_type) {
if(/^\s*((?:(?:FAR\s*)?\*\s*(?:RESTRICTED_POINTER\s+)?)?
+ (?:volatile\s+)?
(?:\w+|WS\(\w+\))\s*
- (?:\s*,\s*(?:(?:FAR\s*)?\*+\s*(?:RESTRICTED_POINTER\s+)?)?(?:\w+|WS\(\w+\)))*\s*);/sx) {
+ (?:\s*,\s*(?:(?:FAR\s*)?\*+\s*(?:RESTRICTED_POINTER\s+)?)?(?:volatile\s+)?(?:\w+|WS\(\w+\)))*\s*);/sx) {
my @parts = split(/\s*,\s*/, $1);
&$type_end([@parts]);
} elsif(/;/s) {