75 ULONG i, ulInitCount, ulSeed;
89 skip(
"Module kernel32 not found\n");
110 if (pfnInitOnceInitialize)
112 pfnInitOnceInitialize(&InitOnce);
116 skip(
"InitOnceInitialize not found\n");
120 if (!pfnInitOnceExecuteOnce)
122 skip(
"InitOnceExecuteOnce not found\n");
134 bRet = pfnInitOnceExecuteOnce(&InitOnce, InitOnceProc, &ulInitCount, (
LPVOID*)&ulContextData);
135 ok(bRet,
"InitOnceExecuteOnce failed with %lu\n",
GetLastError());
139 bRet = pfnInitOnceExecuteOnce(&InitOnce,
143 ok(bRet,
"InitOnceExecuteOnce failed with %lu\n",
GetLastError());
144 ok(ulInitCount == 1,
"ulInitCount is not 1\n");
145 ok(ulContextData ==
g_ulRandom,
"Output ulContextData is incorrect\n");
149 if (!pfnInitOnceBeginInitialize || !pfnInitOnceComplete)
151 skip(
"InitOnceBeginInitialize or InitOnceComplete not found\n");
157 ulContextData = 0xdeadbeef;
161 bRet = pfnInitOnceBeginInitialize(&InitOnce, 0, &fPending, (
LPVOID*)&ulContextData);
162 ok(bRet,
"InitOnceBeginInitialize failed with %lu\n",
GetLastError());
167 ok(fPending,
"fPending is not TRUE after the first success InitOnceBeginInitialize\n");
174 fPending = 0xdeadbeef;
175 bRet = pfnInitOnceBeginInitialize(&InitOnce,
179 ok(bRet ==
FALSE,
"InitOnceBeginInitialize should fail\n");
180 ok(fPending == 0xdeadbeef,
"fPending should be unmodified\n");
181 ok(ulContextData == 0xdeadbeef,
"ulContextData should be unmodified\n");
185 bRet = pfnInitOnceComplete(&InitOnce, 0, (
LPVOID)ulTempContext);
196 bRet = pfnInitOnceBeginInitialize(&InitOnce,
201 "InitOnceBeginInitialize returns incorrect result for a completed initialization\n");
208 bRet = pfnInitOnceBeginInitialize(&InitOnce,
212 ok(bRet,
"InitOnceBeginInitialize failed with %lu\n",
GetLastError());
217 ok(fPending,
"fPending is not TRUE after a success InitOnceBeginInitialize\n");
228 bRet = pfnInitOnceBeginInitialize(&InitOnce, 0, &fPending, (
LPVOID*)&ulContextData);
229 ok(!bRet,
"InitOnceBeginInitialize should not success\n");
234 "Last error is %lu, but %u is expected\n",
243 bRet = pfnInitOnceBeginInitialize(&InitOnce,
247 ok(bRet,
"InitOnceBeginInitialize failed with %lu\n",
GetLastError());
252 ok(fPending,
"fPending is not TRUE after a success InitOnceBeginInitialize\n");
269 ok(!bRet,
"InitOnceComplete should not success\n");
274 "Last error is %lu, but %u is expected\n",
283 bRet = pfnInitOnceBeginInitialize(&InitOnce,
288 "InitOnceBeginInitialize returns incorrect result for a completed initialization\n");
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
DWORD WINAPI GetTickCount(VOID)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOL WINAPI FN_InitOnceBeginInitialize(_Inout_ LPINIT_ONCE lpInitOnce, _In_ DWORD dwFlags, _Out_ PBOOL fPending, _Outptr_opt_result_maybenull_ LPVOID *lpContext)
static VOID InitWorker(_Inout_ PULONG InitCount, _Out_ PULONG_PTR Context)
BOOL WINAPI FN_InitOnceComplete(_Inout_ LPINIT_ONCE lpInitOnce, _In_ DWORD dwFlags, _In_opt_ LPVOID lpContext)
VOID WINAPI FN_InitOnceInitialize(_Out_ PINIT_ONCE InitOnce)
BOOL WINAPI FN_InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
NTSYSAPI ULONG NTAPI RtlRandom(_Inout_ PULONG Seed)
#define _Outptr_opt_result_maybenull_
BOOL(WINAPI * PINIT_ONCE_FN)(_Inout_ PINIT_ONCE InitOnce, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ PVOID *Context)
DWORD WINAPI GetLastError(void)
PRTL_RUN_ONCE LPINIT_ONCE
#define INIT_ONCE_CHECK_ONLY
#define INIT_ONCE_CTX_RESERVED_BITS
#define INIT_ONCE_STATIC_INIT
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ERROR_GEN_FAILURE
_In_ __inner_callback PRTL_RUN_ONCE_INIT_FN InitFn
_Inout_opt_ PVOID Parameter