📄 flioctl.c
字号:
switch(inputRec->type)
{
case OTP_SIZE:
outputRec->status = flOTPSize(&ioreq2);
inputRec->lockedFlag = (FLByte)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 = (FLByte) 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:
DBG_PRINT_ERR(FLZONE_IOCTL,"ERROR - Unrecognized 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 = (FLSDword)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 */
#ifdef RUGGEDIZED
case FL_IOCTL_OPEN_TRANSACTION:
{
flRuggedizeInput FAR1 *inputRec = (flRuggedizeInput FAR1 *) inputRecord;
flRuggedizeOutput FAR1 *outputRec = (flRuggedizeOutput FAR1 *)outputRecord;
ioreq2.irLength = FL_OPEN_TRANSACTION;
ioreq2.irCount = inputRec->mode;
outputRec->status = flRuggedizeOperation(&ioreq2);
outputRec->handle = ioreq2.irFlags;
return outputRec->status;
}
case FL_IOCTL_COMMIT_TRANSACTION:
{
flRuggedizeInput FAR1 *inputRec = (flRuggedizeInput FAR1 *) inputRecord;
flRuggedizeOutput FAR1 *outputRec = (flRuggedizeOutput FAR1 *)outputRecord;
ioreq2.irLength = FL_COMMIT_TRANSACTION;
ioreq2.irFlags = inputRec->handle;
outputRec->status = flRuggedizeOperation(&ioreq2);
outputRec->handle = ioreq2.irFlags;
return outputRec->status;
}
#endif /*RUGGEDIZED*/
#ifndef FL_NO_QUICK_MOUNT_FEATURE
case FL_IOCTL_IS_QUICK_MOUNT_VALID:
{
flGetQuickMountOutput FAR1 *outputRec = (flGetQuickMountOutput FAR1 *)outputRecord;
outputRec->status = flGetQuickMountStatus(&ioreq2);
outputRec->mode = (FLByte)ioreq2.irFlags;
return outputRec->status;
}
#ifndef FL_READ_ONLY
case FL_IOCTL_WRITE_QUICK_MOUNT_INFO:
{
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
outputRec->status = flWriteQuickMountInfo(&ioreq2);
return outputRec->status;
}
case FL_IOCTL_CLEAR_QUICK_MOUNT_INFO:
{
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
outputRec->status = flClearQuickMountInfo(&ioreq2);
return outputRec->status;
}
#endif /* FL_READ_ONLY */
#endif /* FL_NO_QUICK_MOUNT_FEATURE */
#ifndef FL_READ_ONLY
case FL_IOCTL_COMPLETE_OPERATION:
{
flOutputStatusRecord FAR1 *outputRec = (flOutputStatusRecord FAR1 *)outputRecord;
outputRec->status = flCompleteOperation(&ioreq2);
return outputRec->status;
}
#endif /* FL_READ_ONLY */
default:
return flBadParameter;
}
}
#endif /* IOCTL_INTERFACE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -