Working on multi-version localthis handling

This commit is contained in:
hakril
2024-11-13 14:17:41 +01:00
parent 9a67dca363
commit c040ec368e
4 changed files with 247 additions and 41 deletions
@@ -334,16 +334,6 @@ typedef struct _LOCALTHIS {
PVOID pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
} LOCALTHIS;
typedef struct _LOCALTHIS32 {
DWORD dwFlags;
DWORD dwClientThread;
GUID passthroughTraceActivity;
GUID callTraceActivity;
MIDL_XmitDefs_0001 asyncRequestBlock;
DWORD reserved;
PVOID32 pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
} LOCALTHIS32;
/* LOCALTHAT & sub structures */
typedef struct _MIDL_XmitDefs_0007 {
@@ -406,15 +396,6 @@ typedef struct _LOCALTHAT {
} LOCALTHAT;
typedef struct _LOCALTHAT32 {
UINT64 marshalingSetId;
ULONG reserved;
PVOID32 pAsyncResponseBlock;
PVOID32 containerErrorInformation;
PVOID32 containerPassthroughData;
} LOCALTHAT32;
typedef struct tagORPCTHAT {
ULONG flags;
tagORPC_EXTENT_ARRAY *extensions;
@@ -0,0 +1,110 @@
/* Seen on 6.2.9200.22376 (win8_ldr_escrow.180222-0941) */
/* also seen on previous version : XP / Win7 / Server 2012 */
typedef struct LOCALTHIS32_NT_62 {
ULONG dwFlags;
ULONG dwClientThread;
};
// NO LOCALTHAT for these previous version as far as 1 now
/* Seen on 6.3.9600.17031 (winblue_gdr.140221-1952) */
typedef struct __MIDL_XmitDefs_0001_NT_63 {
ULONG size;
ULONG reserved;
UINT64 *pAstaOxids;
};
typedef struct LOCALTHIS32_NT_63 {
ULONG dwFlags;
ULONG dwClientThread;
ULONG reserved;
PVOID32 pTouchedAstaArray;
};
typedef struct LOCALTHAT32_NT_63 {
UINT64 marshalingSetAcknowledgmentOxid;
UINT64 marshalingSetId;
};
/* NT_1607 : combase 10.0.14393.576 from a WS2016 ISO*/
typedef struct __MIDL_XmitDefs_0002_NT_1607 {
ULONG size;
ULONG reserved;
PVOID32 pAstaOxids;
};
typedef struct __MIDL_XmitDefs_0001_NT_1607 {
_GUID asyncOperationId;
UINT32 oxidClientProcessNA;
_GUID originalClientLogicalThreadId;
UINT uClientCausalityTraceId;
};
typedef struct LOCALTHIS32_NT_1607 {
ULONG dwFlags;
ULONG dwClientThread;
__MIDL_XmitDefs_0001_NT_1607 asyncRequestBlock;
ULONG reserved;
PVOID32 *pTouchedAstaArray;
};
typedef struct __MIDL_XmitDefs_0007 {
INT pointOfFailure;
HRESULT hrFailure;
ULONG sizeOfMarshaledErrorInfo;
ULONG reserved;
BYTE *pMarshaledErrorInfo;
};
typedef struct __MIDL_XmitDefs_0005 {
ULONG sizeOfMarshaledResults;
ULONG reserved;
BYTE *pMarshaledResults;
};
typedef struct __MIDL_XmitDefs_0008 {
INT outcome;
__MIDL_XmitDefs_0005 successDetails;
__MIDL_XmitDefs_0007 failureDetails;
};
typedef struct __MIDL_XmitDefs_0010 {
ULONG asyncStatus;
ULONG reserved1;
UINT64 uServerCausalityTraceId;
ULONG reserved2;
PVOID32 *pOutcomeDetails; //__MIDL_XmitDefs_0008
};
typedef struct LOCALTHAT32_NT_1607 {
UINT64 marshalingSetAcknowledgmentOxid;
UINT64 marshalingSetId;
ULONG reserved;
PVOID32 *pAsyncResponseBlock;
};
/* ! NT_1607: combase 10.0.14393.576 */
/* NT 10.22 ? seen on 10.0.22621.1 */
typedef struct _LOCALTHIS32 {
DWORD dwFlags;
DWORD dwClientThread;
GUID passthroughTraceActivity;
GUID callTraceActivity;
MIDL_XmitDefs_0001 asyncRequestBlock;
DWORD reserved;
PVOID32 pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
} LOCALTHIS32;
typedef struct _LOCALTHAT32 {
UINT64 marshalingSetId;
ULONG reserved;
PVOID32 pAsyncResponseBlock;
PVOID32 containerErrorInformation;
PVOID32 containerPassthroughData;
} LOCALTHAT32;
+12
View File
@@ -12544,8 +12544,13 @@ structs = {'ACCESS_ALLOWED_ACE',
'LOCALGROUP_MEMBERS_INFO_3',
'LOCALTHAT',
'LOCALTHAT32',
'LOCALTHAT32_NT_1607',
'LOCALTHAT32_NT_63',
'LOCALTHIS',
'LOCALTHIS32',
'LOCALTHIS32_NT_1607',
'LOCALTHIS32_NT_62',
'LOCALTHIS32_NT_63',
'LPADDRESS',
'LPADDRESS64',
'LPBINDPTR',
@@ -14086,6 +14091,13 @@ structs = {'ACCESS_ALLOWED_ACE',
'_XSTATE_FEATURE',
'__MIDL_IBackgroundCopyJob2_0003',
'__MIDL_IBackgroundCopyJob2_0004',
'__MIDL_XmitDefs_0001_NT_1607',
'__MIDL_XmitDefs_0001_NT_63',
'__MIDL_XmitDefs_0002_NT_1607',
'__MIDL_XmitDefs_0005',
'__MIDL_XmitDefs_0007',
'__MIDL_XmitDefs_0008',
'__MIDL_XmitDefs_0010',
'__PUBLIC_OBJECT_TYPE_INFORMATION',
'__tagBRECORD',
'__tagVARIANT',
+125 -22
View File
@@ -1478,18 +1478,6 @@ class _LOCALTHIS(Structure):
]
LOCALTHIS = _LOCALTHIS
class _LOCALTHIS32(Structure):
_fields_ = [
("dwFlags", DWORD),
("dwClientThread", DWORD),
("passthroughTraceActivity", GUID),
("callTraceActivity", GUID),
("asyncRequestBlock", MIDL_XmitDefs_0001),
("reserved", DWORD),
("pTouchedAstaArray", PVOID32),
]
LOCALTHIS32 = _LOCALTHIS32
class _MIDL_XmitDefs_0007(Structure):
_fields_ = [
("pointOfFailure", INT),
@@ -1561,16 +1549,6 @@ class _LOCALTHAT(Structure):
]
LOCALTHAT = _LOCALTHAT
class _LOCALTHAT32(Structure):
_fields_ = [
("marshalingSetId", UINT64),
("reserved", ULONG),
("pAsyncResponseBlock", PVOID32),
("containerErrorInformation", PVOID32),
("containerPassthroughData", PVOID32),
]
LOCALTHAT32 = _LOCALTHAT32
class tagORPCTHAT(Structure):
_fields_ = [
("flags", ULONG),
@@ -1585,6 +1563,131 @@ class ORPCTHAT32(Structure):
]
class LOCALTHIS32_NT_62(Structure):
_fields_ = [
("dwFlags", ULONG),
("dwClientThread", ULONG),
]
class __MIDL_XmitDefs_0001_NT_63(Structure):
_fields_ = [
("size", ULONG),
("reserved", ULONG),
("pAstaOxids", POINTER(UINT64)),
]
class LOCALTHIS32_NT_63(Structure):
_fields_ = [
("dwFlags", ULONG),
("dwClientThread", ULONG),
("reserved", ULONG),
("pTouchedAstaArray", PVOID32),
]
class LOCALTHAT32_NT_63(Structure):
_fields_ = [
("marshalingSetAcknowledgmentOxid", UINT64),
("marshalingSetId", UINT64),
]
class __MIDL_XmitDefs_0002_NT_1607(Structure):
_fields_ = [
("size", ULONG),
("reserved", ULONG),
("pAstaOxids", PVOID32),
]
class __MIDL_XmitDefs_0001_NT_1607(Structure):
_fields_ = [
("asyncOperationId", _GUID),
("oxidClientProcessNA", UINT32),
("originalClientLogicalThreadId", _GUID),
("uClientCausalityTraceId", UINT),
]
class LOCALTHIS32_NT_1607(Structure):
_fields_ = [
("dwFlags", ULONG),
("dwClientThread", ULONG),
("asyncRequestBlock", __MIDL_XmitDefs_0001_NT_1607),
("reserved", ULONG),
("pTouchedAstaArray", POINTER(PVOID32)),
]
class __MIDL_XmitDefs_0007(Structure):
_fields_ = [
("pointOfFailure", INT),
("hrFailure", HRESULT),
("sizeOfMarshaledErrorInfo", ULONG),
("reserved", ULONG),
("pMarshaledErrorInfo", POINTER(BYTE)),
]
class __MIDL_XmitDefs_0005(Structure):
_fields_ = [
("sizeOfMarshaledResults", ULONG),
("reserved", ULONG),
("pMarshaledResults", POINTER(BYTE)),
]
class __MIDL_XmitDefs_0008(Structure):
_fields_ = [
("outcome", INT),
("successDetails", __MIDL_XmitDefs_0005),
("failureDetails", __MIDL_XmitDefs_0007),
]
class __MIDL_XmitDefs_0010(Structure):
_fields_ = [
("asyncStatus", ULONG),
("reserved1", ULONG),
("uServerCausalityTraceId", UINT64),
("reserved2", ULONG),
("pOutcomeDetails", POINTER(PVOID32)),
]
class LOCALTHAT32_NT_1607(Structure):
_fields_ = [
("marshalingSetAcknowledgmentOxid", UINT64),
("marshalingSetId", UINT64),
("reserved", ULONG),
("pAsyncResponseBlock", POINTER(PVOID32)),
]
class _LOCALTHIS32(Structure):
_fields_ = [
("dwFlags", DWORD),
("dwClientThread", DWORD),
("passthroughTraceActivity", GUID),
("callTraceActivity", GUID),
("asyncRequestBlock", MIDL_XmitDefs_0001),
("reserved", DWORD),
("pTouchedAstaArray", PVOID32),
]
LOCALTHIS32 = _LOCALTHIS32
class _LOCALTHAT32(Structure):
_fields_ = [
("marshalingSetId", UINT64),
("reserved", ULONG),
("pAsyncResponseBlock", PVOID32),
("containerErrorInformation", PVOID32),
("containerPassthroughData", PVOID32),
]
LOCALTHAT32 = _LOCALTHAT32
VIRTUAL_DISK_ACCESS_NONE = EnumValue("_VIRTUAL_DISK_ACCESS_MASK", "VIRTUAL_DISK_ACCESS_NONE", 0x0)
VIRTUAL_DISK_ACCESS_ATTACH_RO = EnumValue("_VIRTUAL_DISK_ACCESS_MASK", "VIRTUAL_DISK_ACCESS_ATTACH_RO", 0x1)
VIRTUAL_DISK_ACCESS_ATTACH_RW = EnumValue("_VIRTUAL_DISK_ACCESS_MASK", "VIRTUAL_DISK_ACCESS_ATTACH_RW", 0x2)