flat assembler
Message board for the users of flat assembler.
Index
> Windows > CRITICAL_SECTION |
Author |
|
Picnic 16 Jul 2009, 11:53
Ok, I think i found it.
Code: struc RTL_CRITICAL_SECTION { .DebugInfo dd ? .LockCount dd ? .RecursionCount dd ? .OwningThread dd ? .LockSemaphore dd ? .SpinCount dd ? } |
|||
16 Jul 2009, 11:53 |
|
LocoDelAssembly 16 Jul 2009, 15:59
To be safe better use this:
Code: struc RTL_CRITICAL_SECTION { align 4 ; Will pad with NOPs only if more initialized data and/or instructions follows in the current section, otherwise it will only reserve space .: .DebugInfo dd ? .LockCount dd ? .RecursionCount dd ? .OwningThread dd ? .LockSemaphore dd ? .SpinCount dd ? } I don't remember if EnterCriticalSection and/or InitializeCriticalSection fail if the structure is unaligned but yet I think there could be some problems on multi-{core|CPU} systems. |
|||
16 Jul 2009, 15:59 |
|
Picnic 17 Jul 2009, 15:31
Thank you LocoDelAssembly.
|
|||
17 Jul 2009, 15:31 |
|
Picnic 21 Jul 2009, 11:12
Hi again guys,
I need to use the in_addr structure in fasm. Code: typedef struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w; u_long S_addr; } S_un; }IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR; I found MASM in_addr structure code below.. Code: S_UN_B STRUCT s_b1 BYTE ? s_b2 BYTE ? s_b3 BYTE ? s_b4 BYTE ? ENDS S_UN_W STRUCT s_w1 WORD ? s_w2 WORD ? ENDS ADDRESS_UNION UNION S_un_b S_UN_B <> S_un_w S_UN_W <> S_addr DWORD ? ENDS in_addr STRUCT S_un ADDRESS_UNION <> in_addr ENDS ..and attempt a rewrite in fasm. Is this correct ? Code: struc S_un_b { .s_b1 db ? .s_b2 db ? .s_b3 db ? .s_b4 db ? } struc S_un_w { .s_w1 dw ? .s_w2 dw ? } struc ADDRESS_UNION { virtual .S_un_b S_un_b .S_un_w S_un_w .S_addr dd ? end virtual } struc in_addr { .S_un ADDRESS_UNION } virtual at 0 in_addr in_addr sizeof.in_addr: end virtual |
|||
21 Jul 2009, 11:12 |
|
bitRAKE 21 Jul 2009, 14:23
ADDRESS_UNION doesn't seem correct, but the rest is okay.
Code: struc ADDRESS_UNION { virtual at $ .S_un_b S_un_b end virtual virtual at $ .S_un_w S_un_w end virtual .S_addr dd ? } |
|||
21 Jul 2009, 14:23 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.