5 changes: 4 additions & 1 deletion src/core/sys/windows/nb30.d
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,10 @@ struct NCB {
extern (Windows) void function(NCB*) ncb_post;
UCHAR ncb_lana_num;
UCHAR ncb_cmd_cplt;
UCHAR[10] ncb_reserve;
version (Win64)
UCHAR[18] ncb_reserve;
else
UCHAR[10] ncb_reserve;
HANDLE ncb_event;
}
alias NCB* PNCB;
Expand Down
15 changes: 15 additions & 0 deletions src/core/sys/windows/ras.d
Original file line number Diff line number Diff line change
Expand Up @@ -227,11 +227,14 @@ alias TypeDef!(HANDLE) HRASCONN;
alias HRASCONN* LPHRASCONN;

struct RASCONNW {
align(4):
DWORD dwSize;
HRASCONN hrasconn;
align {
WCHAR[RAS_MaxEntryName + 1] szEntryName;
WCHAR[RAS_MaxDeviceType + 1] szDeviceType;
WCHAR[RAS_MaxDeviceName + 1] szDeviceName;
}
//static if (_WIN32_WINNT >= 0x401) {
WCHAR[MAX_PATH] szPhonebook;
DWORD dwSubEntry;
Expand All @@ -247,11 +250,14 @@ struct RASCONNW {
alias RASCONNW* LPRASCONNW;

struct RASCONNA {
align(4):
DWORD dwSize;
HRASCONN hrasconn;
align {
CHAR[RAS_MaxEntryName + 1] szEntryName;
CHAR[RAS_MaxDeviceType + 1] szDeviceType;
CHAR[RAS_MaxDeviceName + 1] szDeviceName;
}
//static if (_WIN32_WINNT >= 0x401) {
CHAR[MAX_PATH] szPhonebook;
DWORD dwSubEntry;
Expand Down Expand Up @@ -291,13 +297,16 @@ struct RASCONNSTATUSA {
alias RASCONNSTATUSA* LPRASCONNSTATUSA;

struct RASDIALPARAMSW {
align(4):
DWORD dwSize;
align {
WCHAR[RAS_MaxEntryName + 1] szEntryName;
WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber;
WCHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber;
WCHAR[UNLEN + 1] szUserName;
WCHAR[PWLEN + 1] szPassword;
WCHAR[DNLEN + 1] szDomain;
}
static if (_WIN32_WINNT >= 0x401) {
DWORD dwSubEntry;
ULONG_PTR dwCallbackId;
Expand All @@ -306,13 +315,16 @@ struct RASDIALPARAMSW {
alias RASDIALPARAMSW* LPRASDIALPARAMSW;

struct RASDIALPARAMSA{
align(4):
DWORD dwSize;
align {
CHAR[RAS_MaxEntryName + 1] szEntryName;
CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber;
CHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber;
CHAR[UNLEN + 1] szUserName;
CHAR[PWLEN + 1] szPassword;
CHAR[DNLEN + 1] szDomain;
}
static if (_WIN32_WINNT >= 0x401) {
DWORD dwSubEntry;
ULONG_PTR dwCallbackId;
Expand All @@ -322,12 +334,14 @@ alias RASDIALPARAMSA* LPRASDIALPARAMSA;

//static if (_WIN32_WINNT >= 0x500) {
struct RASEAPINFO {
align(4):
DWORD dwSizeofEapInfo;
BYTE *pbEapInfo;
}
//}

struct RASDIALEXTENSIONS {
align(4):
DWORD dwSize;
DWORD dwfOptions;
HWND hwndParent;
Expand Down Expand Up @@ -625,6 +639,7 @@ alias RASENTRYA* LPRASENTRYA;

//static if (_WIN32_WINNT >= 0x401) {
struct RASADPARAMS {
align(4):
DWORD dwSize;
HWND hwndOwner;
DWORD dwFlags;
Expand Down
5 changes: 5 additions & 0 deletions src/core/sys/windows/rasdlg.d
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ enum RASDDFLAG_PositionDlg = 1;
align(4):

struct RASENTRYDLGA {
align(4):
DWORD dwSize = RASENTRYDLGA.sizeof;
HWND hwndOwner;
DWORD dwFlags;
Expand All @@ -51,6 +52,7 @@ struct RASENTRYDLGA {
alias RASENTRYDLGA* LPRASENTRYDLGA;

struct RASENTRYDLGW {
align(4):
DWORD dwSize = RASENTRYDLGW.sizeof;
HWND hwndOwner;
DWORD dwFlags;
Expand All @@ -64,6 +66,7 @@ struct RASENTRYDLGW {
alias RASENTRYDLGW* LPRASENTRYDLGW;

struct RASDIALDLG {
align(4):
DWORD dwSize;
HWND hwndOwner;
DWORD dwFlags;
Expand All @@ -83,6 +86,7 @@ extern (Windows) {
}

struct RASPBDLGA {
align(4):
DWORD dwSize = RASPBDLGA.sizeof;
HWND hwndOwner;
DWORD dwFlags;
Expand All @@ -97,6 +101,7 @@ struct RASPBDLGA {
alias RASPBDLGA* LPRASPBDLGA;

struct RASPBDLGW {
align(4):
DWORD dwSize = RASPBDLGW.sizeof;
HWND hwndOwner;
DWORD dwFlags;
Expand Down
12 changes: 12 additions & 0 deletions src/core/sys/windows/richedit.d
Original file line number Diff line number Diff line change
Expand Up @@ -392,25 +392,29 @@ extern (Windows) {
}

struct EDITSTREAM {
align(4):
DWORD_PTR dwCookie;
DWORD dwError;
EDITSTREAMCALLBACK pfnCallback;
}

struct ENCORRECTTEXT {
align(4):
NMHDR nmhdr;
CHARRANGE chrg;
WORD seltyp;
}

struct ENDROPFILES {
align(4):
NMHDR nmhdr;
HANDLE hDrop;
LONG cp;
BOOL fProtected;
}

struct ENLINK {
align(4):
NMHDR nmhdr;
UINT msg;
WPARAM wParam;
Expand All @@ -419,13 +423,15 @@ struct ENLINK {
}

struct ENOLEOPFAILED {
align(4):
NMHDR nmhdr;
LONG iob;
LONG lOper;
HRESULT hr;
}

struct ENPROTECTED {
align(4):
NMHDR nmhdr;
UINT msg;
WPARAM wParam;
Expand All @@ -435,6 +441,7 @@ struct ENPROTECTED {
alias ENPROTECTED* LPENPROTECTED;

struct ENSAVECLIPBOARD {
align(4):
NMHDR nmhdr;
LONG cObjectCount;
LONG cch;
Expand Down Expand Up @@ -471,6 +478,7 @@ struct FORMATRANGE {
}

struct MSGFILTER {
align(4):
NMHDR nmhdr;
UINT msg;
WPARAM wParam;
Expand Down Expand Up @@ -539,16 +547,19 @@ struct REQRESIZE {
}

struct REPASTESPECIAL {
align(4):
DWORD dwAspect;
DWORD_PTR dwParam;
}

struct PUNCTUATION {
align(4):
UINT iSize;
LPSTR szPunctuation;
}

struct GETTEXTEX {
align(4):
DWORD cb;
DWORD flags;
UINT codepage;
Expand All @@ -573,6 +584,7 @@ enum GTL_NUMCHARS = 8;
enum GTL_NUMBYTES = 16;

struct GETTEXTLENGTHEX {
align(4):
DWORD flags;
UINT codepage;
}
Expand Down
2 changes: 1 addition & 1 deletion src/core/sys/windows/richole.d
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ private import core.sys.windows.objfwd, core.sys.windows.objidl, core.sys.window
core.sys.windows.windef;
private import core.sys.windows.richedit; // for CHARRANGE

align(4):
//align(4):

enum ULONG
REO_GETOBJ_NO_INTERFACES = 0,
Expand Down
53 changes: 28 additions & 25 deletions src/core/sys/windows/setupapi.d
Original file line number Diff line number Diff line change
Expand Up @@ -871,7 +871,10 @@ enum SetupFileLogInfo {
SetupFileLogMax
}

align(1):
version (Win64)
private enum _alignVal = 0;
else
private enum _alignVal = 1;

struct INFCONTEXT {
PVOID Inf;
Expand All @@ -881,12 +884,12 @@ struct INFCONTEXT {
}
alias INFCONTEXT* PINFCONTEXT;

struct SP_INF_INFORMATION {
mixin AlignedStr!(_alignVal, "SP_INF_INFORMATION", q{
DWORD InfStyle;
DWORD InfCount;
BYTE[1] _VersionData;
BYTE* VersionData() return { return _VersionData.ptr; }
}
});
alias SP_INF_INFORMATION* PSP_INF_INFORMATION;

struct SP_ALTPLATFORM_INFO {
Expand Down Expand Up @@ -967,26 +970,26 @@ struct CABINET_INFO_W {
}
alias CABINET_INFO_W* PCABINET_INFO_W;

struct FILE_IN_CABINET_INFO_A {
mixin AlignedStr!(_alignVal, "FILE_IN_CABINET_INFO_A", q{
PCSTR NameInCabinet;
DWORD FileSize;
DWORD Win32Error;
WORD DosDate;
WORD DosTime;
WORD DosAttribs;
CHAR[MAX_PATH] FullTargetName;
}
});
alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO_A;

struct FILE_IN_CABINET_INFO_W {
mixin AlignedStr!(_alignVal, "FILE_IN_CABINET_INFO_W", q{
PCWSTR NameInCabinet;
DWORD FileSize;
DWORD Win32Error;
WORD DosDate;
WORD DosTime;
WORD DosAttribs;
WCHAR[MAX_PATH] FullTargetName;
}
});
alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO_W;

struct SP_FILE_COPY_PARAMS_A {
Expand Down Expand Up @@ -1029,49 +1032,49 @@ struct SP_DEVINFO_DATA {
}
alias SP_DEVINFO_DATA* PSP_DEVINFO_DATA;

struct SP_DEVICE_INTERFACE_DATA {
mixin AlignedStr!(_alignVal, "SP_DEVICE_INTERFACE_DATA", q{
DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof;
GUID InterfaceClassGuid;
DWORD Flags;
ULONG_PTR Reserved;
}
});
alias SP_DEVICE_INTERFACE_DATA* PSP_DEVICE_INTERFACE_DATA;
deprecated alias SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA;
deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA;

struct SP_DEVICE_INTERFACE_DETAIL_DATA_A {
mixin AlignedStr!(_alignVal, "SP_DEVICE_INTERFACE_DETAIL_DATA_A", q{
DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof;
CHAR[1] _DevicePath;
CHAR* DevicePath() return { return _DevicePath.ptr; }
}
});
alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A;

struct SP_DEVICE_INTERFACE_DETAIL_DATA_W {
mixin AlignedStr!(_alignVal, "SP_DEVICE_INTERFACE_DETAIL_DATA_W", q{
DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof;
WCHAR[1] _DevicePath;
WCHAR* DevicePath() return { return _DevicePath.ptr; }
}
});
alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W;

deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A;
deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA_A;
deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W;
deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA_W;

struct SP_DEVINFO_LIST_DETAIL_DATA_A {
mixin AlignedStr!(_alignVal, "SP_DEVINFO_LIST_DETAIL_DATA_A", q{
DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof;
GUID ClassGuid;
HANDLE RemoteMachineHandle;
CHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName;
}
});
alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA_A;

struct SP_DEVINFO_LIST_DETAIL_DATA_W {
mixin AlignedStr!(_alignVal, "SP_DEVINFO_LIST_DETAIL_DATA_W", q{
DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof;
GUID ClassGuid;
HANDLE RemoteMachineHandle;
WCHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName;
}
});
alias SP_DEVINFO_LIST_DETAIL_DATA_W* PSP_DEVINFO_LIST_DETAIL_DATA_W;

extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_A;
Expand Down Expand Up @@ -1223,7 +1226,7 @@ struct SP_POWERMESSAGEWAKE_PARAMS_W {
}
alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS_W;

struct SP_DRVINFO_DATA_V2_A {
mixin AlignedStr!(_alignVal, "SP_DRVINFO_DATA_V2_A", q{
DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof;
DWORD DriverType;
ULONG_PTR Reserved;
Expand All @@ -1232,10 +1235,10 @@ struct SP_DRVINFO_DATA_V2_A {
CHAR[LINE_LEN] ProviderName;
FILETIME DriverDate;
DWORDLONG DriverVersion;
}
});
alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_V2_A;

struct SP_DRVINFO_DATA_V2_W {
mixin AlignedStr!(_alignVal, "SP_DRVINFO_DATA_V2_W", q{
DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof;
DWORD DriverType;
ULONG_PTR Reserved;
Expand All @@ -1244,7 +1247,7 @@ struct SP_DRVINFO_DATA_V2_W {
WCHAR[LINE_LEN] ProviderName;
FILETIME DriverDate;
DWORDLONG DriverVersion;
}
});
alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_V2_W;

struct SP_DRVINFO_DATA_V1_A {
Expand Down Expand Up @@ -1295,7 +1298,7 @@ static if(USE_SP_DRVINFO_DATA_V1) {

extern(Windows) alias DWORD function(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINFO_DATA, PVOID) PSP_DETSIG_CMPPROC;

struct SP_DRVINFO_DETAIL_DATA_A {
mixin AlignedStr!(_alignVal, "SP_DRVINFO_DETAIL_DATA_A", q{
DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof;
FILETIME InfDate;
DWORD CompatIDsOffset;
Expand All @@ -1306,10 +1309,10 @@ struct SP_DRVINFO_DETAIL_DATA_A {
CHAR[LINE_LEN] DrvDescription;
CHAR[1] _HardwareID;
CHAR* HardwareID() return { return _HardwareID.ptr; }
}
});
alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A;

struct SP_DRVINFO_DETAIL_DATA_W {
mixin AlignedStr!(_alignVal, "SP_DRVINFO_DETAIL_DATA_W", q{
DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof;
FILETIME InfDate;
DWORD CompatIDsOffset;
Expand All @@ -1320,7 +1323,7 @@ struct SP_DRVINFO_DETAIL_DATA_W {
WCHAR[LINE_LEN] DrvDescription;
WCHAR[1] _HardwareID;
WCHAR* HardwareID() return { return _HardwareID.ptr; }
}
});
alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W;

struct SP_DRVINSTALL_PARAMS {
Expand Down
19 changes: 16 additions & 3 deletions src/core/sys/windows/shellapi.d
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ enum SHERB_NOSOUND = 4;
alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS;
mixin DECLARE_HANDLE!("HDROP");

align(2):
//align(2): // 1 in Win32, default in Win64

struct APPBARDATA {
DWORD cbSize = APPBARDATA.sizeof;
Expand Down Expand Up @@ -294,24 +294,34 @@ struct SHELLEXECUTEINFOW {
}
alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW;

struct SHFILEOPSTRUCTA {
align(1) struct SHFILEOPSTRUCTA {
align(1):
HWND hwnd;
UINT wFunc;
version (Win64)
WORD _padding1;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
version (Win64)
DWORD _padding2;
BOOL fAnyOperationsAborted;
PVOID hNameMappings;
LPCSTR lpszProgressTitle;
}
alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA;

struct SHFILEOPSTRUCTW {
align(1) struct SHFILEOPSTRUCTW {
align(1):
HWND hwnd;
UINT wFunc;
version (Win64)
DWORD _padding1;
LPCWSTR pFrom;
LPCWSTR pTo;
FILEOP_FLAGS fFlags;
version (Win64)
WORD _padding2;
BOOL fAnyOperationsAborted;
PVOID hNameMappings;
LPCWSTR lpszProgressTitle;
Expand All @@ -335,7 +345,10 @@ struct SHFILEINFOW {
}

align(1) struct SHQUERYRBINFO {
align(1):
DWORD cbSize = SHQUERYRBINFO.sizeof;
version (Win64)
DWORD _padding;
long i64Size;
long i64NumItems;
}
Expand Down
5 changes: 4 additions & 1 deletion src/core/sys/windows/shlobj.d
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,7 @@ alias const(ITEMIDLIST)* LPCITEMIDLIST;

extern (Windows) alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK;

align (8) {
struct BROWSEINFOA {
HWND hwndOwner;
LPCITEMIDLIST pidlRoot;
Expand All @@ -432,6 +433,7 @@ struct BROWSEINFOW {
int iImage;
}
alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW;
} // align (8)

struct CMINVOKECOMMANDINFO {
DWORD cbSize = this.sizeof;
Expand Down Expand Up @@ -473,7 +475,7 @@ enum SHCONTF {
SHCONTF_STORAGE = 2048
}

struct STRRET {
align(8) struct STRRET {
UINT uType;
union {
LPWSTR pOleStr;
Expand Down Expand Up @@ -717,6 +719,7 @@ enum MAX_COLUMN_NAME_LEN = 80;
enum MAX_COLUMN_DESC_LEN = 128;

align(1) struct SHCOLUMNINFO {
align(1):
SHCOLUMNID scid;
VARTYPE vt;
DWORD fmt;
Expand Down
5 changes: 5 additions & 0 deletions src/core/sys/windows/snmp.d
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ alias ULARGE_INTEGER AsnCounter64;
align (4):

struct AsnOctetString {
align (4):
BYTE* stream;
UINT length;
BOOL dynamic;
Expand All @@ -159,12 +160,14 @@ alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence,
AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque;

struct AsnObjectIdentifier {
align (4):
UINT idLength;
UINT* ids;
}
alias AsnObjectIdentifier AsnObjectName;

struct AsnAny {
align (4):
BYTE asnType;
union _asnValue {
AsnInteger32 number;
Expand All @@ -185,11 +188,13 @@ struct AsnAny {
alias AsnAny AsnObjectSyntax;

struct SnmpVarBind {
align (4):
AsnObjectName name;
AsnObjectSyntax value;
}

struct SnmpVarBindList {
align (4):
SnmpVarBind* list;
UINT len;
}
Expand Down
4 changes: 4 additions & 0 deletions src/core/sys/windows/winhttp.d
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,12 @@ struct WINHTTP_CERTIFICATE_INFO {
}

// This structure is only defined #if _WS2DEF_ defined (from <ws2def.h>) - per Windows SDK
align(4)
struct WINHTTP_CONNECTION_INFO {
align(4):
DWORD cbSize;
version (Win64)
DWORD _padding; // cheap trick without the alignment switch over this file
SOCKADDR_STORAGE LocalAddress;
SOCKADDR_STORAGE RemoteAddress;
}
Expand Down
2 changes: 1 addition & 1 deletion src/core/sys/windows/winldap.d
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ version (ANSI) {} else version = Unicode;
import core.sys.windows.schannel, core.sys.windows.winber;
private import core.sys.windows.wincrypt, core.sys.windows.windef;

align(4):
//align(4):

enum {
LDAP_VERSION1 = 1,
Expand Down
4 changes: 2 additions & 2 deletions src/core/sys/windows/winnt.d
Original file line number Diff line number Diff line change
Expand Up @@ -2306,7 +2306,7 @@ align(4) struct LUID_AND_ATTRIBUTES {
}
alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES;

struct PRIVILEGE_SET {
align(4) struct PRIVILEGE_SET {
DWORD PrivilegeCount;
DWORD Control;
LUID_AND_ATTRIBUTES _Privilege;
Expand Down Expand Up @@ -4020,7 +4020,7 @@ static if (_WIN32_WINNT >= 0x501) {
FileInformationInAssemblyOfAssemblyInActivationContext
}

struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
align struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
DWORD ulFlags;
DWORD ulEncodedAssemblyIdentityLength;
DWORD ulManifestPathType;
Expand Down
4 changes: 2 additions & 2 deletions src/core/sys/windows/winuser.d
Original file line number Diff line number Diff line change
Expand Up @@ -3412,11 +3412,11 @@ struct INPUT {
alias INPUT* PINPUT, LPINPUT;

static if (_WIN32_WINNT >= 0x501) {
struct BSMINFO {
align(4) struct BSMINFO {
UINT cbSize = this.sizeof;
HDESK hdesk;
HWND hwnd;
LUID luid;
align(4) LUID luid;
}
alias BSMINFO* PBSMINFO;

Expand Down