static LWMsgTypeSpec gRegQueryMultipleValuesSpec[] = { // HKEY hKey; // DWORD num_vals; // PVALENT val_list; // DWORD dwTotalsize; // PWSTR pValue; LWMSG_STRUCT_BEGIN(REG_IPC_QUERY_MULTIPLE_VALUES_REQ), LWMSG_MEMBER_HANDLE(REG_IPC_QUERY_MULTIPLE_VALUES_REQ, hKey, HKEY), LWMSG_ATTR_HANDLE_LOCAL_FOR_RECEIVER, LWMSG_MEMBER_UINT32(REG_IPC_QUERY_MULTIPLE_VALUES_REQ, num_vals), LWMSG_MEMBER_POINTER_BEGIN(REG_IPC_QUERY_MULTIPLE_VALUES_REQ, val_list), LWMSG_TYPESPEC(gRegValueEntSpec), LWMSG_POINTER_END, LWMSG_ATTR_LENGTH_MEMBER(REG_IPC_QUERY_MULTIPLE_VALUES_REQ, num_vals), LWMSG_MEMBER_UINT32(REG_IPC_QUERY_MULTIPLE_VALUES_REQ, dwTotalsize), LWMSG_MEMBER_PWSTR(REG_IPC_QUERY_MULTIPLE_VALUES_REQ, pValue), LWMSG_ATTR_LENGTH_MEMBER(REG_IPC_QUERY_MULTIPLE_VALUES_REQ, dwTotalsize), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gRegQueryMultipleValuesRespSpec[] = { // DWORD num_vals; // PVALENT val_list;
static LWMsgTypeSpec gLWNetDcAddressSpec[] = { LWMSG_STRUCT_BEGIN(LWNET_DC_ADDRESS), LWMSG_MEMBER_PSTR(LWNET_DC_ADDRESS, pszDomainControllerName), LWMSG_MEMBER_PSTR(LWNET_DC_ADDRESS, pszDomainControllerAddress), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gLWNetIpcDcListSpec[] = { LWMSG_STRUCT_BEGIN(LWNET_IPC_DC_LIST), LWMSG_MEMBER_UINT32(LWNET_IPC_DC_LIST, dwDcCount), LWMSG_MEMBER_POINTER_BEGIN(LWNET_IPC_DC_LIST, pDcList), LWMSG_TYPESPEC(gLWNetDcAddressSpec), LWMSG_POINTER_END, LWMSG_ATTR_LENGTH_MEMBER(LWNET_IPC_DC_LIST, dwDcCount), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gLWNetAddrTypeSpec[] = { LWMSG_ENUM_BEGIN(LWNET_ADDR_TYPE, 2, LWMSG_UNSIGNED), LWMSG_ENUM_VALUE(LWNET_IP_ADDR_V4), LWMSG_ENUM_VALUE(LWNET_IP_ADDR_V6), LWMSG_ENUM_END, LWMSG_TYPE_END };
}; /******************************************************************************/ static LWMsgTypeSpec gNtlmSecBufferDescSpec[] = { // For now, I don't believe we need this version information // DWORD ulVersion; // DWORD cBuffers; // PSecBuffer pBuffers; LWMSG_STRUCT_BEGIN(SecBufferDesc), //LWMSG_MEMBER_UINT32(SecBufferDesc, ulVersion), LWMSG_MEMBER_UINT32(SecBufferDesc, cBuffers), LWMSG_MEMBER_POINTER_BEGIN(SecBufferDesc, pBuffers), LWMSG_TYPESPEC(gNtlmSecBufferSpec), LWMSG_POINTER_END, LWMSG_ATTR_LENGTH_MEMBER(SecBufferDesc, cBuffers), LWMSG_STRUCT_END, LWMSG_TYPE_END }; /******************************************************************************/ static LWMsgTypeSpec gNtlmLuidSpec[] = { // DWORD LowPart; // INT HighPart; LWMSG_STRUCT_BEGIN(LUID), LWMSG_MEMBER_UINT32(LUID, LowPart),
LWMSG_MEMBER_UINT32(FILE_INFO_3, fi3_idd), LWMSG_MEMBER_UINT32(FILE_INFO_3, fi3_permissions), LWMSG_MEMBER_UINT32(FILE_INFO_3, fi3_num_locks), LWMSG_MEMBER_PWSTR(FILE_INFO_3, fi3_path_name), LWMSG_MEMBER_PWSTR(FILE_INFO_3, fi3_username), LWMSG_STRUCT_END, LWMSG_TYPE_END }; #define FILE_INFO_LEVEL_2 2 #define FILE_INFO_LEVEL_3 3 static LWMsgTypeSpec gFileInfoUnionSpec[] = { LWMSG_UNION_BEGIN(FILE_INFO_UNION), LWMSG_MEMBER_POINTER(FILE_INFO_UNION, p2, LWMSG_TYPESPEC(gFileInfo2Spec)), LWMSG_ATTR_TAG(FILE_INFO_LEVEL_2), LWMSG_MEMBER_POINTER(FILE_INFO_UNION, p3, LWMSG_TYPESPEC(gFileInfo3Spec)), LWMSG_ATTR_TAG(FILE_INFO_LEVEL_3), LWMSG_UNION_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gFileInfoEnumInParamsSpec[] = { LWMSG_STRUCT_BEGIN(FILE_INFO_ENUM_IN_PARAMS), LWMSG_MEMBER_PWSTR(FILE_INFO_ENUM_IN_PARAMS, pwszBasepath), LWMSG_MEMBER_PWSTR(FILE_INFO_ENUM_IN_PARAMS, pwszUsername), LWMSG_MEMBER_UINT32(FILE_INFO_ENUM_IN_PARAMS, dwInfoLevel), LWMSG_MEMBER_UINT32(FILE_INFO_ENUM_IN_PARAMS, dwPreferredMaxLength), LWMSG_MEMBER_UINT32(FILE_INFO_ENUM_IN_PARAMS, dwEntriesRead),