Jump to content

jumper

Member
  • Posts

    1,935
  • Joined

  • Last visited

  • Days Won

    7
  • Donations

    0.00 USD 
  • Country

    United States

Everything posted by jumper

  1. Good find, Joe. Tapping into the on-going Wine development will be key to playing catch-up to new MS API's. ReactOS has a later Win32 build of uxtheme.dll that is probably also based on the Wine sources, but it has heavy dependencies on newer system API's as well. Other versions of uxtheme.dll that I've found are only stubs or very limited implementations. For DLL's that don't exist in 9x, we should be able to build with Mingw compatible versions from the latest Wine sources using the instructions in your linked article. For DLL's that do, we can build full or partial (just the needed API's) DLL's and modify in core.ini the KernelEx compatibility modes to invoke them as needed. This would require some extra (Kext) code in each DLL, or the use of Kexstubs API forwarding. For non-KernelEx users, RLoew's API hook tool could be used instead.
  2. Why wait for someone else to fix it when you can Do It Yourself with Kexstubs? Kexstubs supports every missing api that has been reported on this board (and most of the web). Sloppy error reporting like this is the reason there is not already a fix.
  3. >Useless? Not at all; I found it very interesting. Thanks for discovering it, jaclaz.
  4. Logging off and logging back on shuts down then restarts Explorer. This is the way to get the ShellIconCache to update. It should also update the desktop.ini files where the individual folder settings are saved. Easy to try....
  5. The Lsa functions need to return a negative value to indicate failure, so our only option for now is 'true'. They don't SetLastError, so no 'e'. InitSecurityInterface[A/W] returns zero on failure, takes no parameters, and doesn't SetLastError. Sorted and merged: [Secur32.dll] GetUserNameExA=z3e GetUserNameExW=z3e InitSecurityInterfaceW=z0 LsaEnumerateLogonSessions=t2 LsaFreeReturnBuffer=t1 LsaGetLogonSessionData=t2 What is your default mode set to? It can be enabled or disabled (registry setting); and any compatibility mode (core.ini setting). I highly recommend Disabled or Enabled/Win98se (for the improved heap management). Only use a higher mode when required, or the app might try to take liberties.... [NTDLL.DLL] vsprintf=z0 'z' because no characters are outputted (hopefully the buffer is already zero-terminated, because we can't do that!) '0' because of the "C" calling convention (__cdecl). No 'e' because this function doesn't SetLastError. Edit: As of 822, we can use any of these definitions to forward vsprintf to be handled by Msvcrt.dll: [NTDLL.DLL] vsprintf=>Msvcrt.dll:vsprintf vsprintf=>Msvcrt:vsprintf vsprintf=>Msvcrt.dll: vsprintf=>Msvcrt: vsprintf=>
  6. Confirmed! According to Wikipedia, the current stable version is 2.2.6000. I run that version and have had no problems. What version has problems with ActivateActCtx?
  7. FileInfo 2.21 for Total Commander: This does look very promising. The server at physio-a.univ-tours.fr is currently not responding, however, so I can't test it yet. Remember to set the KernelEx compatibility mode on FileInfo to the same as the module you are testing--KernelEx API support varies by mode! The ideal KernelEx-aware dependency tester would test against each of the compatibility modes and recommend the best one to use.
  8. >I installed Firefox 14.01 portable. There is a problem with dll files msvcr100.dll and msvcp100.dll .... >I tried to run Firefox 14.01 portable with kernelex 4.5.2 on windows 98 I got a missing import function from kernel32.dll. KernelEx supports some of the msvc*100 dependencies; Kexstubs supports the rest. >When I checked with Dependency walker you could see there are several import and export functions missing. Dependency Walker makes invalid assumptions about how the loader resolves external dependencies. KernelEx users should _not_ use it. Please report (and only report) the Missing Export messages generated by the loader.
  9. >Isn't CoWaitForMultipleHandles already handled by KernelEx, and emulated at that? Good catch, loblo. Indeed, kexbasen contains a robust implementation of CoWaitForMultipleHandles. That is why stubs.ini doesn't already have a definition for it. This bring up two issues: 1. Dependency Walker doesn't know about KernelEx 2. What happens when a definition is added to stubs.ini that is covered elsewhere Until there is a DW-like tool that is Kex-aware, it's probably best to only add stubs for missing exports reported by the loader. ImportPatcher was designed to help non-KernelEx users and doesn't currently know about KernelEx, but that can easily be fixed. The beauty of "contents=Kstub626,std,kexbases,kexbasen" is that if kex already supports a function, the stubs.ini definition will be ignored. Also, if a standard (std) system dll is updated and now includes support for a function (think msvcrt*.dll), it will override any definition in stubs.ini.
  10. Joe, now that you've found two problems with the Activation Context (ActCtx) family of functions, we're likely to have trouble with the rest: [Kernel32.dll] ;ActivateActCtx=f2e // buggy! CreateActCtxA=t1e CreateActCtxW=t1e DeactivateActCtx=f2e FindActCtxSectionStringA=f5e ;FindActCtxSectionStringW=f5e // buggy! ... ReleaseActCtx=f1 Perhaps we should disable all of them, and then only reenabled them as needed.... MSDN - Activation Context Reference Function Description ActivateActCtx Activates the specified activation context. AddRefActCtx Increments the reference count of the specified activation context. CreateActCtx Creates an activation context. DeactivateActCtx Deactivates the specified activation context. FindActCtxSectionGuid Returns data contained in the ACTCTX_SECTION_KEYED_DATA structure that corresponds to the specified GUID. FindActCtxSectionString Returns data contained in the ACTCTX_SECTION_KEYED_DATA structure that corresponds to the specified string. GetCurrentActCtx Returns the current activation context. IsolationAwareCleanup Ensures that memory is freed when a manifest is loaded, unloaded, and reloaded. QueryActCtxW Queries the activation context for information about an assembly or file. QueryActCtxSettingsW Specifies the namespace and attribute name of the attribute that is to be queried. ReleaseActCtx Decrements the reference count of the specified activation context. ZombifyActCtx Deactivates the specified activation context, but does not deallocate it.
  11. That's good new. These must be delay-load dependencies that are loaded later, as needed. If the load fails, the operation that triggered it will fail. This appears to include printing. 1. Locate or create sections in stubs.ini for each module: [Winspool.drv] [ole32.dll] 2. Add blank definition keys for each missing export function: [Winspool.drv] GetPrinterDataExW [ole32.dll] CoWaitForMultipleHandles If we stop here, Kexstubs will prompt you at run-time for a return value if the function is ever invoked. 3. Add definition values for each function as per Post #21: [Winspool.drv] GetPrinterDataExW=t7 [ole32.dll] CoWaitForMultipleHandles=t5 4. Restart Windows to apply changes.
  12. I can confirm that flash 11.3.300.262 fails on Kex 4.5.12 in the default compatibilty mode. We can try changing modes, or it should be possible to modify core.ini (via "dll.api=std" lines) to back out the API changes from Kex 4.5.10 and determine where the problem lies. @MiKl What version of Kex and compatibility mode are you using with Flash version 11.3.300.265? .265 is a very minor update from .262, so perhaps .262 had a bug (related to the Kex 4.5.12 updates) that got fixed.
  13. A search for "NetUseEnum function msdn" yields: NetUseEnum function - MSDN - Microsoft Seven parameters. So return something other than zero. For Netapi32 functions, error code 1 works well. No reference to SetLastError. New definition should be: [Netapi32.dll] NetUseEnum=o7
  14. Good testing guys. I've added a warning to post #10. These definitions are intended to help the MSVC2010 CRT's so I'm surprised that they affect the 2008 CRT's. Can someone confirm with a process viewer what version of the CRT's are loaded in OO3.2.1 or other apps when the failure occurs? loblo had mentioned that "HeapQueryInformation -> SetLastError also seems to work but only when the function HeapSetInformation isn't also required". Try using the updates and commenting out just the "HeapQueryInformation" definition. It that isn't the culprit, a binary search will be needed--comment out half the remaining new definitions on each try. Unlike core.ini, stubs.ini supports both line and section comments. A semicolon (';') in front of a section name comments out the whole section. In front of a line, it comments out the whole line. Comments can also be place at the end of any line. For C/C++ programmers, a double-slash ("//") should also work. And for batch file programmers, a double-colon ("::"). (Okay, actually it's any character <= ';') In core.ini, there are no line or end-of-line comments. Whole sections can be commented out by inserting a semicolon (';') before the section name. To comment out a line, I move it to the bottom of the section, then insert a new line with the section header "[;]" above it.
  15. I didn't like the idea of needing to restart, either, but trying to avoid it delayed the release by weeks. I was unable to avoid the fact that KernelEx only loads support DLL's at startup. Even if it were possible to unload and then reload KernelEx like a USB device driver, unloading it would require the termination of all clients and that would pretty much shut down Windows anyway. The next version of Kexstubs, however, will allow for the redefinition of stubs with just the restart of any app that needs the new definition. This will allow for experimentation with various return values and LastError codes without a system restart.
  16. Excellent testing and reporting, schwups. During development, I searched the web for references to "missing export" to find needed API's and then added stub definitions. Naturally, I missed some that were right under my nose. Here is an update based largely upon loblo's work that can be manually added to stubs.ini to complete MSVC2010 (non-.NET) support. Definitions will take effect after next Windows restart: [edit] * Warning: Read posts #15-17 before applying these definitions. Insert definitions one at a time and only as needed. * [/edit] [Kernel32.dll] ActivateActCtx=f2e CreateActCtxA=t1e CreateActCtxW=t1e DeactivateActCtx=f2e FindActCtxSectionStringA=f5e FindActCtxSectionStringW=f5e GetGeoInfoA=z5e GetGeoInfoW=z5e GetUserGeoID=t1 GetVolumeNameForVolumeMountPointA=z3e GetVolumeNameForVolumeMountPointW=z3e HeapQueryInformation=f5e InitializeSListHead=f1 InterlockedFlushSList=f1 InterlockedPopEntrySList=f1 InterlockedPushEntrySList=f2 QueryDepthSList=f1 ReleaseActCtx=f1 By the way, sections don't need to be in alphabetical order but there should be no duplicates. Function definitions should be sorted, but Kexstubs will bubble-sort them (then reorder the strings) if they are not.
  17. @jds >Does this now supersede the previous 'NetApiEx' stuff? Temporarily, yes. At the moment, Kexstubs has stub support for more Netapi32 functions than NetApiEx. And additional stubs can easily be added as needs arise. But stubs are only a first step--they allow a program to load, but not to fully function. The next step is to write code that actually does what the calling program expects of it. That will be the role of NetApiEx in the future: to provide working API's rather than simple stubs. If we keep things open source with the right licensing, we should be able to borrow code from Wine and ReactOS as well as from the excellent work of our own WildBill and blackwingcat.
  18. Kexstubs now contains the follow definition for this API: [Advapi32.dll] ChangeServiceConfig2W=z3e That means: return zero, pop three parameters from the stack, and SetLastError (<invalid function>). You can also try changing the definition to "z3e0" / SetLastError (<success>).
  19. Excellent question, PROBLEMCHYLD. Previously, when users trying out new software were confronted with a "missing export" load failure, they had only two options: 1. Wait for someone else to update KernelEx, 2. Update KernelEx themselves. With Kexstubs installed, now there is is third option: 3. Edit a configuration file and reboot! And once I get the kinks worked out of the Kext examples, there will be a fourth option: 4. Add or upgrade specific API's by developing a custom module, without needing to rebuild the entire KernelEx core. Option 3 is the best for normal users (and great for developers as well), and is here right now. Option 4 will be the best for developers, and I expect will be the avenue for most new KernelEx development. Contributed results from options 3 and 4 can be rolled into the core KernelEx package if and when it is next updated.
  20. Kext: DIY KernelEx extensions A collection of tools for extending KernelEx Core.ini (in Post #144) Ktree9.7z iphlpapi4.7z Kstub822.zip Other recommended updates !Please post recommendations! Msvcrt.dll <- Msvcr70.dll / Msvcr71.dll Msvcr90.dll 9.00.21022.8 Msimg32.dll 5.00.2218.1 (Lab06_N(PRAVINSDEV).000328-1149) Winhttp.dll 5.1.2600.1557 (xpsp2_gdr.040517-1325) MsXML 4.0 SP2+fix / SP3 Ktree - KernelEx API viewer (Tree view control for core.ini and KernelEx\KnownDLLs) Ktree9.7z - (9Jan13): lists extension modules invoked by "contents=" of Core.ini lists DLLs supported via HKLM\Software\KernelEx\KnownDLLs lists all extensions by DLL lists all extensions by API Click below to see older updates: Iphlpapi.dll - Iphlpapi extension wrapper iphlpapi4.7z - (7Jan13): For use with or without KernelEx / Kexstubs see Post #116 for details and usage New in this version: Better GetAdaptersAddresses 10 new stubs Click below to see older updates: Kexstubs - better forwarding, better definitions Kstub822.zip - Kstub822.dll, Kstub822.ini Latest definitions for all stubbed functions! Fixes two bugs introduced in 816 related to comment processing New in 816: Forward definitions can now be abbreviated and commented Many new forward definitions providing full function support Stepload support removed Click below to see older updates: Source code available upon request:
  21. It means you need a Pentium 4, Opteron, Athlon64 or better processor--cvtss2sd (f3 0f 5a) is an SSE2 instruction!
  22. Yes, we are talking about file-based cloning. Beyond that, I fail to see how this is relevant to my question. I'm not asking anyone to do any tests, I'm just wondering if anyone actually knows. When I get some time, I'll put some files with long names (that have conflicting short names) on my ramdisk and clone it to a flash drive (or floppy or another ramdisk) using this drag-and-drop, icon-to-icon method. If all names match (long and short), I'll do some renaming and retesting in an effort to get it to fail. Slow method? Yes. Easy method? Yes (if it works). Third-party app required? No--just what's already there.
  23. The intersection of the content within my two links is "drag one icon onto the other." I read years ago that this is the easiest method to clone a drive. I don't remember if what I read pertained to Win3.x, Win9x, or WinXP. My question is: Does anyone happen to know if the icon drag-and-drop method for cloning a drive will work in Win9x, including preserving short file names?
  24. I realize that cloning a drive is no longer topical, but how about simply dragging the source drive (C:) icon onto the destination drive (D:) icon? 4. Clone a Windows system to the Hyperdrive by dragging and dropping the desired Windows system icon onto the Hyperdrive RAM icon. Just drag the image of your hard drive over to the icon for the external drive, and everything will be copied.
×
×
  • Create New...