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 | 1 | Boolean | allowOverrangeColors | 
| 0x01B9 | 45 | char | reserved [45] | 
| 0x01E6 | 2 | PADDING??? (according to "sizeof") | |
| 0x01E8 | Size total | ||