View Single Post
Old 7th September 2018, 00:40   #952  |  Link
FranceBB
Broadcast Encoder
 
FranceBB's Avatar
 
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
Quote:
- XySubFilter.DLL now compiled with v141_xp toolset instead of v141 (like VSFilter.DLL)
Still, VSFilter 3.1.0.801 doesn't work on my XP Professional (with Microsoft Extended Support) with Avisynth+ r2728.
None of your modified version work on XP, even though you compiled with v141_xp.
I have all the C++ Redistributable installed, from 2005 to 2017, by the way.

I tried with a simple script, but AVSPmod didn't recognize the command "TextSub" in the first place.


When I tried to run it:


So I tried to run AVSMeter and it reported "Invalid Access Memory Location (998)".


I decided to investigate why and it seems that two kernel calls are missing in Windows XP: InitializeProcThreadAttributeList and DeleteProcThreadAttributeList.
Unfortunately, these two functions have been introduced in Windows Vista.

InitializeProcThreadAttributeList is a bool.
It returns a zero value if it fails or a non-zero value if it succeeds.
It has lpAttributeList (which is the attribute list and it can be NULL to determine the buffer size required to support the specified number of attributes), dwAttributeCount (which is the count of attributes to be added to the list), dwFlags (which is a reserved parameter and it must be zero) and lpSize.

Code:
BOOL InitializeProcThreadAttributeList(
  LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
  DWORD                        dwAttributeCount,
  DWORD                        dwFlags,
  PSIZE_T                      lpSize
);
DeleteProcThreadAttributeList is a void and thus it does not return a value. It simply has lpAttributeList which is the attribute list created by the InitializeProcThreadAttributeList function.

Code:
void DeleteProcThreadAttributeList(
  LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList
);

I took a look at Wine and it seems that they implemented the call, so I tried to take their implementation and use it as a wrapper to basically direct the call to it instead of to the kernel, but unfortunately it didn't work (I messed it up when I tried to adapt it, I'm 100% sure).
Any thoughts?

FranceBB is offline   Reply With Quote