📄 flioctl.c
字号:
{
case PROTECTION_INSERT_KEY:
ioreq2.irData = inputRec->key;
outputRec->status = flInsertProtectionKey(&ioreq2);
break;
case PROTECTION_REMOVE_KEY:
outputRec->status = flRemoveProtectionKey(&ioreq2);
break;
case PROTECTION_GET_TYPE:
outputRec->status = flIdentifyProtection(&ioreq2);
outputRec->protectionType = (byte)ioreq2.irFlags;
break;
case PROTECTION_DISABLE_LOCK:
ioreq2.irFlags = 0;
outputRec->status = flHardwareProtectionLock(&ioreq2);
break;
case PROTECTION_ENABLE_LOCK:
ioreq2.irFlags = LOCK_ENABLED;
outputRec->status = flHardwareProtectionLock(&ioreq2);
break;
case PROTECTION_CHANGE_KEY:
ioreq2.irData = inputRec->key;
outputRec->status = flChangeProtectionKey(&ioreq2);
break;
case PROTECTION_CHANGE_TYPE:
ioreq2.irFlags = inputRec->protectionType;
outputRec->status = flChangeProtectionType(&ioreq2);
break;
default:
outputRec->status = flBadParameter;
break;
}
return outputRec->status;
}
#endif /* HW_PROTECTION */
#ifdef HW_OTP
case FL_IOCTL_OTP:
{
flOtpInput FAR1 *inputRec = (flOtpInput FAR1 *)inputRecord;
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
switch(inputRec->type)
{
case OTP_SIZE:
outputRec->status = flOTPSize(&ioreq2);
inputRec->lockedFlag = (byte)ioreq2.irFlags;
inputRec->length = ioreq2.irCount ;
inputRec->usedSize = ioreq2.irLength ;
break;
case OTP_READ:
ioreq2.irData = inputRec->buffer; /* user buffer */
ioreq2.irCount = inputRec->usedSize; /* offset */
ioreq2.irLength = inputRec->length; /* size to read */
outputRec->status = flOTPRead(&ioreq2);
break;
case OTP_WRITE_LOCK:
ioreq2.irData = inputRec->buffer; /* user buffer */
ioreq2.irLength = inputRec->length; /* size to read */
outputRec->status = flOTPWriteAndLock(&ioreq2);
break;
default:
outputRec->status = flBadParameter;
break;
}
return outputRec->status;
}
case FL_IOCTL_CUSTOMER_ID:
{
flCustomerIdOutput FAR1 *outputRec = (flCustomerIdOutput FAR1 *)outputRecord;
ioreq2.irData = outputRec->id;
outputRec->status = flGetCustomerID(&ioreq2);
return outputRec->status;
}
case FL_IOCTL_UNIQUE_ID:
{
flUniqueIdOutput FAR1 *outputRec = (flUniqueIdOutput FAR1 *)outputRecord;
ioreq2.irData = outputRec->id;
outputRec->status = flGetUniqueID(&ioreq2);
return outputRec->status;
}
#endif /* HW_OTP */
case FL_IOCTL_NUMBER_OF_PARTITIONS:
{
flCountPartitionsOutput FAR1 *outputRec = (flCountPartitionsOutput FAR1 *)outputRecord;
outputRec->status = flCountVolumes(&ioreq2);
outputRec->noOfPartitions = (byte) ioreq2.irFlags;
return outputRec->status;
}
#ifdef FL_LOW_LEVEL
case FL_IOCTL_INQUIRE_CAPABILITIES:
{
flCapabilityInput FAR1 *inputRec = (flCapabilityInput FAR1 *)inputRecord;
flCapabilityOutput FAR1 *outputRec = (flCapabilityOutput FAR1 *)outputRecord;
ioreq2.irLength = inputRec->capability;
outputRec->status = flInquireCapabilities(&ioreq2);
outputRec->capability = (FLCapability)ioreq2.irLength;
return outputRec->status;
}
#endif /* FL_LOW_LEVEL */
#ifdef FL_LOW_LEVEL
#ifdef WRITE_EXB_IMAGE
case FL_IOCTL_PLACE_EXB_BY_BUFFER:
{
flPlaceExbInput FAR1 *inputRec = (flPlaceExbInput FAR1 *)inputRecord;
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
ioreq2.irData = inputRec->buf;
ioreq2.irLength = inputRec->bufLen;
ioreq2.irWindowBase = inputRec->exbWindow;
ioreq2.irFlags = inputRec->exbFlags;
outputRec->status = flPlaceExbByBuffer(&ioreq2);
return outputRec->status;
}
#endif /* WRITE_EXB_IMAGE */
case FL_IOCTL_DEEP_POWER_DOWN_MODE:
{
flPowerDownInput FAR1 *inputRec = (flPowerDownInput FAR1 *)inputRecord;
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
ioreq2.irFlags = inputRec->state;
outputRec->status = flDeepPowerDownMode(&ioreq2);
return outputRec->status;
}
#endif /* FL_LOW_LEVEL */
#ifdef ABS_READ_WRITE
#ifndef FL_READ_ONLY
case FL_IOCTL_DELETE_SECTORS:
{
flDeleteSectorsInput FAR1 *inputRec = (flDeleteSectorsInput FAR1 *)inputRecord;
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
ioreq2.irSectorNo = inputRec->firstSector;
ioreq2.irSectorCount = inputRec->numberOfSectors;
outputRec->status = flAbsDelete(&ioreq2);
return outputRec->status;
}
#endif /* FL_READ_ONLY */
case FL_IOCTL_READ_SECTORS:
{
flReadWriteInput FAR1 *inputRec = (flReadWriteInput FAR1 *)inputRecord;
flReadWriteOutput FAR1 *outputRec = (flReadWriteOutput FAR1 *)outputRecord;
ioreq2.irSectorNo = inputRec->firstSector;
ioreq2.irSectorCount = inputRec->numberOfSectors;
ioreq2.irData = inputRec->buf;
outputRec->status = flAbsRead(&ioreq2);
outputRec->numberOfSectors = ioreq2.irSectorCount;
return outputRec->status;
}
#ifndef FL_READ_ONLY
case FL_IOCTL_WRITE_SECTORS:
{
flReadWriteInput FAR1 *inputRec = (flReadWriteInput FAR1 *)inputRecord;
flReadWriteOutput FAR1 *outputRec = (flReadWriteOutput FAR1 *)outputRecord;
ioreq2.irSectorNo = inputRec->firstSector;
ioreq2.irSectorCount = inputRec->numberOfSectors;
ioreq2.irData = inputRec->buf;
outputRec->status = flAbsWrite(&ioreq2);
outputRec->numberOfSectors = ioreq2.irSectorCount;
return outputRec->status;
}
#endif /* FL_READ_ONLY */
#endif /* ABS_READ_WRITE */
#ifdef ENVIRONMENT_VARS
case FL_IOCTL_EXTENDED_ENVIRONMENT_VARIABLES:
{
flExtendedEnvVarsInput FAR1 *inputRec = (flExtendedEnvVarsInput FAR1 *)inputRecord;
flExtendedEnvVarsOutput FAR1 *outputRec = (flExtendedEnvVarsOutput FAR1 *)outputRecord;
switch(inputRec->flags)
{
case FL_APPLY_TO_ALL:
outputRec->status = flSetEnvAll(inputRec->varName,
inputRec->varValue,&(outputRec->prevValue));
break;
case FL_APPLY_TO_SOCKET:
outputRec->status = flSetEnvSocket(inputRec->varName,
FL_GET_SOCKET_FROM_HANDLE((&ioreq2)),
inputRec->varValue,&(outputRec->prevValue));
break;
case FL_APPLY_TO_VOLUME:
outputRec->status = flSetEnvVolume(inputRec->varName,
FL_GET_SOCKET_FROM_HANDLE((&ioreq2)),
FL_GET_PARTITION_FROM_HANDLE((&ioreq2)),
inputRec->varValue,&(outputRec->prevValue));
break;
default:
DEBUG_PRINT(("Debug: No such environment variable function flag\r\n"));
outputRec->status = flFeatureNotSupported;
}
return outputRec->status;
}
#endif /* ENVIRONMENT_VARS */
#ifndef FL_NO_USE_FUNC
case FL_IOCTL_SET_ACCESS_ROUTINE:
{
flSetMemoryAccessInput FAR1 *inputRec = (flSetMemoryAccessInput FAR1 *)inputRecord;
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
outputRec->status = flSetDocBusRoutine(FL_GET_SOCKET_FROM_HANDLE((&ioreq2)),
inputRec->structPtr);
return outputRec->status;
}
case FL_IOCTL_GET_ACCESS_ROUTINE:
{
flGetMemoryAccessOutput FAR1 *outputRec = (flGetMemoryAccessOutput FAR1 *)outputRecord;
outputRec->status = flGetDocBusRoutine(FL_GET_SOCKET_FROM_HANDLE((&ioreq2)),
outputRec->structPtr);
return outputRec->status;
}
#endif /* FL_NO_USE_FUNC */
#ifdef VERIFY_VOLUME
case FL_IOCTL_VERIFY_VOLUME:
{
flVerifyVolumeInput FAR1 *inputRec = (flVerifyVolumeInput FAR1 *)inputRecord;
flVerifyVolumeOutput FAR1 *outputRec = (flVerifyVolumeOutput FAR1 *)outputRecord;
ioreq2.irLength = (long)inputRec->flags;
ioreq2.irData = outputRec->callBack;
outputRec->status = flVerifyVolume(&ioreq2);
return outputRec->status;
}
#endif /* VERIFY_VOLUME */
#ifndef NO_IPL_CODE
case FL_IOCTL_EXTENDED_WRITE_IPL:
{
flIplInput FAR1 *inputRec = (flIplInput FAR1 *)inputRecord;
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
ioreq2.irData = inputRec->buf;
ioreq2.irLength = inputRec->bufLen;
ioreq2.irFlags = inputRec->flags;
outputRec->status = flWriteIPL(&ioreq2);
return outputRec->status;
}
#endif /* NO_IPL_CODE */
default:
return flBadParameter;
}
}
#endif /* IOCTL_INTERFACE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -