cpp_quote("#include <winapifamily.h>")

#pragma region Desktop Family
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")

// BUGBUG: Should be in wtypes.idl
#ifndef FARPROC
typedef int (__stdcall FARPROC)();
#endif

// BUGBUG: Should be in wtypes.idl
#ifndef PBYTE
typedef BYTE *PBYTE;
#endif

// BUGBUG: Should be in wtypes.idl
#ifndef PDWORD
typedef DWORD *PDWORD;
#endif

// BUGBUG: Should be in wtypes.idl
#ifndef size_t
typedef unsigned int size_t;
#endif

// BUGBUG: Should be in wtypes.idl
#ifndef VOID
typedef void VOID;
#endif

// BUGBUG: Should be in wtypes.idl
#ifndef ULONG_PTR
#if defined(_WIN64)
typedef unsigned __int64 ULONG_PTR;
#else
typedef unsigned long ULONG_PTR;
#endif
#endif

#ifndef BASETYPES
#define BASETYPES
typedef unsigned long ULONG;
typedef ULONG *PULONG;
typedef unsigned short USHORT;
typedef USHORT *PUSHORT;
typedef unsigned char UCHAR;
typedef UCHAR *PUCHAR;
typedef char *PSZ;
#endif  /* !BASETYPES */

typedef WCHAR *NWPSTR, *LPWSTR, *PWSTR;
typedef const WCHAR *LPCWSTR, *PCWSTR;

#define CMS_PKCS7 1
#include "wincrypt.h"

cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")
#pragma endregion
