MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / windows_lock_open

Function windows_lock_open

src/daemon/service.c:886–910  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

884}
885
886static HANDLE windows_lock_open(const wchar_t *path) {
887 for (unsigned int attempt = 0; attempt < 100; attempt++) {
888 HANDLE file = CreateFileW(
889 /* Read access is sufficient for LockFileEx. Keeping this handle
890 * read-only makes it share-compatible with the brief DACL repair
891 * handle, whose FILE_SHARE_READ still admits every live locker. */
892 path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
893 FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OPEN_REPARSE_POINT, NULL);
894 if (file != INVALID_HANDLE_VALUE) {
895 LARGE_INTEGER size;
896 if (windows_log_handle_valid(file, &size)) {
897 (void)SetHandleInformation(file, HANDLE_FLAG_INHERIT, 0);
898 return file;
899 }
900 (void)CloseHandle(file);
901 return INVALID_HANDLE_VALUE;
902 }
903 DWORD error = GetLastError();
904 if (error != ERROR_SHARING_VIOLATION && error != ERROR_LOCK_VIOLATION) {
905 return INVALID_HANDLE_VALUE;
906 }
907 Sleep(2);
908 }
909 return INVALID_HANDLE_VALUE;
910}
911
912static bool windows_lock_exclusive(HANDLE file, OVERLAPPED *range) {
913 memset(range, 0, sizeof(*range));

Callers 1

windows_log_appendFunction · 0.85

Calls 1

windows_log_handle_validFunction · 0.85

Tested by

no test coverage detected