For a project I'm in need of a parseable version of the Windows API (i.e. the functions described in msdn).I tried to crawl it myself, but there seem to be more than 5 formats for signatures and parameters used. The MsdnApiExtractor project does not seem to work anymore.I've seen some projects using help files, but I can't seem anything to parse .hlp files. Sadly, using the header files is no alternative, since it lacks argument names.I'm mainly interested in the High-Level API (e.g. ReadFile, CloseHandle etc.)edit:Seems I've been looking at the wrong header files
Parseable Windows API documentation
windows;api;documentation
this should be a comment but the content is long for a comment so an answer your statement /subsequent edit / that header files does not contain names is not correct :\>echo %cd%E:\ewdk\Program Files\Windows Kits\10\Include\10.0.10586.0\um:\>grep -irn -B 3 -A 3 GetLocalTime  *sysinfoapi.h-180-WINBASEAPIsysinfoapi.h-181-VOIDsysinfoapi.h-182-WINAPIsysinfoapi.h:183:GetLocalTime(sysinfoapi.h-184-    _Out_ LPSYSTEMTIME lpSystemTimesysinfoapi.h-185-    );sysinfoapi.h-186---in fact i have around 49547 apis parsed from ewdk win10 headers:\>wc -l uniqtags.txt49547 uniqtags.txt here is what it spits out for your GetLocalTime:\>grep -n GetLocalTime uniqtags.txt9715:GetLocalTime       ( _Out_ LPSYSTEMTIME lpSystemTime )15926:InternetDebugGetLocalTime ( _Out_ SYSTEMTIME * pstLocalTime, _Out_opt_ DWORD * pdwReserved )here is what the possibly undocumented zwrecover functions with arguments parsed from headers look like:\>grep -n ZwRec uniqtags.txt33290:ZwRecoverEnlistment       ( _In_ HANDLE EnlistmentHandle, _In_opt_ PVOID EnlistmentKey )33291:ZwRecoverResourceManager  ( _In_ HANDLE ResourceManagerHandle )33292:ZwRecoverTransactionManager       ( _In_ HANDLE TransactionManagerHandle )just to make it clear  if you want to print out all the Zw.Enlist. functions with thier arguments you could do some thing like this :\>for /f %I in ( 'awk {print $1} uniqtags.txt ^| grep -i Zw ^| grep  Enlist ')  do grep %I uniqtags.txt:\>grep ZwCommitEnlistment uniqtags.txtZwCommitEnlistment      ( _In_ HANDLE EnlistmentHandle, _In_opt_ PLARGE_INTEGER TmVirtualClock ):\>grep ZwCreateEnlistment uniqtags.txtZwCreateEnlistment      ( _Out_ PHANDLE EnlistmentHandle, _In_ ACCESS_MASK DesiredAccess, _In_ HANDLE ResourceManagerHandle, _In_ HANDLE TransactionHandle, _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, _In_opt_ ULONG CreateOptions, _In_ NOTIFICATION_MASK NotificationMask, _In_opt_ PVOID EnlistmentKey ):\>grep ZwOpenEnlistment uniqtags.txtZwOpenEnlistment        ( _Out_ PHANDLE EnlistmentHandle, _In_ ACCESS_MASK DesiredAccess, _In_ HANDLE RmHandle, _In_ LPGUID EnlistmentGuid, _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes ):\>grep ZwPrePrepareEnlistment uniqtags.txtZwPrePrepareEnlistment  ( _In_ HANDLE EnlistmentHandle, _In_opt_ PLARGE_INTEGER TmVirtualClock ):\>grep ZwPrepareEnlistment uniqtags.txtZwPrepareEnlistment     ( _In_ HANDLE EnlistmentHandle, _In_opt_ PLARGE_INTEGER TmVirtualClock ):\>grep ZwQueryInformationEnlistment uniqtags.txtZwQueryInformationEnlistment    ( _In_ HANDLE EnlistmentHandle, _In_ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass, _Out_writes_bytes_(EnlistmentInformationLength) PVOID EnlistmentInformation, _In_ ULONG EnlistmentInformationLength, _Out_opt_ PULONG ReturnLength ):\>grep ZwReadOnlyEnlistment uniqtags.txtZwReadOnlyEnlistment    ( _In_ HANDLE EnlistmentHandle, _In_opt_ PLARGE_INTEGER TmVirtualClock ):\>grep ZwRecoverEnlistment uniqtags.txtZwRecoverEnlistment     ( _In_ HANDLE EnlistmentHandle, _In_opt_ PVOID EnlistmentKey ):\>grep ZwRollbackEnlistment uniqtags.txtZwRollbackEnlistment    ( _In_ HANDLE EnlistmentHandle, _In_opt_ PLARGE_INTEGER TmVirtualClock ):\>grep ZwSetInformationEnlistment uniqtags.txtZwSetInformationEnlistment      ( _In_ HANDLE EnlistmentHandle, _In_ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass, _In_reads_bytes_(EnlistmentInformationLength) PVOID EnlistmentInformation, _In_ ULONG EnlistmentInformationLength ):\>