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 | ||