LWMSG_ENUM_BEGIN(enum _LW_IO_CREDS_TYPE, 1, LWMSG_UNSIGNED), LWMSG_ENUM_VALUE(IO_CREDS_TYPE_PLAIN), LWMSG_ENUM_VALUE(IO_CREDS_TYPE_KRB5_CCACHE), LWMSG_ENUM_VALUE(IO_CREDS_TYPE_KRB5_TGT), LWMSG_ENUM_END, LWMSG_TYPE_END }; LWMsgTypeSpec gSecurityTokenRepSpec[] = { /* Begin structure */ LWMSG_STRUCT_BEGIN(IO_CREDS), /* Discriminator */ LWMSG_MEMBER_TYPESPEC(IO_CREDS, type, gSecurityTokenType), /* Begin union */ LWMSG_MEMBER_UNION_BEGIN(IO_CREDS, payload), /* Union arm -- plain */ LWMSG_MEMBER_STRUCT_BEGIN(union _LW_IO_CREDS_U, plain), LWMSG_MEMBER_PWSTR(struct _LW_IO_CREDS_PLAIN, pwszUsername), LWMSG_MEMBER_PWSTR(struct _LW_IO_CREDS_PLAIN, pwszDomain), LWMSG_MEMBER_PWSTR(struct _LW_IO_CREDS_PLAIN, pwszPassword), LWMSG_ATTR_SENSITIVE, LWMSG_STRUCT_END, LWMSG_ATTR_TAG(IO_CREDS_TYPE_PLAIN), /* Union arm -- krb5 ccache */ LWMSG_MEMBER_STRUCT_BEGIN(union _LW_IO_CREDS_U, krb5Ccache), LWMSG_MEMBER_PWSTR(struct _LW_IO_CREDS_KRB5_CCACHE, pwszPrincipal), LWMSG_MEMBER_PWSTR(struct _LW_IO_CREDS_KRB5_CCACHE, pwszCachePath), LWMSG_STRUCT_END, LWMSG_ATTR_TAG(IO_CREDS_TYPE_KRB5_CCACHE), /* Union arm -- krb5 tgt */
{ LWMSG_STRUCT_BEGIN(LWREG_VALUE_ATTRIBUTES), LWMSG_MEMBER_UINT32(LWREG_VALUE_ATTRIBUTES, ValueType), LWMSG_MEMBER_UINT32(LWREG_VALUE_ATTRIBUTES, DefaultValueLen), LWMSG_MEMBER_PBYTE(LWREG_VALUE_ATTRIBUTES, pDefaultValue), LWMSG_ATTR_LENGTH_MEMBER(LWREG_VALUE_ATTRIBUTES, DefaultValueLen), LWMSG_MEMBER_PWSTR(LWREG_VALUE_ATTRIBUTES, pwszDocString), LWMSG_MEMBER_UINT8(LWREG_VALUE_ATTRIBUTES, RangeType), LWMSG_MEMBER_UINT8(LWREG_VALUE_ATTRIBUTES, Hint), // range union LWMSG_MEMBER_UNION_BEGIN(LWREG_VALUE_ATTRIBUTES, Range), LWMSG_MEMBER_TYPESPEC(union _LWREG_RANGE, RangeInteger, gRegValueRangeInteger), LWMSG_ATTR_TAG(LWREG_VALUE_RANGE_TYPE_INTEGER), LWMSG_MEMBER_POINTER_BEGIN(union _LWREG_RANGE, ppwszRangeEnumStrings), LWMSG_PWSTR, LWMSG_POINTER_END, LWMSG_ATTR_ZERO_TERMINATED, LWMSG_ATTR_TAG(LWREG_VALUE_RANGE_TYPE_ENUM), LWMSG_MEMBER_VOID(union _LWREG_RANGE, bool_empty), // can be any arbitrary name LWMSG_ATTR_TAG(LWREG_VALUE_RANGE_TYPE_BOOLEAN), LWMSG_MEMBER_VOID(union _LWREG_RANGE, empty), // can be any arbitrary name LWMSG_ATTR_TAG(LWREG_VALUE_RANGE_TYPE_NONE), LWMSG_UNION_END, LWMSG_ATTR_DISCRIM(LWREG_VALUE_ATTRIBUTES, RangeType), LWMSG_STRUCT_END,
LWMSG_MEMBER_UINT32(NTLM_IPC_QUERY_CREDS_REQ, ulAttribute), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gNtlmQueryCredsRespSpec[] = { //DWORD ulAttribute; //SecPkgCred Buffer; LWMSG_STRUCT_BEGIN(NTLM_IPC_QUERY_CREDS_RESPONSE), LWMSG_MEMBER_UINT32(NTLM_IPC_QUERY_CREDS_RESPONSE, ulAttribute), LWMSG_MEMBER_UNION_BEGIN(NTLM_IPC_QUERY_CREDS_RESPONSE, Buffer), LWMSG_MEMBER_POINTER_BEGIN(SecPkgCred, pNames), LWMSG_TYPESPEC(gNtlmSecPkgCredNamesSpec), LWMSG_POINTER_END, LWMSG_ATTR_TAG(SECPKG_CRED_ATTR_NAMES), LWMSG_MEMBER_POINTER_BEGIN(SecPkgCred, pDomainName), LWMSG_TYPESPEC(gNtlmSecPkgCredDomainNameSpec), LWMSG_POINTER_END, LWMSG_ATTR_TAG(SECPKG_CRED_ATTR_DOMAIN_NAME), LWMSG_UNION_END, LWMSG_ATTR_DISCRIM(NTLM_IPC_QUERY_CREDS_RESPONSE, ulAttribute), LWMSG_STRUCT_END,