1
0

nxonce.h 810 B

1234567891011121314151617181920212223242526272829303132333435
  1. #pragma once
  2. #include "nxapi.h"
  3. #ifndef WIN32_LEAN_AND_MEAN
  4. #define WIN32_LEAN_AND_MEAN
  5. #endif
  6. #include <windows.h>
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. #if 0 && _WIN32_WINNT >= 0x600
  11. typedef INIT_ONCE nx_once_value_t;
  12. typedef INIT_ONCE *nx_once_t;
  13. #define NX_ONCE_INITIALIZE INIT_ONCE_STATIC_INIT
  14. #define NX_ONCE_API CALLBACK
  15. NX_API void NXOnce(nx_once_t once, int (NX_ONCE_API *init_fn)(nx_once_t, void *, void **), void *param);
  16. NX_API void NXOnceInit(nx_once_t once);
  17. #else
  18. typedef struct nx_once_s
  19. {
  20. volatile int status;
  21. CRITICAL_SECTION critical_section;
  22. } nx_once_value_t, *nx_once_t;
  23. #define NX_ONCE_API
  24. NX_API void NXOnce(nx_once_t once, int (NX_ONCE_API *init_fn)(nx_once_t, void *, void **), void *);
  25. NX_API void NXOnceInit(nx_once_t once);
  26. #endif
  27. #ifdef __cplusplus
  28. }
  29. #endif