Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. I'm now worried sick after I read that! I had sensitive pics on that phone with tick-tock.
  3. My grand dad still got Vista on his PC, looks cool, feels fast.
  4. Hi guys! I have a customer that has created lots of documents with words and their meanings etc... Does anyone know how he can convert these documents into a dictionary? bookie32
  5. Today
  6. The older driver probably just doesn't have GL version 4.5 yet. OpenCL and CUDA were disabled on lower-end graphics cards until some driver version, because their performance is not enough to be useful. PhysX needs to be reinstalled, and I also noticed that in XP GPU-Z doesn't always detect its presence correctly. Also try replacing in inf not the first ID you get, but from another 710, maybe that also affects what will be installed.
  7. I just installed driver v344.75 by adding device id into nvaci.inf file, installation went well and seems driver working. it scored 38518 on 3dmark2001se (i was expecting around 40k). But card appears as GT555M not GT 710 in device manager and GPU-Z : EDIT: ok had to add these 2 lines in "nvaci.info" for correct device id : [Manufacturer] %NVIDIA% = NVIDIA_Devices,NTx86.5.1,NTx86.6.0 [NVIDIA_Devices.NTx86.5.1] %NVIDIA_DEV.128B% = Section001, PCI\VEN_10DE&DEV_128B&SUBSYS_85E71043&REV_A1 <-- ... ... ... [Strings] DiskID1 = "NVIDIA Windows XP (32 bit) Driver Library Installation Disk 1" NVIDIA = "NVIDIA" NVIDIA_DEV.128B = "NVIDIA GeForce GT 710 <-- But I realized that, after editing .inf file and installing v344.75, GPU-Z now shows OpenGL version 4.4, it was 4.5 earlier. and in new GPU-Z some features missing such as: Why? Computing line : OpenCL , CUDA Technology line: PysX Question: is it safe to edit .inf file to add unofficial support to officially-not-supported driver for this card? (asking for hw-pc health, not for nvidia)
  8. What with site uefa.com Why only empty white page and nothing else? (Fresh March version of New Moon)
  9. I need to bump this. I haven't had the best luck here- it's baffling how difficult finding something so seemingly basic is this hard for Windows 95/98/ME. Any software recommendations would be helpful. I tried RedNotebook 0.4.0 with KernelEx- no luck. Anything like MyPrivateDiary would be perfect. Found some: http://www.filetransit.com/download.php?id=452562 I would prefer having a Windows 95-compatible app because they tend to be a lot lighter. Modern apps like RedNotebook are crazy bloated. It makes the fan of my old Intel Core Duo 2 laptop's fan turn on.
  10. Device ID on device manager is "PCI\VEN_10DE&DEV_128B&SUBSYS_85E71043&REV_A1\4&2E5EAC9&0&0008" (weird, GPU-Z shows release date as 2014) as i said earlier unfortunately working driver for my gt 710 starting from version v361.75 (Jan 27,2016) to 361.81, non of the earlier version worked for this card - i tried already. and all the versions from 361.75 to 361.81 having freeze issue with 3DMark2001SE and games. Not always at 1st or 2nd tests but eventually they caused freeze issue (with the error i mentioned in my earlier post) at later tests. I tested all drivers one by one. I edited nvaci.inf version to 6.14.13.6881 from 10.18.13.6881 but it still shows v10.18.13.6881 in windows device manager, is it normal? EDIT: I just ran 3dmark2001se, and unfortunately as soon as I pressed benchmark button it freezed --> with driver 368.81 edited version ID to 6.14.13.6881 NOTE: I have been using v344.75 natively with my GT730 (ASUS 2GB GDDR5 Low-profile) and v344.75 is very stable, ranking 49000 something (almost 50000) at 3dmark2001se on XP.
  11. Wow - it's good to be back after that scary outage! Also good to see that nothing appears to have been lost. It's been 2 1/2 weeks since I posted about pdf.js; unfortunately I was stopped by a problem I couldn't resolve and had to go back to the drawing board. Although the pdf.js V2.15 I downloaded from GitHub works fine with some sites, it simply won't work with others. Problem is (or at least appears to be) that the downloaded version was intended to be hosted on a Web site, not run from within the browser (either built-in or as an extension). As a result, Serpent's cross-site scripting protection keeps kicking in if the site you're trying to download a .pdf from doesn't send the right "CORS" header saying it's OK for another "Web site" to access the pdf. I couldn't figure out how to get around it, so I gave up on the GitHub versions. Instead I started extracting pdf.js from newer versions of Firefox. This worked better, without the XSS errors I was getting with the downloaded versions. I got up to FF 79, but that was still only at version 2.6.47. (Unfortunately Mozilla shuffled everything around in FF 80 and I haven't yet found the pdf.js in that or any newer version.) So, a disappointing setback, and RL issues haven't helped. But I haven't given up yet.
  12. That's nice of you, but it would be nicer if you included more details on how to use this info, for example: What's WSB?
  13. well you certainly can translate this command to a 32 bit variant code you already have used the "cmpxchg" assembly command but it actually should do the wrong job sometimes because that compares up only 32 bits (and then already react to the 32 bits) (if that compare was the same or not already changed the result because it can already react to either the first 32 bits or the next 32 bits) (.data:004762D5 jnz short near ptr loc_4762BE+1 - that done again erased the first 32 compare results and only react to the next 32 bits compare) but you need the result for 64 bits compare! it seems to me that you can also solve this problem by : making 2 compares "cmp" commands for the flags/reaction now it is about not to make the same mistake (if you do just the 32 bit compare again it reads the next 32 bits and ignored the first 32 bits from the first compare) you need a reaction to the first compare (if that was the case) and making the "cmp" command again and react a second time if both compares was correct you make the reaction just as described (else the other described reaction) : https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg16b that command description actually dont say something about exchanging the values it just says that if the 64 bit compare was equal it says "if the compare was equal the values in it stores the data in ECX and EBX in other case in EDX EAX (what dont look a exchange for me) - maybe the description lacks (what i useally do then i try it out and take looks) // if it would be an exchange it would be: (later reading the code i dont see a common exchange a common exchange would be if eax would be changed to edx - eax having eax and edx having eax): 4 assembly "mov" commands (2 for the destination and 2 for the source) or: 2 times the "xchg" command // but ! looking the assembly code from you it seems different to me i dont see a exchange (just let me say im not entire certain here, but it might helps to talk about that): the cmpxchg8b command seems to compare registers EDX and EAX for equal and then changing an offset to a memory location (stack register two "EBP") (qword ptr [ebp+0]) (qword useally describes a 64 bit movement (word * 4 (16 bits * 4)) if that result was equal it should store EAX and EDX to that offset (otherwise it probaly loads that values to EDX EAX) the next command is "jnz" that command still has the results from this compare, if they was equal it jumps back to "Efls10" (what seems a loop to me) if not it continues the end and and this function seeing your code again "lock cmpxchg [ebp+4], eax" dont have a reaction but it might need (as said before it need a reaction to both of the 32 bits) if that was not the case it need to end this (not always just continue) done that way the first 32 bit can have a false result - and if the next 32 bit are right - then it just still do the job - while it should not --------------------- if the 64 bit guys apear, that is not neccesary needed if you have to use more then 32 bits there are severial methods you can solve this (to name a few) 1: one is using 2 registers and just create its behavoir for that there is a such 32 bit assembly command that is used for that ( CDQ - Convert Word to Doubleword/Convert Doubleword to Quadword ) 2: an offset to somewhere in memory that is bigger then 32 bits and control it as 64 bits 3 (even more is possible with a offset location): if you have more then 64 bit flags you just need an offset to a location , where you actually control the flags/ or data 4: for file movements there is for the REP command the CPU actually can see that it has to move a certain amount of data, and the cpu can translate the filemovement to something it actually can progress the FSB (quad pumped) to the RAM is doing a such thing unlike the 64 bit guys might would think you dont need a 64 bit offset for this a other example would be the CACHE, HDD´s use a CACHE to fill up the data that data can then be progressed differently - like with 2 bit(wires), 4 bit, 16, 32, 64 or even more (it rather comes down what the physical cable/wire can do)
  14. Almost a week. First time the forum's been down for so long since I joined. Thought it was the end! At first thought it was because we're so revolutionary. Finally realised that's what happens when you know who makes bad jokes.
  15. Thanks for letting me know. I don't need this anymore though, as I contacted a friend who made me an AHK script (about 6 lines of simple code) that sets taskbar transparency to 0 when it's hidden. I've attached it if anyone else wants it. TBLineFix.ahk
  16. Thanks @Andalu! Before we were so rudely interrupted, I was about to post that I've really given up on this now. I've bought two 2TB disks, and I'm going to use those for my backups, in two enclosures which I can easily swap over. Using a 3TB disk is just not stable or reliable enough to use on my multi-boot system. As we're talking about backups, obviously anything which might make the data on the disks unusable is a complete no-no. I don't think it's anything to do with the workarounds for handling GPT disks on XP. The problem is exactly the same whether using the Paragon driver or using the files from Server 2003. The errors are there even when the disk is connected directly to the motherboard, not via the SATA card. So, I don't think that they can be being caused by working through the card interface. As you are apparently seeing similar issues, I think it's just something to do with the way that XP interacts with disks over 2TB, which even the driver change does not seem to fix. It is apparently working correctly in XP, but generating a file structure which is actually corrupt, which is quickly revealed if you then try to use the disk on Windows 10. Likewise, a transfer done using Windows 10 is seen as corrupt on Windows XP. I really don't know whether that is resolvable.
  17. @ClassicNick Works on all previous versions. This is nothing web-specific or browser-specific. The new version simply does not accepts/processes the Alt+CharCode input from the keyboard (which works in near all Windows applications). This should be accepted in any editable text field (address bar, form fields,...). Probably the new WinTextEventDispatcherListener patch is the guilty introduced in the mentioned version.
  18. Yesterday
  19. @Dietmar But the cmpxchg8b is probably used in many system files and drivers, so you must patch probably hundreds or thousands of files. (0F C7 4D 00 pattern found in ntdll.dll, duser.dll and some others, not only in ntoskernel, and there are more variants).
  20. Hi @Dave-H unfortunately, for the past few days I have been experiencing problems with corrupted files and unreadable folders even on my GPT disks connected to the asmedia card in XP. After reading about the problems you reported in your posts I did a check and realized that for example some video files were no longer playable in both XP and Win10. The strange thing is that in both operating systems, checking with chkdsk via command prompt never detected any anomalies. Since discovering such issues, I have done some tests to try to figure out what they might depend on and at the moment I can say that probably in XP the problem is exceeding the "classic" 2.2TB limit. Today, in a 4TB disk, after verifying that all files occupying a space of 2,198,497,806,087 bytes were without problems, I copied others to it until 2,473,491,444,978 bytes were reached: no problems detected in copying and no problems for both old and new files but only until the next reboot of XP when some old files previously working were now corrupted. I will have to do more tests to be sure of the above and also to be able to figure out whether the anomalies found may depend on the asmedia card and its driver or firmware versions or the disk.sys and partmgr.sys drivers that cannot work in XP as they do in Win2003 (where I did not detect any problem even exceeding the 2.2TB limit) or other reasons that at the moment I cannot imagine what they may be. I will report the news as soon as I have definite information about it. First, I will have to find time to make a new backup of the files that then became corrupt
  21. If you use the January 27th build, does the "Alt+CharCode text input" work? Do you have an example (web page presumably) that I can use to test it myself?
  22. For the 486 cpu, this AMD64 opcode will look something like this Dietmar 8B 01 ; mov eax, [ecx] 25 00 00 00 FE ; and eax, 0fe000000H #ifdef NTOS_KERNEL_RUNTIME 80 38 01 ; cmp byte ptr [eax], 1 F6 D1 ; not cl D1 C2 ; ror eax, 1 C1 F8 2B ; sar eax, 43 #else C1 F8 2A ; sar eax, 42 #endif C3 ; ret
  23. But still is diference between width of the left aligned taskbar on 1st and 2nd monitors. Any tips please? THNX
  24. Was this change intentional? I liked it how it was before
  25. I deleted the SAB cache and it is ok .. ...You may try deleting %localappdata%\StartAllBack\Cache
  26. I think, this is a crazy nice way to overcome this problem, that works on all cpu. Problem is only the translate from AMD64 with 64bit registers this opcode to x86 (486 cpu) with 32 bit registers. I think, it can be done Dietmar For bit64 mov rax, [rcx] ; get address, sequence, and depth and rax, 0fe000000H ; isolate packed address ; ; The following code takes advantage of the fact that the high order bit ; for user mode addresses is zero and for system addresses is one. ; ifdef NTOS_KERNEL_RUNTIME cmp rax, 1 ; set carry if address is zero cmc ; set carry if address is not zero rcr rax, 1 ; rotate carry into high bit sar rax, 63 - 43 ; extract first entry address else shr rax, 63 - 42 ; extract first entry address endif ret ; return
  27. Please, where can be problem? W11 23h2, SAB 3.7.7 . I would like to thin bottom taskbar again. THX kAMzY0W1iw.mp4
  28. @PPeti66x Hi, until now not. But when I take a look at the Source Code from XP SP1 or even XP bit64, there is in each a file with name slist.asm. The 64bit version is from 2000, same author. But 64bit slist.asm takes another way, not using cmpxchg8b. If this opcodes from 64bit can be translated into x86 code, this would be also a possibility. But I have no idea, how to reach this in Hex code. It is unchanged since 1996 for NT4. "Only" the opcode cmpxchg8b has to be simulated with opcode from 486 cpu. Cutler in 1996 and so also for XP SP1 solved this problem, just "jump" over this opcode during assembly for .386 (and not .586). I make a try with 90 90 90 90 for all apearance of this opcode in XP SP3 in ntoskrnl.exe. But Bsod. Strange, because also in XP SP3 there is exact the same code from Cutler used from 1996, as you can see in ntoskrnl.exe via Ida Pro. It is a heavy memory operation and with more than 1 cpu there can be problems with this "jump". But the 486 cpu has only 1 processor, so it may be possible Dietmar EDIT: With Windbg, starting with bu ExInterlockedFlushSList I come to its driver entry point of my modded driver. And via trace (t, F8) I can see, that the code in my modded driver was fully entered and left with retn, no Bsod. slist.asm XP SP1 title "Interlocked Support" ;++ ; ; Copyright (c) 1996 Microsoft Corporation ; ; Module Name: ; ; slist.asm ; ; Abstract: ; ; This module implements functions to support interlocked S-List ; operations. ; ; Author: ; ; David N. Cutler (davec) 13-Mar-1996 ; ; Environment: ; ; Any mode. ; ; Revision History: ; ;-- .386p .xlist include ks386.inc include callconv.inc ; calling convention macros include mac386.inc .list _TEXT$00 SEGMENT DWORD PUBLIC 'CODE' ASSUME DS:FLAT, ES:FLAT, SS:NOTHING, FS:NOTHING, GS:NOTHING page , 132 subttl "Interlocked Flush Sequenced List" ;++ ; ; PSINGLE_LIST_ENTRY ; FASTCALL ; RtlpInterlockedFlushSList ( ; IN PSINGLE_LIST_ENTRY ListHead ; ) ; ; Routine Description: ; ; This function removes the entire list from a sequenced singly ; linked list so that access to the list is synchronized in an MP system. ; If there are no entries in the list, then a value of NULL is returned. ; Otherwise, the address of the entry at the top of the list is removed ; and returned as the function value and the list header is set to point ; to NULL. ; ; Arguments: ; ; (ecx) = ListHead - Supplies a pointer to the sequenced listhead from ; which the list is to be flushed. ; ; Return Value: ; ; The address of the entire current list, or NULL if the list is ; empty. ; ;-- ; ; These old interfaces just fall into the new ones ; cPublicFastCall ExInterlockedFlushSList, 1 fstENDP ExInterlockedFlushSList cPublicFastCall RtlpInterlockedFlushSList, 1 cPublicFpo 0,1 ; ; Save nonvolatile registers and read the listhead sequence number followed ; by the listhead next link. ; ; N.B. These two dwords MUST be read exactly in this order. ; push ebx ; save nonvolatile registers push ebp ; xor ebx, ebx ; zero out new pointer mov ebp, ecx ; save listhead address mov edx, [ebp] + 4 ; get current sequence number mov eax, [ebp] + 0 ; get current next link ; ; N.B. The following code is the retry code should the compare ; part of the compare exchange operation fail ; ; If the list is empty, then there is nothing that can be removed. ; Efls10: or eax, eax ; check if list is empty jz short Efls20 ; if z set, list is empty mov ecx, edx ; copy sequence number mov cx, bx ; clear depth leaving sequence number .586 ifndef NT_UP lock cmpxchg8b qword ptr [ebp] ; compare and exchange else cmpxchg8b qword ptr [ebp] ; compare and exchange endif .386 jnz short Efls10 ; if z clear, exchange failed ; ; Restore nonvolatile registers and return result. ; cPublicFpo 0,0 Efls20: pop ebp ; restore nonvolatile registers pop ebx ; fstRET RtlpInterlockedFlushSList fstENDP RtlpInterlockedFlushSList page , 132 subttl "Interlocked Pop Entry Sequenced List" ;++ ; ; PVOID ; FASTCALL ; RtlpInterlockedPopEntrySList ( ; IN PSLIST_HEADER ListHead ; ) ; ; Routine Description: ; ; This function removes an entry from the front of a sequenced singly ; linked list so that access to the list is synchronized in an MP system. ; If there are no entries in the list, then a value of NULL is returned. ; Otherwise, the address of the entry that is removed is returned as the ; function value. ; ; Arguments: ; ; (ecx) = ListHead - Supplies a pointer to the sequenced listhead from ; which an entry is to be removed. ; ; Return Value: ; ; The address of the entry removed from the list, or NULL if the list is ; empty. ; ;-- ; ; These older interfaces just fall into the new code below ; cPublicFastCall InterlockedPopEntrySList, 1 fstENDP InterlockedPopEntrySList cPublicFastCall ExInterlockedPopEntrySList, 2 fstENDP ExInterlockedPopEntrySList cPublicFastCall RtlpInterlockedPopEntrySList, 1 cPublicFpo 0,2 ; ; Save nonvolatile registers and read the listhead sequence number followed ; by the listhead next link. ; ; N.B. These two dwords MUST be read exactly in this order. ; push ebx ; save nonvolatile registers push ebp ; mov ebp, ecx ; save listhead address ; ; N.B. The following code is the continuation address should a fault ; occur in the rare case described below. ; public ExpInterlockedPopEntrySListResume public _ExpInterlockedPopEntrySListResume@0 ExpInterlockedPopEntrySListResume: ; _ExpInterlockedPopEntrySListResume@0: ; mov edx,[ebp] + 4 ; get current sequence number mov eax,[ebp] + 0 ; get current next link ; ; If the list is empty, then there is nothing that can be removed. ; Epop10: or eax, eax ; check if list is empty jz short Epop20 ; if z set, list is empty lea ecx, [edx-1] ; Adjust depth only ; ; N.B. It is possible for the following instruction to fault in the rare ; case where the first entry in the list is allocated on another ; processor and free between the time the free pointer is read above ; and the following instruction. When this happens, the access fault ; code continues execution by skipping the following instruction. ; This results in the compare failing and the entire operation is ; retried. ; public ExpInterlockedPopEntrySListFault ExpInterlockedPopEntrySListFault: ; mov ebx, [eax] ; get address of successor entry public _ExpInterlockedPopEntrySListEnd@0 _ExpInterlockedPopEntrySListEnd@0: ; .586 ifndef NT_UP lock cmpxchg8b qword ptr [ebp] ; compare and exchange else cmpxchg8b qword ptr [ebp] ; compare and exchange endif .386 jnz short Epop10 ; if z clear, exchange failed ; ; Restore nonvolatile registers and return result. ; cPublicFpo 0,0 Epop20: pop ebp ; restore nonvolatile registers pop ebx ; fstRET RtlpInterlockedPopEntrySList fstENDP RtlpInterlockedPopEntrySList page , 132 subttl "Interlocked Push Entry Sequenced List" ;++ ; ; PVOID ; FASTCALL ; RtlpInterlockedPushEntrySList ( ; IN PSLIST_HEADER ListHead, ; IN PVOID ListEntry ; ) ; ; Routine Description: ; ; This function inserts an entry at the head of a sequenced singly linked ; list so that access to the list is synchronized in an MP system. ; ; Arguments: ; ; (ecx) ListHead - Supplies a pointer to the sequenced listhead into which ; an entry is to be inserted. ; ; (edx) ListEntry - Supplies a pointer to the entry to be inserted at the ; head of the list. ; ; Return Value: ; ; Previous contents of ListHead. NULL implies list went from empty ; to not empty. ; ;-- ; ; This old interface just fall into the new code below. ; cPublicFastCall ExInterlockedPushEntrySList, 3 pop [esp] ; Drop the lock argument fstENDP ExInterlockedPushEntrySList cPublicFastCall InterlockedPushEntrySList, 2 fstENDP InterlockedPushEntrySList cPublicFastCall RtlpInterlockedPushEntrySList, 2 cPublicFpo 0,2 ; ; Save nonvolatile registers and read the listhead sequence number followed ; by the listhead next link. ; ; N.B. These two dwords MUST be read exactly in this order. ; push ebx ; save nonvolatile registers push ebp ; mov ebp, ecx ; save listhead address mov ebx, edx ; save list entry address mov edx,[ebp] + 4 ; get current sequence number mov eax,[ebp] + 0 ; get current next link Epsh10: mov [ebx], eax ; set next link in new first entry lea ecx, [edx+010001H] ; increment sequence number and depth .586 ifndef NT_UP lock cmpxchg8b qword ptr [ebp] ; compare and exchange else cmpxchg8b qword ptr[ebp] ; compare and exchange endif .386 jnz short Epsh10 ; if z clear, exchange failed ; ; Restore nonvolatile registers and return result. ; cPublicFpo 0,0 pop ebp ; restore nonvolatile registers pop ebx ; fstRET RtlpInterlockedPushEntrySList fstENDP RtlpInterlockedPushEntrySList ;++ ; ; SINGLE_LIST_ENTRY ; FASTCALL ; InterlockedPushListSList ( ; IN PSLIST_HEADER ListHead, ; IN PSINGLE_LIST_ENTRY List, ; IN PSINGLE_LIST_ENTRY ListEnd, ; IN ULONG Count ; ) ; ; Routine Description: ; ; This function will push multiple entries onto an SList at once ; ; Arguments: ; ; ListHead - List head to push the list to. ; ; List - The list to add to the front of the SList ; ListEnd - The last element in the chain ; Count - The number of items in the chain ; ; Return Value: ; ; PSINGLE_LIST_ENTRY - The old header pointer is returned ; ;-- cPublicFastCall InterlockedPushListSList, 4 cPublicFpo 0,4 push ebx ; save nonvolatile registers push ebp ; mov ebp, ecx ; save listhead address mov ebx, edx ; save list entry address mov edx,[ebp] + 4 ; get current sequence number mov eax,[ebp] + 0 ; get current next link Epshl10: mov ecx, [esp+4*3] ; Fetch address of list tail mov [ecx], eax ; Store new forward pointer in tail entry lea ecx, [edx+010000H] ; increment sequence number add ecx, [esp+4*4] ; Add in new count to create correct depth .586 ifndef NT_UP lock cmpxchg8b qword ptr [ebp] ; compare and exchange else cmpxchg8b qword ptr[ebp] ; compare and exchange endif .386 jnz short Epshl10 ; if z clear, exchange failed cPublicFpo 0,0 pop ebp ; restore nonvolatile registers pop ebx ; fstRET InterlockedPushListSList fstENDP InterlockedPushListSList ;++ ; ; PSINGLE_LIST_ENTRY ; FirstEntrySList ( ; IN PSLIST_HEADER SListHead ; ) ; ; Routine Description: ; ; This function returns the address of the fisrt entry in the SLIST or ; NULL. ; ; Arguments: ; ; ListHead (rcx) - Supplies a pointer to the sequenced listhead from ; which the first entry address is to be computed. ; ; Return Value: ; ; The address of the first entry is the specified, or NULL if the list is ; empty. ; ;-- cPublicProc _FirstEntrySList, 1 cPublicFpo 1,0 mov eax, [esp+4] mov eax, [eax] stdRET _FirstEntrySList stdENDP _FirstEntrySList ;++ ; ; LONGLONG ; FASTCALL ; RtlInterlockedCompareExchange64 ( ; IN OUT PLONGLONG Destination, ; IN PLONGLONG Exchange, ; IN PLONGLONG Comperand ; ) ; ; Routine Description: ; ; This function performs a compare and exchange of 64-bits. ; ; Arguments: ; ; (ecx) Destination - Supplies a pointer to the destination variable. ; ; (edx) Exchange - Supplies a pointer to the exchange value. ; ; (esp+4) Comperand - Supplies a pointer to the comperand value. ; ; Return Value: ; ; The current destination value is returned as the function value. ; ;-- cPublicFastCall RtlInterlockedCompareExchange64, 3 cPublicFpo 0,2 ; ; Save nonvolatile registers and read the exchange and comperand values. ; push ebx ; save nonvolatile registers push ebp ; mov ebp, ecx ; set destination address mov ebx, [edx] ; get exchange value mov ecx, [edx] + 4 ; mov edx, [esp] + 12 ; get comperand address mov eax, [edx] ; get comperand value mov edx, [edx] + 4 ; .586 ifndef NT_UP lock cmpxchg8b qword ptr [ebp] ; compare and exchange else cmpxchg8b qword ptr[ebp] ; compare and exchange endif .386 ; ; Restore nonvolatile registers and return result in edx:eax. ; cPublicFpo 0,0 pop ebp ; restore nonvolatile registers pop ebx ; fstRET RtlInterlockedCompareExchange64 fstENDP RtlInterlockedCompareExchange64 _TEXT$00 ends end
  1. Load more activity
×
×
  • Create New...