Filter Factory Analysis - Memory position 0x1C006008

Back to technical analysis page | Back to virtual memory overview

Attention: This page only addresses Filter Factory for Photoshop/Win32.

At memory position 0x1C006008 (for 3.0.4/3.1.x), and 0x1C008008 (for 3.00)
you will find a pointer to the FilterRecord (more information in the Adobe Photoshop SDK):

green = SDK for Photoshop 1.0 till 3.0.0   (available for use in Filter Factory)
pink = SDK fields introduced in Photoshop 3.0.4   (they are NOT used by Filter Factory)
gray = SDK from Photoshop 4.0 onwards (after the time of Filter Factory, obviously NOT used)

FilterRecord structure
Offset Size Type Description
0x0000 4 int32 serialNumber
0x0004 4 TestAbortProc abortProc
0x0008 4 ProgressProc progressProc
0x000C 4 Handle parameters
0x0010 4 Point imageSize
0x0014 2 int16 planes
0x0016 2 int16 filterRect.top
0x0018 2 int16 filterRect.left
0x001A 2 int16 filterRect.bottom
0x001C 2 int16 filterRect.right
0x001E 6 PSRGBColor background
0x0024 6 PSRGBColor foreground
0x002A 2 PADDING???  
0x002C 4 int32 maxSpace
0x0030 4 int32 bufferSpace
0x0034 2 int16 inRect.top
0x0036 2 int16 inRect.left
0x0038 2 int16 inRect.bottom
0x003A 2 int16 inRect.right
0x003C 2 int16 inLoPlane
0x003E 2 int16 inHiPlane
0x0040 2 int16 outRect.top
0x0042 2 int16 outRect.left
0x0044 2 int16 outRect.bottom
0x0046 2 int16 outRect.right
0x0048 2 int16 outLoPlane
0x004A 2 int16 outHiPlane
0x004C 4 void * inData
0x0050 4 int32 inRowBytes
0x0054 4 void * outData
0x0058 4 int32 outRowBytes
0x005C 1 Boolean  isFloating
0x005D 1 Boolean  haveMask
0x005E 1 Boolean  autoMask
0x005F 1 PADDING???  
0x0060 2 int16 maskRect.top
0x0062 2 int16 maskRect.left
0x0064 2 int16 maskRect.bottom
0x0066 2 int16 maskRect.right
0x0068 4 void * maskData
0x006C 4 int32 maskRowBytes
0x0070 4 FilterColor backColor
0x0074 4 FilterColor foreColor
0x0078 4 OSType hostSig
0x007C 4 HostProc hostProc
0x0080 2 int16 imageMode
0x0082 2 PADDING???  
0x0084 4 Fixed imageHRes
0x0088 4 Fixed imageVRes
0x008C 4 Point floatCoord
0x0090 4 Point wholeSize
0x0094 40 PlugInMonitor monitor
0x00BC 4 void * platformData
0x00C0 4 BufferProcs * bufferProcs
0x00C4 4 ResourceProcs * resourceProcs
0x00C8 4 ProcessEventProc  processEvent
0x00CC 4 DisplayPixelsProc  displayPixels
0x00D0 4 HandleProcs* handleProcs
0x00D4 1 Boolean supportsDummyChannels
0x00D5 1 Boolean  supportsAlternateLayouts
0x00D6 2 int16 wantLayout
0x00D8 2 int16 filterCase
0x00DA 2 int16 dummyPlaneValue
0x00DC 4 void * premiereHook
0x00E0 4 AdvanceStateProc  advanceState
0x00E4 1 Boolean supportsAbsolute
0x00E5 1 Boolean wantsAbsolute
0x00E6 2 PADDING???  
0x00E8 4 GetPropertyProc getPropertyObsolete
0x00EC 1 Boolean cannotUndo
0x00ED 1 Boolean supportsPadding
0x00EE 2 int16 inputPadding
0x00F0 2 int16 outputPadding
0x00F2 2 int16 maskPadding
0x00F4 1 char samplingSupport
0x00F5 1 char reservedByte ("for alignment")
0x00F6 2 PADDING???  
0x00F8 4 Fixed inputRate
0x00FC 4 Fixed maskRate
0x0100 4 ColorServicesProc  colorServices
0x0104 2 int16 inLayerPlanes
0x0106 2 int16 inTransparencyMask
0x0108 2 int16 inLayerMasks
0x010A 2 int16 inInvertedLayerMasks
0x010C 2 int16 inNonLayerPlanes
0x010E 2 int16 outLayerPlanes
0x0110 2 int16 outTransparencyMask
0x0112 2 int16 outLayerMasks
0x0114 2 int16 outInvertedLayerMasks
0x0116 2 int16 outNonLayerPlanes
0x0118 2 int16 absLayerPlanes
0x011A 2 int16 absTransparencyMask
0x011C 2 int16 absLayerMasks
0x011E 2 int16 absInvertedLayerMasks
0x0120 2 int16 absNonLayerPlanes
0x0122 2 int16 inPreDummyPlanes
0x0124 2 int16 inPostDummyPlanes
0x0126 2 int16 outPreDummyPlanes
0x0128 2 int16 outPostDummyPlanes
0x012A 2 PADDING???  
0x012C 4 int32 inColumnBytes
0x0130 4 int32 inPlaneBytes
0x0134 4 int32 outColumnBytes
0x0138 4 int32 outPlaneBytes
0x013C 4 ImageServicesProcs * imageServicesProcs
0x0140 4 PropertyProcs* propertyProcs
0x0144 2 int16 inTileHeight
0x0146 2 int16 inTileWidth
0x0148 4 Point inTileOrigin
0x014C 2 int16 absTileHeight
0x014E 2 int16 absTileWidth
0x0150 4 Point absTileOrigin
0x0154 2 int16 outTileHeight
0x0156 2 int16 outTileWidth
0x0158 4 Point outTileOrigin
0x015C 2 int16 maskTileHeight
0x015E 2 int16 maskTileWidth
0x0160 4 Point maskTileOrigin
0x0164 4 PIDescriptorParameters* descriptorParameters
0x0168 4 Str255* errorString
0x016C 4 ChannelPortProcs * channelPortProcs
0x0170 4 ReadImageDocumentDesc * documentInfo
0x0174 4 SPBasicSuite* sSPBasic
0x0178 4 void* plugInRef
0x017C 4 int32 depth
0x0180 4 Handle iCCprofileData
0x0184 4 int32 iCCprofileSize
0x0188 4 int32 canUseICCProfiles
0x018C 4 int32 hasImageScrap
0x0190 4 BigDocumentStruct* bigDocumentData
0x0194 4 PIDescriptorParameters* input3DScene
0x0198 4 PIDescriptorParameters* output3DScene
0x019C 1 Boolean createNewLayer
0x019D 3 PADDING???  
0x01A0 4 Handle iCCWorkingProfileData
0x01A4 4 int32 iCCWorkingProfileSize
0x01A8 8 int64 bufferSpace64
0x01B0 8 int64 maxSpace64
0x01B8 46 char reserved [46]
0x01E6 2 PADDING??? (according to "sizeof")
0x01E8 Size total