PureBasic 4.61 : Informations sur les modifications des structures WINAPI.

Le , par comtois, Responsable Purebasic
Danilo a contrôlé et corrigé toutes les structures windows présentes dans les fichiers RESIDENT pour la version 4.61.

I checked, corrected and changed all WinAPI structures for PB4.61 (beta). Here some informations about it.

There are quite some changes:

  • 4 structures have members removed because they are not Win95 compatible, please read below
  • 2 structures have been renamed because of spelling mistakes before
  • 3 structures were added because required to fix other structures some structure members had to be rename, please read below


About the removed members that are > Win95 only:
The PB team is thinking about a more general solution to this problem because many more structures have new members for new versions of Windows.
Please be patient, only 4 structures were changed because of this.
For now you have to create new structures with Extends if you used one of this structures.

About the renamed members for many structures:
If your source uses one of the structures with renamed members, the compiler will give you an error about missing/unknown member in your source.
If this is the case, please open the structure viewer tool and check the members or look in the list below.

I wrote some small tools with PureBasic and C++ to automate the checking
of WinAPI structures a little bit.
With this tools the PB team can check all included WinAPI structures for:

  • PureBasic Windows 32bit
  • PureBasic Windows 32bit, Unicode
  • PureBasic Windows 64bit
  • PureBasic Windows 64bit, Unicode


There are 3 checks that are done between VisualC++ and PureBasic and for all 4 modes:
  • compare the structure size
  • compare the size of all members within the structure
  • compare the offset of all members within the structure


To automate this checks with C++ and PB tools, PB structures and
its members need to have exactly the same names/spelling for members
as in the MS Windows Platform SDK.
This is the reason some structure members had to be renamed.
It makes it easier to automate the WinAPI structure checking. Now and for future versions of PureBasic.

Here is a complete list for reference with all my changes:
(i hope Fred didn't change anything after that )

Code : Sélectionner tout
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
;>----------------------------------------------------------------------------------- 
; 
;- removed members For Win95 compatibility (WINVER = 0x0400) 
; 
;>----------------------------------------------------------------------------------- 
 
MENUITEMINFO        \ hbmpItem.i removed, WINVER >= 0x0500, = Windows 2000+ 
 
LV_ITEM             \ iGroupId   removed, WINVER >= 0x0501, = Windows XP+ 
                    \ cColumns   removed, WINVER >= 0x0501, = Windows XP+ 
                    \ puColumns  removed, WINVER >= 0x0501, = Windows XP+ 
                    \ piColFmt   removed, WINVER >= 0x0600, = Windows Vista+ 
                    \ iGroup     removed, WINVER >= 0x0600, = Windows Vista+ 
 
LV_HITTESTINFO      \ iGroup     remoced, WINVER >= 0x0600, = Windows Vista+ 
 
LV_COLUMN           \ cxMin      remoced, WINVER >= 0x0600, = Windows Vista+ 
                    \ cxDefault  remoced, WINVER >= 0x0600, = Windows Vista+ 
                    \ cxIdeal    remoced, WINVER >= 0x0600, = Windows Vista+ 
 
;>----------------------------------------------------------------------------------- 
;- renamed structures 
;>----------------------------------------------------------------------------------- 
 
EMRSAVEDC           renamed, was EMREMRSAVEDC 
EMRPOLYBEZIERTO16   renamed, was EMRPLOYBEZIERTO16 
 
;>----------------------------------------------------------------------------------- 
;- added structures 
;>----------------------------------------------------------------------------------- 
 
EXTLOGPEN32         added, required by EMREXTCREATEPEN 
LOGCOLORSPACEA      added, lcsFileName always ASCII   -> required by EMRCREATECOLORSPACE 
LOGCOLORSPACEW      added, lcsFileName always UNICODE 
 
;>----------------------------------------------------------------------------------- 
;- general fixes 
;>----------------------------------------------------------------------------------- 
 
PERF_DATA_BLOCK             alignment For x86 And x64 
DEV_BROADCAST_USERDEFINED   alignment For x86 And x64 
 
EMREXTCREATEPEN     \ elp.EXTLOGPEN     -> elp.EXTLOGPEN32 
MENUITEMTEMPLATE    \ mtString.b        -> mtString.u[1] 
MIXERCONTROLDETAILS \ item.i            -> StructureUnion With hwndOwner.i And cMultipleItems.l 
LANA_ENUM           \ lana.b[#MAX_LANA] -> lana.b[#MAX_LANA+1], alignment 
 
PELARRAY            \ paRGBs        .w  To .a And corrected alignment after 
URL_COMPONENTS      \ nPort         .l  To .w And corrected alignment after 
RB_HITTESTINFO      \ iBand         .w  To .l 
MENUITEMINFO        \ dwTypeData    .l  To .u 
VARIANT             \ cyVal         .l  To .LARGE_INTEGER 
EMRCREATECOLORSPACE \ lcs.LOGCOLORSPACE To .LOGCOLORSPACEA 
 
NAME_BUFFER         \ name_num      .b  To .a 
                    \ name_flags    .b  To .a 
 
M128A               \ changed both  .i  To .q 
 
OUTLINETEXTMETRIC   \ otmsUnderscoreSize -> corrected position within the Structure 
 
INPUT_RECORD        \ changed the StructureUnion to Event.INPUT_RECORD_EVENT 
 
SAFEARRAY           \ added StructureUnion With dummyrgsabound member 
                    \ rgsabound moved into same StructureUnion 
 
FORM_INFO_1         *pName.l -> *pName.Character 
 
DEVMODE             \ added dmPanningWidth,  matches _WIN32_WINNT_NT4 0x0400 
                    \ added dmPanningHeight, matches _WIN32_WINNT_NT4 0x0400 
 
MULTIKEYHELP        corrected For unicode 
HELPWININFO         corrected For unicode 
MONHSZSTRUCT        corrected For unicode 
DEV_BROADCAST_PORT  corrected For unicode 
 
;>----------------------------------------------------------------------------------- 
; 
;- fixed For 64bit: 
; 
;>----------------------------------------------------------------------------------- 
 
NMOBJECTNOTIFY              hResult         changed from .i To .l And corrected alignment 
 
NMHDR                       idFrom          changed from .l To .i And corrected alignment 
MCI_STATUS_PARMS            dwReturn        changed from .l To .i And corrected alignment 
HELPINFO                    dwContextId     changed from .l To .i And corrected alignment 
ENDROPFILES                 hDrop           changed from .l To .i And corrected alignment 
MIXERLINE                   dwUser          changed from .l To .i And corrected alignment 
 
LOGBRUSH                    lbHatch         changed from .l To .i 
ICMP_ECHO_REPLY             Data            changed from .l To .i 
 
IP_OPTION_INFORMATION       \ Ttl           changed from .b To .a 
                            \ Tos           changed from .b To .a 
                            \ Flags         changed from .b To .a 
                            \ OptionsSize   changed from .b To .a 
                            \ OptionsData   changed from .l To .i 
 
MSG                         corrected alignment 
POLYTEXT                    corrected alignment 
PAGESETUPDLG                corrected alignment 
REOBJECT                    corrected alignment 
 
SHFILEINFO                  corrected alignment For non-unicode mode on x64 
MODULEENTRY32               corrected alignment For non-unicode mode on x64 
 
PROCESSENTRY32              corrected alignment For     unicode mode on x64 
NMCBEDRAGBEGIN              corrected alignment For     unicode mode on x64 
NMCBEENDEDIT                corrected alignment For     unicode mode on x64 
 
 
TBBUTTON                    added CompilerIf For x64 To  correct member bReserved For x64 
XMM_SAVE_AREA32             added CompilerIf For x64 And correct members 
WSADATA                     added CompilerIf For x64 And correct members 
SERVENT                     added CompilerIf For x64 And correct members 
 
;>----------------------------------------------------------------------------------- 
;- changed member names 
;>----------------------------------------------------------------------------------- 
 
ACCEL                      \ Pad                -> PB_Align 
NETENT                     \ pad                -> PB_Align 
 
NEWTEXTMETRIC              \ ntmAveWidth        -> ntmAvgWidth 
WIN32_FIND_DATA            \ cAlternate         -> cAlternateFileName 
NMTBRESTORE                \ nmhdr              -> hdr 
SECURITY_DESCRIPTOR        \ lGroup             -> Group 
MEMORY_BASIC_INFORMATION   \ lType              -> Type 
EXCEPTION_POINTERS         \ pExceptionRecord   -> ExceptionRecord 
CANDIDATELIST              \ dwOffset1          -> dwOffset[1] 
METARECORD                 \ rdParam1           -> rdParam[1] 
ENHMETARECORD              \ dParam1            -> dParam[1] 
DDEDATA                    \ Value1             -> Value[1] 
DDEPOKE                    \ Value1             -> Value[1] 
DDEUP                      \ xRGB1              -> rgb[1] 
DDEML_MSG_HOOK_DATA        \ Data.l             -> Data.l[8] And corrected alignment 
EMRPOLYBEZIERTO16          \ apts.POINT[1]      -> apts.POINTS[1] 
METAFILEPICT               \ imm                -> mm 
EMRGDICOMMENT              \ xData              -> Data 
EMRSCALEVIEWPORTEXTEX      \ yDemon             -> yDenom 
EMRSCALEWINDOWEXTEX        \ yDemon             -> yDenom 
EMRCREATEDIBPATTERNBRUSHPT \ ihBursh            -> ihBrush 
CHARSETINFO                \ xlfs               -> fs 
MCI_GETDEVCAPS_PARMS       \ dwIten             -> dwItem 
JOB_INFO_2                 \ iSize              -> Size 
FORM_INFO_1                \ isize              -> Size 
NAME_BUFFER                \ xname              -> name 
PERF_DATA_BLOCK            \ PerTime100nSec     -> PerfTime100nSec 
TVITEMEX                   \ integral           -> iIntegral 
PARAFORMAT                 \ wReserved          -> wEffects 
CHOOSEFONT                 \ Alignment          -> ___MISSING_ALIGNMENT___ 
TC_ITEM                    \ lpReserved1        -> dwState 
                           \ lpReserved2        -> dwStateMask 
WIN32_STREAM_ID            \ dwStreamSizeLow    -> Size.LARGE_INTEGER 
                           \ dwStreamSizeHigh   -> also in Size 
IMAGE_EXPORT_DIRECTORY     \ nBase              -> Base 
                           \ nName              -> Name 
COLORMAP                   \ cmFrom             -> from 
                           \ cmTo               -> To 
ADAPTER_STATUS             \ max_dgram_isize    -> max_dgram_size 
                           \ max_sess_pkt_isize -> max_sess_pkt_size 
DEBUGHOOKINFO              \ hModuleHook        -> idThread 
                           \ Reserved           -> idThreadInstaller 
 
CRITICAL_SECTION           \ changed all member names, they were dummies before 
USER_INFO_3                \ changed all member names And corrected all types 
GROUP_INFO_2               \ changed all member names And corrected all types
Source de l'information


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Offres d'emploi IT
Consultant sap finance/controlling H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)
Spécialiste systèmes informatiques qualité et référent procédure H/F
Safran - Ile de France - Colombes (92700)
Ingénieur intégration, validation, qualification du système de drone H/F
Safran - Ile de France - Éragny (95610)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique PureBasic : comtois -