29 lines
704 B
C
29 lines
704 B
C
// Public nt-lite DDK mutex declarations.
|
|
|
|
#pragma once
|
|
|
|
#include <ntlite/status.h>
|
|
#include <ntlite/ddk/list.h>
|
|
#include <ntlite/ddk/object.h>
|
|
#include <ntlite/ddk/sync.h>
|
|
#include <ntlite/ddk/thread.h>
|
|
|
|
typedef struct MUTEX {
|
|
OBJECT Header;
|
|
SPINLOCK Lock;
|
|
THREAD* Owner;
|
|
LIST_ENTRY WaitList;
|
|
} MUTEX;
|
|
|
|
// Creates a mutex object.
|
|
__declspec(dllexport) KSTATUS KeMutexCreate(MUTEX** out);
|
|
|
|
// Acquires a mutex, blocking when necessary.
|
|
__declspec(dllexport) KSTATUS KeAcquireMutex(MUTEX* mutex);
|
|
|
|
// Attempts to acquire a mutex without blocking.
|
|
__declspec(dllexport) KSTATUS KeTryAcquireMutex(MUTEX* mutex);
|
|
|
|
// Releases a mutex.
|
|
__declspec(dllexport) void KeReleaseMutex(MUTEX* mutex);
|