in src/umock_lock_factory_windows.c [99:128]
UMOCK_C_LOCK_HANDLE umock_lock_factory_create_lock(void* params)
{
(void)params;
UMOCK_C_LOCK_HANDLE result;
/* Codes_SRS_UMOCK_LOCK_FACTORY_WINDOWS_01_001: [ umock_lock_factory_create_lock shall allocate memory for the lock. ]*/
UMOCK_C_LOCK_WINDOWS* srw_lock_windows = umockalloc_malloc(sizeof(UMOCK_C_LOCK_WINDOWS));
if (srw_lock_windows == NULL)
{
/* Codes_SRS_UMOCK_LOCK_FACTORY_WINDOWS_01_004: [ If any error occurs, umock_lock_factory_create_lock shall fail and return NULL. ]*/
UMOCK_LOG("umockalloc_malloc(%zu) failed", sizeof(UMOCK_C_LOCK_WINDOWS));
result = NULL;
}
else
{
/* Codes_SRS_UMOCK_LOCK_FACTORY_WINDOWS_01_003: [ umock_lock_factory_create_lock shall return a lock handle that has the function pointers set to umock_lock_windows_acquire_shared, umock_lock_windows_release_shared, umock_lock_windows_acquire_exclusive, umock_lock_windows_release_exclusive and umock_lock_windows_destroy. ]*/
srw_lock_windows->lock_if.acquire_shared = umock_lock_windows_acquire_shared;
srw_lock_windows->lock_if.release_shared = umock_lock_windows_release_shared;
srw_lock_windows->lock_if.acquire_exclusive = umock_lock_windows_acquire_exclusive;
srw_lock_windows->lock_if.release_exclusive = umock_lock_windows_release_exclusive;
srw_lock_windows->lock_if.destroy = umock_lock_windows_destroy;
/* Codes_SRS_UMOCK_LOCK_FACTORY_WINDOWS_01_002: [ umock_lock_factory_create_lock shall initialize a SRW lock that is encapsulated by the new UMOCK_C_LOCK_HANDLE. ]*/
InitializeSRWLock(&srw_lock_windows->srw_lock);
result = &srw_lock_windows->lock_if;
}
return result;
}