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

📄 ptp.c

📁 PTP is the draft ptp protocol with all source under linux, can support most of usb still camera.
💻 C
📖 第 1 页 / 共 4 页
字号:
ptp_perror(PTPParams* params, uint16_t error) {	int i;	/* PTP error descriptions */	static struct {		short error;		const char *txt;	} ptp_errors[] = {	{PTP_RC_Undefined, 		N_("PTP: Undefined Error")},	{PTP_RC_OK, 			N_("PTP: OK!")},	{PTP_RC_GeneralError, 		N_("PTP: General Error")},	{PTP_RC_SessionNotOpen, 	N_("PTP: Session Not Open")},	{PTP_RC_InvalidTransactionID, 	N_("PTP: Invalid Transaction ID")},	{PTP_RC_OperationNotSupported, 	N_("PTP: Operation Not Supported")},	{PTP_RC_ParameterNotSupported, 	N_("PTP: Parameter Not Supported")},	{PTP_RC_IncompleteTransfer, 	N_("PTP: Incomplete Transfer")},	{PTP_RC_InvalidStorageId, 	N_("PTP: Invalid Storage ID")},	{PTP_RC_InvalidObjectHandle, 	N_("PTP: Invalid Object Handle")},	{PTP_RC_DevicePropNotSupported, N_("PTP: Device Prop Not Supported")},	{PTP_RC_InvalidObjectFormatCode, N_("PTP: Invalid Object Format Code")},	{PTP_RC_StoreFull, 		N_("PTP: Store Full")},	{PTP_RC_ObjectWriteProtected, 	N_("PTP: Object Write Protected")},	{PTP_RC_StoreReadOnly, 		N_("PTP: Store Read Only")},	{PTP_RC_AccessDenied,		N_("PTP: Access Denied")},	{PTP_RC_NoThumbnailPresent, 	N_("PTP: No Thumbnail Present")},	{PTP_RC_SelfTestFailed, 	N_("PTP: Self Test Failed")},	{PTP_RC_PartialDeletion, 	N_("PTP: Partial Deletion")},	{PTP_RC_StoreNotAvailable, 	N_("PTP: Store Not Available")},	{PTP_RC_SpecificationByFormatUnsupported,				N_("PTP: Specification By Format Unsupported")},	{PTP_RC_NoValidObjectInfo, 	N_("PTP: No Valid Object Info")},	{PTP_RC_InvalidCodeFormat, 	N_("PTP: Invalid Code Format")},	{PTP_RC_UnknownVendorCode, 	N_("PTP: Unknown Vendor Code")},	{PTP_RC_CaptureAlreadyTerminated,					N_("PTP: Capture Already Terminated")},	{PTP_RC_DeviceBusy, 		N_("PTP: Device Bus")},	{PTP_RC_InvalidParentObject, 	N_("PTP: Invalid Parent Object")},	{PTP_RC_InvalidDevicePropFormat, N_("PTP: Invalid Device Prop Format")},	{PTP_RC_InvalidDevicePropValue, N_("PTP: Invalid Device Prop Value")},	{PTP_RC_InvalidParameter, 	N_("PTP: Invalid Parameter")},	{PTP_RC_SessionAlreadyOpened, 	N_("PTP: Session Already Opened")},	{PTP_RC_TransactionCanceled, 	N_("PTP: Transaction Canceled")},	{PTP_RC_SpecificationOfDestinationUnsupported,			N_("PTP: Specification Of Destination Unsupported")},	{PTP_ERROR_IO,		  N_("PTP: I/O error")},	{PTP_ERROR_BADPARAM,	  N_("PTP: Error: bad parameter")},	{PTP_ERROR_DATA_EXPECTED, N_("PTP: Protocol error, data expected")},	{PTP_ERROR_RESP_EXPECTED, N_("PTP: Protocol error, response expected")},	{0, NULL}	};	static struct {		short error;		const char *txt;	} ptp_errors_EK[] = {	{PTP_RC_EK_FilenameRequired,	N_("PTP EK: Filename Required")},	{PTP_RC_EK_FilenameConflicts,	N_("PTP EK: Filename Conflicts")},	{PTP_RC_EK_FilenameInvalid,	N_("PTP EK: Filename Invalid")},	{0, NULL}	};	for (i=0; ptp_errors[i].txt!=NULL; i++)		if (ptp_errors[i].error == error){			ptp_error(params, ptp_errors[i].txt);			return;		}	/*if (error|PTP_RC_EXTENSION_MASK==PTP_RC_EXTENSION)*/	switch (params->deviceinfo.VendorExtensionID) {		case PTP_VENDOR_EASTMAN_KODAK:			for (i=0; ptp_errors_EK[i].txt!=NULL; i++)				if (ptp_errors_EK[i].error==error)					ptp_error(params, ptp_errors_EK[i].txt);			break;		}}/* return ptp operation name */const char*ptp_get_operation_name(PTPParams* params, uint16_t oc){	int i;	/* Operation Codes */	struct {		uint16_t oc;		const char *txt;	} ptp_operations[] = {		{PTP_OC_Undefined,		N_("UndefinedOperation")},		{PTP_OC_GetDeviceInfo,		N_("GetDeviceInfo")},		{PTP_OC_OpenSession,		N_("OpenSession")},		{PTP_OC_CloseSession,		N_("CloseSession")},		{PTP_OC_GetStorageIDs,		N_("GetStorageIDs")},		{PTP_OC_GetStorageInfo,		N_("GetStorageInfo")},		{PTP_OC_GetNumObjects,		N_("GetNumObjects")},		{PTP_OC_GetObjectHandles,	N_("GetObjectHandles")},		{PTP_OC_GetObjectInfo,		N_("GetObjectInfo")},		{PTP_OC_GetObject,		N_("GetObject")},		{PTP_OC_GetThumb,		N_("GetThumb")},		{PTP_OC_DeleteObject,		N_("DeleteObject")},		{PTP_OC_SendObjectInfo,		N_("SendObjectInfo")},		{PTP_OC_SendObject,		N_("SendObject")},		{PTP_OC_InitiateCapture,	N_("InitiateCapture")},		{PTP_OC_FormatStore,		N_("FormatStore")},		{PTP_OC_ResetDevice,		N_("ResetDevice")},		{PTP_OC_SelfTest,		N_("SelfTest")},		{PTP_OC_SetObjectProtection,	N_("SetObjectProtection")},		{PTP_OC_PowerDown,		N_("PowerDown")},		{PTP_OC_GetDevicePropDesc,	N_("GetDevicePropDesc")},		{PTP_OC_GetDevicePropValue,	N_("GetDevicePropValue")},		{PTP_OC_SetDevicePropValue,	N_("SetDevicePropValue")},		{PTP_OC_ResetDevicePropValue,	N_("ResetDevicePropValue")},		{PTP_OC_TerminateOpenCapture,	N_("TerminateOpenCapture")},		{PTP_OC_MoveObject,		N_("MoveObject")},		{PTP_OC_CopyObject,		N_("CopyObject")},		{PTP_OC_GetPartialObject,	N_("GetPartialObject")},		{PTP_OC_InitiateOpenCapture,	N_("InitiateOpenCapture")},		{0,NULL}	};	struct {		uint16_t oc;		const char *txt;	} ptp_operations_EK[] = {		{PTP_OC_EK_SendFileObjectInfo,	N_("EK SendFileObjectInfo")},		{PTP_OC_EK_SendFileObject,	N_("EK SendFileObject")},		{0,NULL}	};	struct {		uint16_t oc;		const char *txt;	} ptp_operations_CANON[] = {		{PTP_OC_CANON_GetObjectSize,	N_("CANON GetObjectSize")},		{PTP_OC_CANON_StartShootingMode,N_("CANON StartShootingMode")},		{PTP_OC_CANON_EndShootingMode,	N_("CANON EndShootingMode")},		{PTP_OC_CANON_ViewfinderOn,	N_("CANON ViewfinderOn")},		{PTP_OC_CANON_ViewfinderOff,	N_("CANON ViewfinderOff")},		{PTP_OC_CANON_ReflectChanges,	N_("CANON ReflectChanges")},		{PTP_OC_CANON_CheckEvent,	N_("CANON CheckEvent")},		{PTP_OC_CANON_FocusLock,	N_("CANON FocusLock")},		{PTP_OC_CANON_FocusUnlock,	N_("CANON FocusUnlock")},		{PTP_OC_CANON_InitiateCaptureInMemory,					N_("CANON InitiateCaptureInMemory")},		{PTP_OC_CANON_GetPartialObject,	N_("CANON GetPartialObject")},		{PTP_OC_CANON_GetViewfinderImage,					N_("CANON GetViewfinderImage")},		{PTP_OC_CANON_GetChanges,	N_("CANON GetChanges")},		{PTP_OC_CANON_GetFolderEntries,	N_("CANON GetFolderEntries")},		{0,NULL}	};	switch (params->deviceinfo.VendorExtensionID) {		case PTP_VENDOR_EASTMAN_KODAK:			for (i=0; ptp_operations_EK[i].txt!=NULL; i++)				if (ptp_operations_EK[i].oc==oc)					return (ptp_operations_EK[i].txt);			break;		case PTP_VENDOR_CANON:			for (i=0; ptp_operations_CANON[i].txt!=NULL; i++)				if (ptp_operations_CANON[i].oc==oc)					return (ptp_operations_CANON[i].txt);			break;		}	for (i=0; ptp_operations[i].txt!=NULL; i++)		if (ptp_operations[i].oc == oc){			return (ptp_operations[i].txt);		}	return NULL;}/* return ptp property nam */const char*ptp_get_property_name(PTPParams* params, uint16_t dpc){	int i;	/* Device Property descriptions */	struct {		uint16_t dpc;		const char *txt;	} ptp_device_properties[] = {		{PTP_DPC_Undefined,		N_("PTP Undefined Property")},		{PTP_DPC_BatteryLevel,		N_("Battery Level")},		{PTP_DPC_FunctionalMode,	N_("Functional Mode")},		{PTP_DPC_ImageSize,		N_("Image Size")},		{PTP_DPC_CompressionSetting,	N_("Compression Setting")},		{PTP_DPC_WhiteBalance,		N_("White Balance")},		{PTP_DPC_RGBGain,		N_("RGB Gain")},		{PTP_DPC_FNumber,		N_("F-Number")},		{PTP_DPC_FocalLength,		N_("Focal Length")},		{PTP_DPC_FocusDistance,		N_("Focus Distance")},		{PTP_DPC_FocusMode,		N_("Focus Mode")},		{PTP_DPC_ExposureMeteringMode,	N_("Exposure Metering Mode")},		{PTP_DPC_FlashMode,		N_("Flash Mode")},		{PTP_DPC_ExposureTime,		N_("Exposure Time")},		{PTP_DPC_ExposureProgramMode,	N_("Exposure Program Mode")},		{PTP_DPC_ExposureIndex,					N_("Exposure Index (film speed ISO)")},		{PTP_DPC_ExposureBiasCompensation,					N_("Exposure Bias Compensation")},		{PTP_DPC_DateTime,		N_("Date Time")},		{PTP_DPC_CaptureDelay,		N_("Pre-Capture Delay")},		{PTP_DPC_StillCaptureMode,	N_("Still Capture Mode")},		{PTP_DPC_Contrast,		N_("Contrast")},		{PTP_DPC_Sharpness,		N_("Sharpness")},		{PTP_DPC_DigitalZoom,		N_("Digital Zoom")},		{PTP_DPC_EffectMode,		N_("Effect Mode")},		{PTP_DPC_BurstNumber,		N_("Burst Number")},		{PTP_DPC_BurstInterval,		N_("Burst Interval")},		{PTP_DPC_TimelapseNumber,	N_("Timelapse Number")},		{PTP_DPC_TimelapseInterval,	N_("Timelapse Interval")},		{PTP_DPC_FocusMeteringMode,	N_("Focus Metering Mode")},		{PTP_DPC_UploadURL,		N_("Upload URL")},		{PTP_DPC_Artist,		N_("Artist")},		{PTP_DPC_CopyrightInfo,		N_("Copyright Info")},		{0,NULL}	};	struct {		uint16_t dpc;		const char *txt;	} ptp_device_properties_EK[] = {		{PTP_DPC_EK_ColorTemperature,	N_("EK Color Temperature")},		{PTP_DPC_EK_DateTimeStampFormat,					N_("EK Date Time Stamp Format")},		{PTP_DPC_EK_BeepMode,		N_("EK Beep Mode")},		{PTP_DPC_EK_VideoOut,		N_("EK Video Out")},		{PTP_DPC_EK_PowerSaving,	N_("EK Power Saving")},		{PTP_DPC_EK_UI_Language,	N_("EK UI Language")},		{0,NULL}	};	struct {		uint16_t dpc;		const char *txt;	} ptp_device_properties_CANON[] = {		{PTP_DPC_CANON_BeepMode,	N_("CANON Beep Mode")},		{PTP_DPC_CANON_UnixTime,	N_("CANON Time measured in"						" secondssince 01-01-1970")},		{PTP_DPC_CANON_FlashMemory,					N_("CANON Flash Card Capacity")},		{PTP_DPC_CANON_CameraModel,	N_("CANON Camera Model")},		{0,NULL}	};/* Nikon Codes added by Corey Manders and Mehreen Chaudary */	struct {		uint16_t dpc;		const char *txt;	} ptp_device_properties_NIKON[] = {		{PTP_DPC_NIKON_ShootingBank,	N_("NIKON Shooting Bank")},		{PTP_DPC_NIKON_ShootingBankNameA,					N_("NIKON Shooting Bank Name A")},		{PTP_DPC_NIKON_ShootingBankNameB,					N_("NIKON Shooting Bank Name B")},		{PTP_DPC_NIKON_ShootingBankNameC,					N_("NIKON Shooting Bank Name C")},		{PTP_DPC_NIKON_ShootingBankNameD,					N_("NIKON Shooting Bank Name D")},		{PTP_DPC_NIKON_RawCompression,	N_("NIKON Raw Compression")},		{PTP_DPC_NIKON_WhiteBalanceAutoBias,					N_("NIKON White Balance Auto Bias")},		{PTP_DPC_NIKON_WhiteBalanceTungstenBias,				N_("NIKON White Balance Tungsten Bias")},		{PTP_DPC_NIKON_WhiteBalanceFlourescentBias,				N_("NIKON White Balance Flourescent Bias")},		{PTP_DPC_NIKON_WhiteBalanceDaylightBias,				N_("NIKON White Balance Daylight Bias")},		{PTP_DPC_NIKON_WhiteBalanceFlashBias,				N_("NIKON White Balance Flash Bias")},		{PTP_DPC_NIKON_WhiteBalanceCloudyBias,				N_("NIKON White Balance Cloudy Bias")},		{PTP_DPC_NIKON_WhiteBalanceShadeBias,				N_("NIKON White Balance Shade Bias")},		{PTP_DPC_NIKON_WhiteBalanceColourTemperature,				N_("NIKON White Balance Colour Temperature")},		{PTP_DPC_NIKON_ImageSharpening,				N_("NIKON Image Sharpening")},		{PTP_DPC_NIKON_ToneCompensation,				N_("NIKON Tone Compensation")},		{PTP_DPC_NIKON_ColourMode,	N_("NIKON Colour Mode")},		{PTP_DPC_NIKON_HueAdjustment,	N_("NIKON Hue Adjustment")},		{PTP_DPC_NIKON_NonCPULensDataFocalLength,				N_("NIKON Non CPU Lens Data Focal Length")},		{PTP_DPC_NIKON_NonCPULensDataMaximumAperture,			N_("NIKON Non CPU Lens Data Maximum Aperture")},		{PTP_DPC_NIKON_CSMMenuBankSelect,				N_("NIKON CSM Menu Bank Select")},		{PTP_DPC_NIKON_MenuBankNameA,	N_("NIKON Menu Bank Name A")},		{PTP_DPC_NIKON_MenuBankNameB,	N_("NIKON Menu Bank Name B")},			{PTP_DPC_NIKON_MenuBankNameC,	N_("NIKON Menu Bank Name C")},		{PTP_DPC_NIKON_MenuBankNameD,	N_("NIKON Menu Bank Name D")},		{PTP_DPC_NIKON_A1AFCModePriority,				N_("NIKON (A1) AFC Mode Priority")},		{PTP_DPC_NIKON_A2AFSModePriority,				N_("NIKON (A2) AFS Mode Priority")},		{PTP_DPC_NIKON_A3GroupDynamicAF,				N_("NIKON (A3) Group Dynamic AF")},		{PTP_DPC_NIKON_A4AFActivation,						N_("NIKON (A4) AF Activation")},			{PTP_DPC_NIKON_A5FocusAreaIllumManualFocus,			N_("NIKON (A5) Focus Area Illum Manual Focus")},		{PTP_DPC_NIKON_FocusAreaIllumContinuous,				N_("NIKON Focus Area Illum Continuous")},		{PTP_DPC_NIKON_FocusAreaIllumWhenSelected,				N_("NIKON Focus Area Illum When Selected")},		{PTP_DPC_NIKON_A6FocusArea,	N_("NIKON (A6) Focus Area")},		{PTP_DPC_NIKON_A7VerticalAFON,				N_("NIKON (A7) Vertical AF ON")},		{PTP_DPC_NIKON_B1ISOAuto,	N_("NIKON (B1) ISO Auto")},		{PTP_DPC_NIKON_B2ISOStep,	N_("NIKON (B2)	ISO Step")},		{PTP_DPC_NIKON_B3EVStep,	N_("NIKON (B3) EV Step")},		{PTP_DPC_NIKON_B4ExposureCompEv,				N_("NIKON (B4) Exposure Comp Ev")},		{PTP_DPC_NIKON_B5ExposureComp,				N_("NIKON (B5) Exposure Comp")},		{PTP_DPC_NIKON_B6CenterWeightArea,				N_("NIKON (B6) Center Weight Area")},		{PTP_DPC_NIKON_C1AELock,	N_("NIKON (C1) AE Lock")},		{PTP_DPC_NIKON_C2AELAFL,	N_("NIKON (C2) AE_L/AF_L")},		{PTP_DPC_NIKON_C3AutoMeterOff,				N_("NIKON (C3) Auto Meter Off")},		{PTP_DPC_NIKON_C4SelfTimer,	N_("NIKON (C4) Self Timer")},			{PTP_DPC_NIKON_C5MonitorOff,	N_("NIKON (C5) Monitor Off")},		{PTP_DPC_NIKON_D1ShootingSpeed,				N_("NIKON (D1) Shooting Speed")},		{PTP_DPC_NIKON_D2MaximumShots,				N_("NIKON (D2) Maximum Shots")},		{PTP_DPC_NIKON_D3ExpDelayMode,	N_("NIKON (D3) ExpDelayMode")},			{PTP_DPC_NIKON_D4LongExposureNoiseReduction,			N_("NIKON (D4) Long Exposure Noise Reduction")},		{PTP_DPC_NIKON_D5FileNumberSequence,				N_("NIKON (D5) File Number Sequence")},		{PTP_DPC_NIKON_D6ControlPanelFinderRearControl,			N_("NIKON (D6) Control Panel Finder Rear Control")},		{PTP_DPC_NIKON_ControlPanelFinderViewfinder,				N_("NIKON Control Panel Finder Viewfinder")},		{PTP_DPC_NIKON_D7Illumination,	N_("NIKON (D7) Illumination")},		{PTP_DPC_NIKON_E1FlashSyncSpeed,				N_("NIKON (E1) Flash Sync Speed")},		{PTP_DPC_NIKON_E2FlashShutterSpeed,				N_("NIKON (E2) Flash Shutter Speed")},		{PTP_DPC_NIKON_E3AAFlashMode,				N_("NIKON (E3) AA Flash Mode")},		{PTP_DPC_NIKON_E4ModelingFlash,					N_("NIKON (E4) Modeling Flash")},		{PTP_DPC_NIKON_E5AutoBracketSet,				N_("NIKON (E5) Auto Bracket Set")},		{PTP_DPC_NIKON_E6ManualModeBracketing,				N_("NIKON (E6) Manual Mode Bracketing")},		{PTP_DPC_NIKON_E7AutoBracketOrder,				N_("NIKON (E7) Auto Bracket Order")},		{PTP_DPC_NIKON_E8AutoBracketSelection,				N_("NIKON (E8) Auto Bracket Selection")},		{PTP_DPC_NIKON_F1CenterButtonShootingMode,				N_("NIKON (F1) Center Button Shooting Mode")},		{PTP_DPC_NIKON_CenterButtonPlaybackMode,				N_("NIKON Center Button Playback Mode")},		{PTP_DPC_NIKON_F2Multiselector,				N_("NIKON (F2) Multiselector")},		{PTP_DPC_NIKON_F3PhotoInfoPlayback,				N_("NIKON (F3) PhotoInfoPlayback")},			{PTP_DPC_NIKON_F4AssignFuncButton,				N_("NIKON (F4) Assign Function Button")},		{PTP_DPC_NIKON_F5CustomizeCommDials,				N_("NIKON (F5) Customize Comm Dials")},		{PTP_DPC_NIKON_ChangeMainSub,	N_("NIKON Change Main Sub")},		{PTP_DPC_NIKON_ApertureSetting,				N_("NIKON Aperture Setting")},		{PTP_DPC_NIKON_MenusAndPlayback,				N_("NIKON Menus and Playback")},		{PTP_DPC_NIKON_F6ButtonsAndDials,				N_("NIKON (F6) Buttons and Dials")},		{PTP_DPC_NIKON_F7NoCFCard,	N_("NIKON (F7) No CF Card")},		{PTP_DPC_NIKON_AutoImageRotation,				N_("NIKON Auto Image Rotation")},		{PTP_DPC_NIKON_ExposureBracketingOnOff,				N_("NIKON Exposure Bracketing On Off")},		{PTP_DPC_NIKON_ExposureBracketingIntervalDist,			N_("NIKON Exposure Bracketing Interval Distance")},		{PTP_DPC_NIKON_ExposureBracketingNumBracketPlace,			N_("NIKON Exposure Bracketing Number Bracket Place")},		{PTP_DPC_NIKON_AutofocusLCDTopMode2,				N_("NIKON Autofocus LCD Top Mode 2")},		{PTP_DPC_NIKON_AutofocusLCDTopMode3AndMode4,			N_("NIKON Autofocus LCD Top Mode 3 and Mode 4")},		{PTP_DPC_NIKON_LightMeter,	N_("NIKON Light Meter")},		{PTP_DPC_NIKON_ExposureApertureLock,			N_("NIKON Exposure Aperture Lock")},		{PTP_DPC_NIKON_MaximumShots,	N_("NIKON Maximum Shots")},                {PTP_DPC_NIKON_Beep, N_("NIKON AF Beep Mode")},                {PTP_DPC_NIKON_AFC, N_("NIKON ??? AF Related")},                {PTP_DPC_NIKON_AFLampOff, N_("NIKON AF Lamp")},                {PTP_DPC_NIKON_PADVPMode, N_("NIKON Auto ISO P/A/DVP Setting")},                {PTP_DPC_NIKON_ReviewOff, N_("NIKON Image Review")},                {PTP_DPC_NIKON_GridDisplay, N_("NIKON Viewfinder Grid Display")},                {PTP_DPC_NIKON_AFAreaIllumination, N_("NIKON AF Area Illumination")},                {PTP_DPC_NIKON_FlashMode, N_("NIKON Flash Mode")},                {PTP_DPC_NIKON_FlashPower, N_("NIKON Flash Power")},                {PTP_DPC_NIKON_FlashSignOff, N_("NIKON Flash Sign")},                {PTP_DPC_NIKON_FlashExposureCompensation,			 N_("NIKON Flash Exposure Compensation")},                {PTP_DPC_NIKON_RemoteTimeout, N_("NIKON Remote Timeout")},                {PTP_DPC_NIKON_ImageCommentString, N_("NIKON Image Comment String")},                {PTP_DPC_NIKON_FlashOpen, N_("NIKON Flash Open")},                {PTP_DPC_NIKON_FlashCharged, N_("NIKON Flash Charged")},                {PTP_DPC_NIKON_LensID, N_("NIKON Lens ID")},                {PTP_DPC_NIKON_FocalLengthMin, N_("NIKON Min. Focal Length")},                {PTP_DPC_NIKON_FocalLengthMax, N_("NIKON Max. Focal Length")},                {PTP_DPC_NIKON_MaxApAtMinFocalLength,			 N_("NIKON Max. Aperture at Min. Focal Length")},                {PTP_DPC_NIKON_MaxApAtMaxFocalLength,			 N_("NIKON Max. Aperture at Max. Focal Length")},                {PTP_DPC_NIKON_LowLight, N_("NIKON Low Light")},                {PTP_DPC_NIKON_ExtendedCSMMenu, N_("NIKON Extended CSM Menu")},                {PTP_DPC_NIKON_OptimiseImage, N_("NIKON Optimise Image")},		{0,NULL}	};	for (i=0; ptp_device_properties[i].txt!=NULL; i++)		if (ptp_device_properties[i].dpc==dpc)			return (ptp_device_properties[i].txt);	/*if (dpc|PTP_DPC_EXTENSION_MASK==PTP_DPC_EXTENSION)*/	switch (params->deviceinfo.VendorExtensionID) {		case PTP_VENDOR_EASTMAN_KODAK:			for (i=0; ptp_device_properties_EK[i].txt!=NULL; i++)				if (ptp_device_properties_EK[i].dpc==dpc)					return (ptp_device_properties_EK[i].txt);			break;		case PTP_VENDOR_CANON:			for (i=0; ptp_device_properties_CANON[i].txt!=NULL; i++)				if (ptp_device_properties_CANON[i].dpc==dpc)					return (ptp_device_properties_CANON[i].txt);			break;		case PTP_VENDOR_NIKON:			for (i=0; ptp_device_properties_NIKON[i].txt!=NULL; i++)				if (ptp_device_properties_NIKON[i].dpc==dpc)					return (ptp_device_properties_NIKON[i].txt);			break;			}	return NULL;}

⌨️ 快捷键说明

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