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 ? }  | 
              |||
                  
  | 
              
| 
                  
                   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.  | 
              |||
                  
  | 
              
| 
                  
                   Picnic 17 Jul 2009, 15:31 
                  Thank you LocoDelAssembly. 
                  
                 | 
              |||
                  
  | 
              
| 
                  
                   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  | 
              |||
                  
  | 
              
| 
                  
                   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 ? }  | 
              |||
                  
  | 
              
< Last Thread | Next Thread >  | 
    
Forum Rules: 
  | 
    
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.