LWMSG_MEMBER_POINTER_BEGIN(REG_IPC_GET_VALUE_ATTRS_RESPONSE, pValueAttributes), LWMSG_TYPESPEC(gRegValueAttributesSpec), LWMSG_POINTER_END, LWMSG_STRUCT_END, LWMSG_TYPE_END }; /******************************************************************************/ static LWMsgProtocolSpec gRegIPCSpec[] = { /*Key Operation APIS*/ LWMSG_MESSAGE(REG_R_ERROR, gRegIPCErrorSpec), // REG_IPC_ERROR LWMSG_MESSAGE(REG_Q_ENUM_ROOT_KEYSW, NULL), LWMSG_MESSAGE(REG_R_ENUM_ROOT_KEYSW, gRegEnumRootKeysRespSpec), LWMSG_MESSAGE(REG_Q_OPEN_KEYW_EX, gRegOpenKeyExSpec), LWMSG_MESSAGE(REG_R_OPEN_KEYW_EX, gRegOpenKeyExRespSpec), LWMSG_MESSAGE(REG_Q_CREATE_KEY_EX, gRegCreateKeyExSpec), LWMSG_MESSAGE(REG_R_CREATE_KEY_EX, gRegCreateKeyExRespSpec), LWMSG_MESSAGE(REG_Q_CLOSE_KEY, gRegCloseKeySpec), LWMSG_MESSAGE(REG_R_CLOSE_KEY, NULL), LWMSG_MESSAGE(REG_Q_DELETE_KEY, gRegDeleteKeySpec), LWMSG_MESSAGE(REG_R_DELETE_KEY, NULL), LWMSG_MESSAGE(REG_Q_QUERY_INFO_KEYW, gRegQueryInfoKeySpec), LWMSG_MESSAGE(REG_R_QUERY_INFO_KEYW, gRegQueryInfoKeyRespSpec), LWMSG_MESSAGE(REG_Q_ENUM_KEYW_EX, gRegEnumKeyExSpec), LWMSG_MESSAGE(REG_R_ENUM_KEYW_EX, gRegEnumKeyExRespSpec), /*Value Operation APIs*/
LWMSG_MEMBER_TYPESPEC(SM_SET_GLOBAL_REQ, Value, gGlobalValueSpec), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgTypeSpec gGetGlobalReqSpec[] = { LWMSG_STRUCT_BEGIN(SM_GET_GLOBAL_REQ), LWMSG_MEMBER_TYPESPEC(SM_GET_GLOBAL_REQ, Setting, gGlobalSettingSpec), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgProtocolSpec gIpcSpec[] = { LWMSG_MESSAGE(SM_IPC_ERROR, gErrorSpec), LWMSG_MESSAGE(SM_IPC_ACQUIRE_SERVICE_HANDLE_REQ, gStringSpec), LWMSG_MESSAGE(SM_IPC_ACQUIRE_SERVICE_HANDLE_RES, gNewHandleSpec), LWMSG_MESSAGE(SM_IPC_RELEASE_SERVICE_HANDLE_REQ, gExistingHandleSpec), LWMSG_MESSAGE(SM_IPC_RELEASE_SERVICE_HANDLE_RES, NULL), LWMSG_MESSAGE(SM_IPC_ENUMERATE_SERVICES_REQ, NULL), LWMSG_MESSAGE(SM_IPC_ENUMERATE_SERVICES_RES, gStringListSpec), LWMSG_MESSAGE(SM_IPC_ADD_SERVICE_REQ, gServiceInfoSpec), LWMSG_MESSAGE(SM_IPC_ADD_SERVICE_RES, gNewHandleSpec), LWMSG_MESSAGE(SM_IPC_REMOVE_SERVICE_REQ, gExistingHandleSpec), LWMSG_MESSAGE(SM_IPC_REMOVE_SERVICE_RES, NULL), LWMSG_MESSAGE(SM_IPC_START_SERVICE_REQ, gExistingHandleSpec), LWMSG_MESSAGE(SM_IPC_START_SERVICE_RES, NULL), LWMSG_MESSAGE(SM_IPC_STOP_SERVICE_REQ, gExistingHandleSpec), LWMSG_MESSAGE(SM_IPC_STOP_SERVICE_RES, NULL), LWMSG_MESSAGE(SM_IPC_REFRESH_SERVICE_REQ, gExistingHandleSpec),
static LWMsgTypeSpec gDriverStateSpec[] = { LWMSG_UINT8(LWIO_DRIVER_STATE), LWMSG_ATTR_RANGE(LWIO_DRIVER_STATE_UNKNOWN, LWIO_DRIVER_STATE_LOADED), LWMSG_TYPE_END }; static LWMsgTypeSpec gPidSpec[] = { LWMSG_INT32(pid_t), LWMSG_TYPE_END }; static LWMsgProtocolSpec gLwIoDaemonProtocolSpec[] = { LWMSG_MESSAGE(LWIO_QUERY_STATE_DRIVER, gDriverNameSpec), LWMSG_MESSAGE(LWIO_QUERY_STATE_DRIVER_SUCCESS, gDriverStateSpec), LWMSG_MESSAGE(LWIO_QUERY_STATE_DRIVER_FAILED, gStatusReplySpec), LWMSG_MESSAGE(LWIO_LOAD_DRIVER, gDriverNameSpec), LWMSG_MESSAGE(LWIO_LOAD_DRIVER_SUCCESS, gStatusReplySpec), LWMSG_MESSAGE(LWIO_LOAD_DRIVER_FAILED, gStatusReplySpec), LWMSG_MESSAGE(LWIO_UNLOAD_DRIVER, gDriverNameSpec), LWMSG_MESSAGE(LWIO_UNLOAD_DRIVER_SUCCESS, gStatusReplySpec), LWMSG_MESSAGE(LWIO_UNLOAD_DRIVER_FAILED, gStatusReplySpec), LWMSG_MESSAGE(LWIO_GET_PID, NULL), LWMSG_MESSAGE(LWIO_GET_PID_SUCCESS, gPidSpec), LWMSG_MESSAGE(LWIO_GET_PID_FAILED, gStatusReplySpec), LWMSG_PROTOCOL_END }; NTSTATUS
{ //DWORD dwQop; LWMSG_STRUCT_BEGIN(NTLM_IPC_VERIFY_SIGN_RESPONSE), LWMSG_MEMBER_UINT32(NTLM_IPC_VERIFY_SIGN_RESPONSE, dwQop), LWMSG_STRUCT_END, LWMSG_TYPE_END }; /******************************************************************************/ static LWMsgProtocolSpec gNtlmIpcSpec[] = { LWMSG_MESSAGE(NTLM_R_GENERIC_FAILURE, gNtlmIpcErrorSpec), LWMSG_MESSAGE(NTLM_Q_ACCEPT_SEC_CTXT, gNtlmAcceptSecCtxtSpec), LWMSG_MESSAGE(NTLM_R_ACCEPT_SEC_CTXT_SUCCESS, gNtlmAcceptSecCtxtRespSpec), LWMSG_MESSAGE(NTLM_Q_ACQUIRE_CREDS, gNtlmAcquireCredsSpec), LWMSG_MESSAGE(NTLM_R_ACQUIRE_CREDS_SUCCESS, gNtlmAcquireCredsRespSpec), LWMSG_MESSAGE(NTLM_Q_DECRYPT_MSG, gNtlmDecryptMsgSpec), LWMSG_MESSAGE(NTLM_R_DECRYPT_MSG_SUCCESS, gNtlmDecryptMsgRespSpec), LWMSG_MESSAGE(NTLM_Q_DELETE_SEC_CTXT, gNtlmDeleteSecCtxtSpec), LWMSG_MESSAGE(NTLM_R_DELETE_SEC_CTXT_SUCCESS, NULL), LWMSG_MESSAGE(NTLM_Q_ENCRYPT_MSG, gNtlmEncryptMsgSpec), LWMSG_MESSAGE(NTLM_R_ENCRYPT_MSG_SUCCESS, gNtlmEncryptMsgRespSpec),
typedef enum CounterType { COUNTER_OPEN, COUNTER_OPEN_SUCCESS, COUNTER_CLOSE, COUNTER_CLOSE_SUCCESS, COUNTER_ADD, COUNTER_ADD_SUCCESS, COUNTER_READ, COUNTER_READ_SUCCESS } CounterType; LWMsgProtocolSpec counterprotocol_spec[] = { LWMSG_MESSAGE(COUNTER_OPEN, counterrequest_spec), LWMSG_MESSAGE(COUNTER_OPEN_SUCCESS, counterhandle_spec), LWMSG_MESSAGE(COUNTER_ADD, counteradd_spec), LWMSG_MESSAGE(COUNTER_ADD_SUCCESS, counterreply_spec), LWMSG_MESSAGE(COUNTER_READ, counterhandle_spec), LWMSG_MESSAGE(COUNTER_READ_SUCCESS, counterreply_spec), LWMSG_MESSAGE(COUNTER_CLOSE, counterhandle_spec), LWMSG_MESSAGE(COUNTER_CLOSE_SUCCESS, counterreply_spec), LWMSG_PROTOCOL_END }; static LWMsgStatus counter_srv_open(LWMsgCall* call, const LWMsgParams* request_msg, LWMsgParams* reply_msg, void* data) { LWMsgStatus status = LWMSG_STATUS_SUCCESS; CounterHandle* handle = malloc(sizeof(*handle));
// ppAddressList LWMSG_MEMBER_POINTER_BEGIN(LWNET_RESOLVE_NAME_ADDRESS_RESPONSE, ppAddressList), LWMSG_POINTER_BEGIN, LWMSG_TYPESPEC(gLWNetResolveAddr), LWMSG_POINTER_END, LWMSG_POINTER_END, LWMSG_ATTR_LENGTH_MEMBER(LWNET_RESOLVE_NAME_ADDRESS_RESPONSE, dwAddressListLen), LWMSG_STRUCT_END, LWMSG_TYPE_END }; static LWMsgProtocolSpec gLWNetIPCSpec[] = { LWMSG_MESSAGE(LWNET_R_ERROR, gLWNetIpcErrorSpec), // LWNET_IPC_ERROR LWMSG_MESSAGE(LWNET_Q_SET_LOG_LEVEL, gLWNetIpcLogInfoSpec), // LWNET_IPC_LOG_INFO LWMSG_MESSAGE(LWNET_R_SET_LOG_LEVEL, NULL), // NULL LWMSG_MESSAGE(LWNET_Q_GET_LOG_INFO, NULL), // NULL LWMSG_MESSAGE(LWNET_R_GET_LOG_INFO, gLWNetIpcLogInfoSpec), // LWNET_IPC_LOG_INFO LWMSG_MESSAGE(LWNET_Q_GET_DC_TIME, gLWNetIpcConstStringSpec), // LWNET_IPC_CONST_STRING LWMSG_MESSAGE(LWNET_R_GET_DC_TIME, gLWNetIpcTimeSpec), // LWNET_IPC_TIME LWMSG_MESSAGE(LWNET_Q_GET_DC_NAME, gLWNetIpcGetDcSpec), // LWNET_IPC_GET_DC LWMSG_MESSAGE(LWNET_R_GET_DC_NAME, gLWNetDcInfoSpec), // LWNET_DC_INFO LWMSG_MESSAGE(LWNET_Q_GET_DOMAIN_CONTROLLER, gLWNetIpcConstStringSpec), // LWNET_IPC_CONST_STRING LWMSG_MESSAGE(LWNET_R_GET_DOMAIN_CONTROLLER, gLWNetIpcStringSpec), // LWNET_IPC_STRING LWMSG_MESSAGE(LWNET_Q_GET_DC_LIST, gLWNetIpcGetDcSpec), // LWNET_IPC_GET_DC LWMSG_MESSAGE(LWNET_R_GET_DC_LIST, gLWNetIpcDcListSpec), // LWNET_IPC_DC_LIST LWMSG_MESSAGE(LWNET_Q_RESOLVE_NAME, gLWNetResolveNameAddressSpec), // LWNET_IPC_RESOLVE_NAME LWMSG_MESSAGE(LWNET_R_RESOLVE_NAME, gLWNetResolveNameAddressRespSpec), // LWNET_IPC_RESOLVE_NAME LWMSG_PROTOCOL_END