⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipmpx_code.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 5 页
字号:
		gf_bs_write_data(bs, p->opaqueData, p->opaqueDataSize);	}	return GF_OK;}static GF_IPMPX_Data *NewGF_IPMPX_SendWatermark(u8 tag){	GF_IPMPX_SendWatermark*ptr;	GF_IPMPX_DATA_ALLOC(ptr, GF_IPMPX_SendWatermark, tag);	return (GF_IPMPX_Data *) ptr;}static void DelGF_IPMPX_SendWatermark(GF_IPMPX_Data *_p){	GF_IPMPX_SendWatermark*p = (GF_IPMPX_SendWatermark*)_p;	GF_IPMPX_DELETE_ARRAY(p->payload);	GF_IPMPX_DELETE_ARRAY(p->opaqueData);	free(p);}static GF_Err ReadGF_IPMPX_SendWatermark(GF_BitStream *bs, GF_IPMPX_Data *_p, u32 size){	Bool has_op_data;	GF_IPMPX_SendWatermark *p = (GF_IPMPX_SendWatermark*)_p;	p->wm_status = gf_bs_read_int(bs, 2);	p->compression_status = gf_bs_read_int(bs, 2);	has_op_data = gf_bs_read_int(bs, 1);	gf_bs_read_int(bs, 3);	if (p->wm_status==GF_IPMPX_WM_PAYLOAD) p->payload = GF_IPMPX_GetByteArray(bs);	if (has_op_data) p->opaqueData = GF_IPMPX_GetByteArray(bs);	return GF_OK;}static u32 SizeGF_IPMPX_SendWatermark(GF_IPMPX_Data *_p){	u32 size;	GF_IPMPX_SendWatermark *p = (GF_IPMPX_SendWatermark*)_p;	size = 1;	if (p->payload) size += GF_IPMPX_GetByteArraySize(p->payload);	if (p->opaqueData) size += GF_IPMPX_GetByteArraySize(p->opaqueData);	return size;}static GF_Err WriteGF_IPMPX_SendWatermark(GF_BitStream *bs, GF_IPMPX_Data *_p){	GF_IPMPX_SendWatermark*p = (GF_IPMPX_SendWatermark*)_p;	if (p->payload) p->wm_status = GF_IPMPX_WM_PAYLOAD;	gf_bs_write_int(bs, p->wm_status, 2);	gf_bs_write_int(bs, p->compression_status, 2);	gf_bs_write_int(bs, p->opaqueData ? 1 : 0, 1);	gf_bs_write_int(bs, 0, 3);	if (p->payload) GF_IPMPX_WriteByteArray(bs, p->payload);	if (p->opaqueData) GF_IPMPX_WriteByteArray(bs, p->opaqueData);	return GF_OK;}static GF_IPMPX_Data *NewGF_IPMPX_ToolAPI_Config(){	GF_IPMPX_ToolAPI_Config*ptr;	GF_IPMPX_DATA_ALLOC(ptr, GF_IPMPX_ToolAPI_Config, GF_IPMPX_TOOL_API_CONFIG_TAG);	return (GF_IPMPX_Data *) ptr;}static void DelGF_IPMPX_ToolAPI_Config(GF_IPMPX_Data *_p){	GF_IPMPX_ToolAPI_Config*p = (GF_IPMPX_ToolAPI_Config*)_p;	GF_IPMPX_DELETE_ARRAY(p->opaqueData);	free(p);}static GF_Err ReadGF_IPMPX_ToolAPI_Config(GF_BitStream *bs, GF_IPMPX_Data *_p, u32 size){	Bool has_i, has_m;	GF_IPMPX_ToolAPI_Config*p = (GF_IPMPX_ToolAPI_Config*)_p;	has_i = gf_bs_read_int(bs, 1);	has_m = gf_bs_read_int(bs, 1);	gf_bs_read_int(bs, 6);	if (has_i) p->Instantiation_API_ID = gf_bs_read_int(bs, 32);	if (has_m) p->Messaging_API_ID = gf_bs_read_int(bs, 32);	p->opaqueData = GF_IPMPX_GetByteArray(bs);	return GF_OK;}static u32 SizeGF_IPMPX_ToolAPI_Config(GF_IPMPX_Data *_p){	u32 size;	GF_IPMPX_ToolAPI_Config *p = (GF_IPMPX_ToolAPI_Config*)_p;	size = 1;	if (p->Instantiation_API_ID) size += 4;	if (p->Messaging_API_ID ) size += 4;	size += GF_IPMPX_GetByteArraySize(p->opaqueData);	return size;}static GF_Err WriteGF_IPMPX_ToolAPI_Config(GF_BitStream *bs, GF_IPMPX_Data *_p){	GF_IPMPX_ToolAPI_Config*p = (GF_IPMPX_ToolAPI_Config*)_p;	gf_bs_write_int(bs, p->Instantiation_API_ID ? 1 : 0, 1);	gf_bs_write_int(bs, p->Messaging_API_ID ? 1 : 0, 1);	gf_bs_write_int(bs, 0, 6);	if (p->Instantiation_API_ID) gf_bs_write_int(bs, p->Instantiation_API_ID, 32);	if (p->Messaging_API_ID) gf_bs_write_int(bs, p->Messaging_API_ID, 32);	GF_IPMPX_WriteByteArray(bs, p->opaqueData);	return GF_OK;}static GF_IPMPX_Data *NewGF_IPMPX_ISMACryp(){	GF_IPMPX_ISMACryp *ptr;	GF_IPMPX_DATA_ALLOC(ptr, GF_IPMPX_ISMACryp, GF_IPMPX_ISMACRYP_TAG);	return (GF_IPMPX_Data *) ptr;}static void DelGF_IPMPX_ISMACryp(GF_IPMPX_Data *_p){	GF_IPMPX_ISMACryp*p = (GF_IPMPX_ISMACryp*)_p;	free(p);}static GF_Err ReadGF_IPMPX_ISMACryp(GF_BitStream *bs, GF_IPMPX_Data *_p, u32 size){	GF_IPMPX_ISMACryp*p = (GF_IPMPX_ISMACryp*)_p;	p->cryptoSuite = gf_bs_read_int(bs, 8);	p->IV_length = gf_bs_read_int(bs, 8);	p->use_selective_encryption = gf_bs_read_int(bs, 1);	gf_bs_read_int(bs, 7);	p->key_indicator_length = gf_bs_read_int(bs, 8);	return GF_OK;}static u32 SizeGF_IPMPX_ISMACryp(GF_IPMPX_Data *_p){	return 4;}static GF_Err WriteGF_IPMPX_ISMACryp(GF_BitStream *bs, GF_IPMPX_Data *_p){	GF_IPMPX_ISMACryp*p = (GF_IPMPX_ISMACryp*)_p;	gf_bs_write_int(bs, p->cryptoSuite, 8);	gf_bs_write_int(bs, p->IV_length, 8);	gf_bs_write_int(bs, p->use_selective_encryption ? 1 : 0, 1);	gf_bs_write_int(bs, 0, 7);	gf_bs_write_int(bs, p->key_indicator_length, 8);	return GF_OK;}GF_IPMPX_Data *gf_ipmpx_data_new(u8 tag){	switch (tag) {	case GF_IPMPX_RIGHTS_DATA_TAG:	case GF_IPMPX_OPAQUE_DATA_TAG: return NewGF_IPMPX_OpaqueData(tag);	case GF_IPMPX_KEY_DATA_TAG: return NewGF_IPMPX_KeyData();	case GF_IPMPX_SECURE_CONTAINER_TAG: return NewGF_IPMPX_SecureContainer();	case GF_IPMPX_ADD_TOOL_LISTENER_TAG: return NewGF_IPMPX_AddToolNotificationListener();	case GF_IPMPX_REMOVE_TOOL_LISTENER_TAG: return NewGF_IPMPX_RemoveToolNotificationListener();	case GF_IPMPX_INIT_AUTHENTICATION_TAG: return NewGF_IPMPX_InitAuthentication();	case GF_IPMPX_MUTUAL_AUTHENTICATION_TAG: return NewGF_IPMPX_MutualAuthentication();	case GF_IPMPX_PARAMETRIC_DESCRIPTION_TAG: return NewGF_IPMPX_ParametricDescription();	case GF_IPMPX_PARAMETRIC_CAPS_QUERY_TAG: return NewGF_IPMPX_ToolParamCapabilitiesQuery();	case GF_IPMPX_PARAMETRIC_CAPS_RESPONSE_TAG: return NewGF_IPMPX_ToolParamCapabilitiesResponse();	case GF_IPMPX_GET_TOOLS_RESPONSE_TAG: return NewGF_IPMPX_GetToolsResponse();	case GF_IPMPX_GET_TOOL_CONTEXT_TAG: return NewGF_IPMPX_GetToolContext();	case GF_IPMPX_GET_TOOL_CONTEXT_RESPONSE_TAG: return NewGF_IPMPX_GetToolContextResponse();	case GF_IPMPX_CONNECT_TOOL_TAG: return NewGF_IPMPX_ConnectTool();	case GF_IPMPX_DISCONNECT_TOOL_TAG: return NewGF_IPMPX_DisconnectTool();	case GF_IPMPX_NOTIFY_TOOL_EVENT_TAG: return NewGF_IPMPX_NotifyToolEvent();	case GF_IPMPX_CAN_PROCESS_TAG: return NewGF_IPMPX_CanProcess();	case GF_IPMPX_TRUST_SECURITY_METADATA_TAG: return NewGF_IPMPX_TrustSecurityMetadata();	case GF_IPMPX_ISMACRYP_TAG: return NewGF_IPMPX_ISMACryp();	case GF_IPMPX_GET_TOOLS_TAG: 	{		GF_IPMPX_Data *p;		GF_IPMPX_DATA_ALLOC(p, GF_IPMPX_Data, GF_IPMPX_GET_TOOLS_TAG);		return p;	}	case GF_IPMPX_TRUSTED_TOOL_TAG:	{		GF_IPMPX_TrustedTool *p;		GF_IPMPX_DATA_ALLOC(p, GF_IPMPX_TrustedTool, GF_IPMPX_TRUSTED_TOOL_TAG);		p->trustSpecifications = gf_list_new();		return (GF_IPMPX_Data *)p;	}	case GF_IPMPX_TRUST_SPECIFICATION_TAG:	{		GF_IPMPX_TrustSpecification *p;		GF_IPMPX_DATA_ALLOC(p, GF_IPMPX_TrustSpecification, GF_IPMPX_TRUST_SPECIFICATION_TAG);		return (GF_IPMPX_Data *)p;	}	case GF_IPMPX_TOOL_API_CONFIG_TAG: return NewGF_IPMPX_ToolAPI_Config();	case GF_IPMPX_SEL_DEC_INIT_TAG: return NewGF_IPMPX_SelectiveDecryptionInit();	case GF_IPMPX_AUDIO_WM_INIT_TAG: 	case GF_IPMPX_VIDEO_WM_INIT_TAG: 		return NewGF_IPMPX_WatermarkingInit(tag);	case GF_IPMPX_AUDIO_WM_SEND_TAG: 	case GF_IPMPX_VIDEO_WM_SEND_TAG: 		return NewGF_IPMPX_SendWatermark(tag);	case GF_IPMPX_ALGORITHM_DESCRIPTOR_TAG:	{		GF_IPMPX_AUTH_AlgorithmDescriptor *p = (GF_IPMPX_AUTH_AlgorithmDescriptor *)malloc(sizeof(GF_IPMPX_AUTH_AlgorithmDescriptor));		if (!p) return NULL;		memset(p, 0, sizeof(GF_IPMPX_AUTH_AlgorithmDescriptor));		p->tag = GF_IPMPX_ALGORITHM_DESCRIPTOR_TAG;		return (GF_IPMPX_Data *) p;	}	case GF_IPMPX_KEY_DESCRIPTOR_TAG:	{		GF_IPMPX_AUTH_KeyDescriptor *p = (GF_IPMPX_AUTH_KeyDescriptor *)malloc(sizeof(GF_IPMPX_AUTH_KeyDescriptor));		if (!p) return NULL;		memset(p, 0, sizeof(GF_IPMPX_AUTH_KeyDescriptor));		p->tag = GF_IPMPX_KEY_DESCRIPTOR_TAG;		return (GF_IPMPX_Data *) p;	}	case GF_IPMPX_PARAM_DESCRIPTOR_ITEM_TAG:	{		GF_IPMPX_AUTH_KeyDescriptor *p = (GF_IPMPX_AUTH_KeyDescriptor *)malloc(sizeof(GF_IPMPX_ParametricDescriptionItem));		if (!p) return NULL;		memset(p, 0, sizeof(GF_IPMPX_ParametricDescriptionItem));		p->tag = GF_IPMPX_PARAM_DESCRIPTOR_ITEM_TAG;		return (GF_IPMPX_Data *) p;	}	case GF_IPMPX_SEL_ENC_BUFFER_TAG:	{		GF_IPMPX_SelEncBuffer*p = (GF_IPMPX_SelEncBuffer*)malloc(sizeof(GF_IPMPX_SelEncBuffer));		if (!p) return NULL;		memset(p, 0, sizeof(GF_IPMPX_SelEncBuffer));		p->tag = GF_IPMPX_SEL_ENC_BUFFER_TAG;		return (GF_IPMPX_Data *) p;	}	case GF_IPMPX_SEL_ENC_FIELD_TAG:	{		GF_IPMPX_SelEncField*p = (GF_IPMPX_SelEncField*)malloc(sizeof(GF_IPMPX_SelEncField));		if (!p) return NULL;		memset(p, 0, sizeof(GF_IPMPX_SelEncField));		p->tag = GF_IPMPX_SEL_ENC_FIELD_TAG;		return (GF_IPMPX_Data *) p;	}/*		case GF_IPMPX_USER_QUERY_TAG: return NewGF_IPMPX_UserQuery();	case GF_IPMPX_USER_RESPONSE_TAG: return NewGF_IPMPX_UserQueryResponse();*/	default: return NULL;	}}void gf_ipmpx_data_del(GF_IPMPX_Data *_p){	if (!_p) return;	switch (_p->tag) {	case GF_IPMPX_RIGHTS_DATA_TAG:	case GF_IPMPX_OPAQUE_DATA_TAG: DelGF_IPMPX_OpaqueData(_p); return;	case GF_IPMPX_KEY_DATA_TAG: DelGF_IPMPX_KeyData(_p); return;	case GF_IPMPX_SECURE_CONTAINER_TAG: DelGF_IPMPX_SecureContainer(_p); return;	case GF_IPMPX_ADD_TOOL_LISTENER_TAG: DelGF_IPMPX_AddToolNotificationListener(_p); return;	case GF_IPMPX_REMOVE_TOOL_LISTENER_TAG: DelGF_IPMPX_RemoveToolNotificationListener(_p); return;	case GF_IPMPX_INIT_AUTHENTICATION_TAG: DelGF_IPMPX_InitAuthentication(_p); return;	case GF_IPMPX_MUTUAL_AUTHENTICATION_TAG: DelGF_IPMPX_MutualAuthentication(_p); return;	case GF_IPMPX_PARAMETRIC_DESCRIPTION_TAG: DelGF_IPMPX_ParametricDescription(_p); return;	case GF_IPMPX_PARAMETRIC_CAPS_QUERY_TAG: DelGF_IPMPX_ToolParamCapabilitiesQuery(_p); return;	case GF_IPMPX_PARAMETRIC_CAPS_RESPONSE_TAG: DelGF_IPMPX_ToolParamCapabilitiesResponse(_p); return;	case GF_IPMPX_GET_TOOLS_RESPONSE_TAG: DelGF_IPMPX_GetToolsResponse(_p); return;	case GF_IPMPX_GET_TOOL_CONTEXT_TAG: DelGF_IPMPX_GetToolContext(_p); return;	case GF_IPMPX_GET_TOOL_CONTEXT_RESPONSE_TAG: DelGF_IPMPX_GetToolContextResponse(_p); return;	case GF_IPMPX_CONNECT_TOOL_TAG: DelGF_IPMPX_ConnectTool(_p); return;	case GF_IPMPX_DISCONNECT_TOOL_TAG: DelGF_IPMPX_DisconnectTool(_p); return;	case GF_IPMPX_NOTIFY_TOOL_EVENT_TAG: DelGF_IPMPX_NotifyToolEvent(_p); return;	case GF_IPMPX_CAN_PROCESS_TAG: DelGF_IPMPX_CanProcess(_p); return;	case GF_IPMPX_TRUST_SECURITY_METADATA_TAG: DelGF_IPMPX_TrustSecurityMetadata(_p); return;	case GF_IPMPX_TOOL_API_CONFIG_TAG: DelGF_IPMPX_ToolAPI_Config(_p); return;	case GF_IPMPX_ISMACRYP_TAG: DelGF_IPMPX_ISMACryp(_p); return;	case GF_IPMPX_SEL_DEC_INIT_TAG: DelGF_IPMPX_SelectiveDecryptionInit(_p); return;	case GF_IPMPX_AUDIO_WM_INIT_TAG: 	case GF_IPMPX_VIDEO_WM_INIT_TAG: 		DelGF_IPMPX_WatermarkingInit(_p); return;	case GF_IPMPX_AUDIO_WM_SEND_TAG: 	case GF_IPMPX_VIDEO_WM_SEND_TAG: 		DelGF_IPMPX_SendWatermark(_p); return;/*	case GF_IPMPX_USER_QUERY_TAG: DelGF_IPMPX_UserQuery(_p); return;	case GF_IPMPX_USER_RESPONSE_TAG: DelGF_IPMPX_UserQueryResponse(_p); return;*/	case GF_IPMPX_TRUSTED_TOOL_TAG:	{		GF_IPMPX_TrustedTool *p = (GF_IPMPX_TrustedTool *)_p;		while (gf_list_count(p->trustSpecifications)) {			GF_IPMPX_Data *ts = (GF_IPMPX_Data *)gf_list_get(p->trustSpecifications, 0);			gf_list_rem(p->trustSpecifications, 0);			gf_ipmpx_data_del(ts);		}		gf_list_del(p->trustSpecifications);		free(p);		return;	}	case GF_IPMPX_TRUST_SPECIFICATION_TAG:	{		GF_IPMPX_TrustSpecification *p = (GF_IPMPX_TrustSpecification *)_p;		GF_IPMPX_DELETE_ARRAY(p->CCTrustMetadata);		free(p);		return;	}	case GF_IPMPX_PARAM_DESCRIPTOR_ITEM_TAG:	{		GF_IPMPX_ParametricDescriptionItem *p = (GF_IPMPX_ParametricDescriptionItem*)_p;		GF_IPMPX_DELETE_ARRAY(p->main_class);		GF_IPMPX_DELETE_ARRAY(p->subClass);		GF_IPMPX_DELETE_ARRAY(p->typeData);		GF_IPMPX_DELETE_ARRAY(p->type);		GF_IPMPX_DELETE_ARRAY(p->addedData);		free(p);		return;	}	case GF_IPMPX_ALGORITHM_DESCRIPTOR_TAG:		_p->tag = GF_IPMPX_AUTH_AlgorithmDescr_Tag;		GF_IPMPX_AUTH_Delete((GF_IPMPX_Authentication*)_p);		return;	case GF_IPMPX_KEY_DESCRIPTOR_TAG:		_p->tag = GF_IPMPX_AUTH_KeyDescr_Tag;		GF_IPMPX_AUTH_Delete((GF_IPMPX_Authentication*)_p);		return;	case GF_IPMPX_SEL_ENC_BUFFER_TAG:	{		GF_IPMPX_SelEncBuffer*p = (GF_IPMPX_SelEncBuffer*)_p;		GF_IPMPX_DELETE_ARRAY(p->Stream_Cipher_Specific_Init_Info);		free(p);		return;	}	case GF_IPMPX_SEL_ENC_FIELD_TAG:	{		GF_IPMPX_SelEncField*p = (GF_IPMPX_SelEncField*)_p;		GF_IPMPX_DELETE_ARRAY(p->shuffleSpecificInfo);		if (p->mappingTable) free(p->mappingTable);		free(p);		return;	}	case GF_IPMPX_GET_TOOLS_TAG:	default: 		free(_p);		return;	}}GF_Err GF_IPMPX_ReadData(GF_BitStream *bs, GF_IPMPX_Data *_p, u32 read){	switch (_p->tag) {	case GF_IPMPX_RIGHTS_DATA_TAG:	case GF_IPMPX_OPAQUE_DATA_TAG: return ReadGF_IPMPX_OpaqueData(bs, _p, read);	case GF_IPMPX_KEY_DATA_TAG: return ReadGF_IPMPX_KeyData(bs, _p, read);	case GF_IPMPX_SECURE_CONTAINER_TAG: return ReadGF_IPMPX_SecureContainer(bs, _p, read);	case GF_IPMPX_ADD_TOOL_LISTENER_TAG: return ReadGF_IPMPX_AddToolNotificationListener(bs, _p, read);	case GF_IPMPX_REMOVE_TOOL_LISTENER_TAG: return ReadGF_IPMPX_RemoveToolNotificationListener(bs, _p, read);	case GF_IPMPX_INIT_AUTHENTICATION_TAG: return ReadGF_IPMPX_InitAuthentication(bs, _p, read);	case GF_IPMPX_MUTUAL_AUTHENTICATION_TAG: return ReadGF_IPMPX_MutualAuthentication(bs, _p, read);	case GF_IPMPX_PARAMETRIC_DESCRIPTION_TAG: return ReadGF_IPMPX_ParametricDescription(bs, _p, read);	case GF_IPMPX_PARAMETRIC_CAPS_QUERY_TAG: return ReadGF_IPMPX_ToolParamCapabilitiesQuery(bs, _p, read);	case GF_IPMPX_PARAMETRIC_CAPS_RESPONSE_TAG: return ReadGF_IPMPX_ToolParamCapabilitiesResponse(bs, _p, read);	case GF_IPMPX_GET_TOOLS_RESPONSE_TAG: return ReadGF_IPMPX_GetToolsResponse(bs, _p, read);	case GF_IPMPX_GET_TOOL_CONTEXT_TAG: return ReadGF_IPMPX_GetToolContext(bs, _p, read);	case GF_IPMPX_GET_TOOL_CONTEXT_RESPONSE_TAG: return ReadGF_IPMPX_GetToolContextResponse(bs, _p, read);	case GF_IPMPX_CONNECT_TOOL_TAG: return ReadGF_IPMPX_ConnectTool(bs, _p, read);	case GF_IPMPX_DISCONNECT_TOOL_TAG: return ReadGF_IPMPX_DisconnectTool(bs, _p, read);	case GF_IPMPX_NOTIFY_TOOL_EVENT_TAG: return ReadGF_IPMPX_NotifyToolEvent(bs, _p, read);	case GF_IPMPX_CAN_PROCESS_TAG: return ReadGF_IPMPX_CanProcess(bs, _p, read);	case GF_IPMPX_TRUST_SECURITY_METADATA_TAG: return ReadGF_IPMPX_TrustSecurityMetadata(bs, _p, read);	case GF_IPMPX_TOOL_API_CONFIG_TAG: return ReadGF_IPMPX_ToolAPI_Config(bs, _p, read);	case GF_IPMPX_ISMACRYP_TAG: return ReadGF_IPMPX_ISMACryp(bs, _p, read);	case GF_IPMPX_SEL_DEC_INIT_TAG: return ReadGF_IPMPX_SelectiveDecryptionInit(bs, _p, read);	case GF_IPMPX_AUDIO_WM_INIT_TAG: 	case GF_IPMPX_VIDEO_WM_INIT_TAG: 		return ReadGF_IPMPX_WatermarkingInit(bs, _p, read);	case GF_IPMPX_AUDIO_WM_SEND_TAG: 	case GF_IPMPX_VIDEO_WM_SEND_TAG: 		return ReadGF_IPMPX_SendWatermark(bs, _p, read);/*	case GF_IPMPX_USER_QUERY_TAG: return ReadGF_IPMPX_UserQuery(bs, _p, read);	case GF_IPMPX_USER_RESPONSE_TAG: return ReadGF_IPMPX_UserQueryResponse(bs, _p, read);*/	case GF_IPMPX_GET_TOOLS_TAG: return GF_OK;	default: return GF_BAD_PARAM;	}}u32 gf_ipmpx_data_size(GF_IPMPX_Data *_p){	switch (_p->tag) {	case GF_IPMPX_RIGHTS_DATA_TAG:	case GF_IPMPX_OPAQUE_DATA_TAG: return SizeGF_IPMPX_OpaqueData(_p);	case GF_IPMPX_KEY_DATA_TAG: return SizeGF_IPMPX_KeyData(_p);	case GF_IPMPX_SECURE_CONTAINER_TAG: return SizeGF_IPMPX_SecureContainer(_p);	case GF_IPMPX_ADD_TOOL_LISTENER_TAG: return SizeGF_IPMPX_AddToolNotificationListener(_p);	case GF_IPMPX_REMOVE_TOOL_LISTENER_TAG: return SizeGF_IPMPX_RemoveToolNotificationListener(_p);	case GF_IPMPX_INIT_AUTHENTICATION_TAG: return SizeGF_IPMPX_InitAuthentication(_p);	case GF_IPMPX_MUTUAL_AUTHENTICATION_TAG: return SizeGF_IPMPX_MutualAuthentication(_p);	case GF_IPMPX_PARAMETRIC_DESCRIPTION_TAG: return SizeGF_IPMPX_ParametricD

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -