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 |