LWMSG_POINTER_END, //LWMSG_ATTR_LENGTH_MEMBER(SECURITY_ATTRIBUTES, nLength), see above comment LWMSG_MEMBER_UINT32(SECURITY_ATTRIBUTES, bInheritHandle), LWMSG_STRUCT_END, LWMSG_TYPE_END }; */ /******************************************************************************/ static LWMsgTypeSpec gRegIPCErrorSpec[] = { //NTSTATUS status; LWMSG_STRUCT_BEGIN(REG_IPC_STATUS), LWMSG_MEMBER_UINT32(REG_IPC_STATUS, status), LWMSG_STRUCT_END, LWMSG_TYPE_END }; /******************************************************************************/ static LWMsgTypeSpec gRegCreateKeyExSpec[] = { // IN HKEY hKey, // IN PCWSTR pSubKey, // IN DWORD Reserved, // IN OPTIONAL PWSTR pClass, // IN DWORD dwOptions, // IN ACCESS_MASK AccessDesired,
}; static LWMsgTypeSpec gLogTypeSpec[] = { LWMSG_ENUM_BEGIN(LW_SM_LOGGER_TYPE, 1, LWMSG_UNSIGNED), LWMSG_ENUM_VALUE(LW_SM_LOGGER_DEFAULT), LWMSG_ENUM_VALUE(LW_SM_LOGGER_NONE), LWMSG_ENUM_VALUE(LW_SM_LOGGER_SYSLOG), LWMSG_ENUM_VALUE(LW_SM_LOGGER_FILE), LWMSG_ENUM_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gServiceInfoSpec[] = { LWMSG_STRUCT_BEGIN(LW_SERVICE_INFO), LWMSG_MEMBER_PWSTR(LW_SERVICE_INFO, pwszName), LWMSG_MEMBER_PWSTR(LW_SERVICE_INFO, pwszDescription), LWMSG_MEMBER_TYPESPEC(LW_SERVICE_INFO, type, gServiceTypeSpec), LWMSG_MEMBER_PWSTR(LW_SERVICE_INFO, pwszPath), LWMSG_ATTR_NOT_NULL, LWMSG_MEMBER_TYPESPEC(LW_SERVICE_INFO, ppwszArgs, gStringListSpec), LWMSG_MEMBER_TYPESPEC(LW_SERVICE_INFO, ppwszEnv, gStringListSpec), LWMSG_MEMBER_TYPESPEC(LW_SERVICE_INFO, ppwszDependencies, gStringListSpec), LWMSG_MEMBER_PWSTR(LW_SERVICE_INFO, pwszGroup), LWMSG_MEMBER_TYPESPEC(LW_SERVICE_INFO, bAutostart, gBooleanSpec), LWMSG_MEMBER_UINT32(LW_SERVICE_INFO, dwFdLimit), LWMSG_MEMBER_UINT32(LW_SERVICE_INFO, dwCoreSize), LWMSG_MEMBER_UINT32(LW_SERVICE_INFO, uShutdownTimeout), LWMSG_STRUCT_END, LWMSG_TYPE_END
if (*fooptr != -42) { return LWMSG_STATUS_MALFORMED; } else { return LWMSG_STATUS_SUCCESS; } } #define LEN_MAX ((size_t) -1) static LWMsgTypeSpec basic_spec[] = { LWMSG_STRUCT_BEGIN(basic_struct), LWMSG_MEMBER_INT16(basic_struct, foo), LWMSG_ATTR_VERIFY(basic_verify_foo, NULL), LWMSG_MEMBER_UINT64(basic_struct, len), LWMSG_ATTR_RANGE(1, LEN_MAX / 2), LWMSG_MEMBER_POINTER(basic_struct, long_ptr, LWMSG_INT64(long)), LWMSG_ATTR_NOT_NULL, LWMSG_ATTR_LENGTH_MEMBER(basic_struct, len), LWMSG_STRUCT_END, LWMSG_TYPE_END }; MU_TEST(marshal, basic) { static const unsigned char expected[] = { /* -42 */ 0xFF, 0xD6, /* 2 */
static LWMsgTypeSpec gSecurityTokenType[] = { 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),
* Authors: Krishna Ganugapati ([email protected]) * Marc Guy ([email protected]) * */ #include "ipc.h" /******************************************************************************/ static LWMsgTypeSpec gNtlmSecBufferSpec[] = { // DWORD cbBuffer; // DWORD BufferType; // PVOID pvBuffer; LWMSG_STRUCT_BEGIN(SecBuffer), LWMSG_MEMBER_UINT32(SecBuffer, cbBuffer), LWMSG_MEMBER_UINT32(SecBuffer, BufferType), LWMSG_MEMBER_POINTER(SecBuffer, pvBuffer, LWMSG_UINT8(CHAR)), LWMSG_ATTR_LENGTH_MEMBER(SecBuffer, cbBuffer), LWMSG_ATTR_ENCODING("hex+ascii"), LWMSG_STRUCT_END, LWMSG_TYPE_END }; /******************************************************************************/ static LWMsgTypeSpec gNtlmSecBufferDescSpec[] = { // For now, I don't believe we need this version information // DWORD ulVersion;
typedef struct CounterAdd { CounterHandle* handle; int delta; } CounterAdd; LWMsgTypeSpec counterhandle_spec[] = { LWMSG_HANDLE(CounterHandle), LWMSG_ATTR_NOT_NULL, LWMSG_TYPE_END }; LWMsgTypeSpec counterrequest_spec[] = { LWMSG_STRUCT_BEGIN(CounterRequest), LWMSG_MEMBER_INT16(CounterRequest, counter), LWMSG_STRUCT_END, LWMSG_TYPE_END }; LWMsgTypeSpec counteradd_spec[] = { LWMSG_STRUCT_BEGIN(CounterAdd), LWMSG_MEMBER_HANDLE(CounterAdd, handle, CounterHandle), LWMSG_MEMBER_INT16(CounterAdd, delta), LWMSG_STRUCT_END, LWMSG_TYPE_END }; LWMsgTypeSpec counterreply_spec[] =
LWMSG_MEMBER_POINTER_BEGIN(_type, _field), \ LWMSG_UINT16(WCHAR), \ LWMSG_POINTER_END, \ LWMSG_ATTR_ZERO_TERMINATED, \ LWMSG_ATTR_ENCODING(UCS2_NATIVE) #define LWMSG_PWSTR \ LWMSG_POINTER_BEGIN, \ LWMSG_UINT16(WCHAR), \ LWMSG_POINTER_END, \ LWMSG_ATTR_STRING static LWMsgTypeSpec gLWNetIpcErrorSpec[] = { LWMSG_STRUCT_BEGIN(LWNET_IPC_ERROR), LWMSG_MEMBER_UINT32(LWNET_IPC_ERROR, dwError), LWMSG_MEMBER_PSTR(LWNET_IPC_ERROR, pszErrorMessage), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gLWNetIpcLogInfoSpec[] = { LWMSG_STRUCT_BEGIN(LWNET_IPC_LOG_INFO), LWMSG_MEMBER_UINT32(LWNET_IPC_LOG_INFO, LogLevel), LWMSG_MEMBER_UINT32(LWNET_IPC_LOG_INFO, LogTarget), LWMSG_MEMBER_PSTR(LWNET_IPC_LOG_INFO, pszLogPath), LWMSG_STRUCT_END, LWMSG_TYPE_END };
* * Abstract: * * Likewise I/O Subsystem (LWIO) * * File Information IPC * * Authors: Sriram Nambakam ([email protected]) * */ #include "includes.h" static LWMsgTypeSpec gFileInfo2Spec[] = { LWMSG_STRUCT_BEGIN(FILE_INFO_2), LWMSG_MEMBER_UINT32(FILE_INFO_2, fi2_id), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gFileInfo3Spec[] = { LWMSG_STRUCT_BEGIN(FILE_INFO_3), 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