aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/m4/lib/platform/win64/win_sdk10.h
blob: 76e5c86ccd18844e1b0de8d63bd000cb2e6eca2f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#pragma once

#if defined(_MSC_VER)

#include <ntverp.h>

// Check for Windows SDK 10+
#if defined(VER_PRODUCTBUILD) && VER_PRODUCTBUILD >= 9600
#define WIN_SDK10 1
#else
#define WIN_SDK10 0
#endif

// Since Windows SDK 10 FILE is an internal opaque structure with no backward compatibility.
// This code has been transplanted from Windows SDK
// corecrt_internal_stdio.h

// __crt_stdio_stream_data
#if WIN_SDK10
typedef struct {
    union {
        void* _public_file;
        char* _ptr;
    };

    char* _base;
    int _cnt;
    long _flags;
    long _file;
    int _charbuf;
    int _bufsiz;
    char* _tmpfname;
    //CRITICAL_SECTION _lock;
} TWinSdk10File;

enum EWinSdk10ModeBits {
    WIN_SDK10_IOREAD = 0x0001,
    WIN_SDK10_IOWRITE = 0x0002,
    WIN_SDK10_IOUPDATE = 0x0004,
    WIN_SDK10_IOEOF = 0x0008,
    WIN_SDK10_IOERROR = 0x0010,
    WIN_SDK10_IOCTRLZ = 0x0020,
    WIN_SDK10_IOBUFFER_CRT = 0x0040,
    WIN_SDK10_IOBUFFER_USER = 0x0080,
    WIN_SDK10_IOBUFFER_SETVBUF = 0x0100,
    WIN_SDK10_IOBUFFER_STBUF = 0x0200,
    WIN_SDK10_IOBUFFER_NONE = 0x0400,
    WIN_SDK10_IOCOMMIT = 0x0800,
    WIN_SDK10_IOSTRING = 0x1000,
    WIN_SDK10_IOALLOCATED = 0x2000,
};
#endif

#endif