nl::Weave::System::Layer

#include <src/system/SystemLayer.h>

This provides access to timers according to the configured event handling model.

Özet

WEAVE_SYSTEM_CONFIG_USE_SOCKETS için etkinlik hazırlık bildirimi, platform uyarlamasında geleneksel anket/seçim uygulaması aracılığıyla işlenir.

WEAVE_SYSTEM_CONFIG_USE_LWIP için etkinlik hazırlık bildirimi, etkinlik/mesaj sistemi için platforma ve sisteme özel kancalar aracılığıyla işlenir.

Oluşturucular ve Yıkıcılar

Layer(void)

Herkese açık türler

EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument) typedef
Error(*
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError) typedef
void(*

Herkese açık işlevler

AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
Error
Bu komut, sistem katmanına LwIP etkinliklerini işleyebilme becerisini genişletmek için bir etkinlik işleyici temsilcisi ekler.
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
void
Bu yöntem, StartTimer() tarihinden önce başlatılan tek seferlik zamanlayıcıyı iptal eder.
DispatchEvent(Event aEvent)
Error
Bu işlem, belirtilen etkinliği bu örnek tarafından işlenmek üzere gönderir.
DispatchEvents(void)
Error
Bu, platforma özgü bir kancayı çevreleyen sözdizimsel bir sarmalayıcıdır. Bu sarmalayıcı; bir etkinlik döngüsünü etkileyen, bu örneğe hizmet veren bir sırayı bekler, etkinlikleri bu sıradan alır ve ardından işlenmek üzere gönderir.
GetPlatformData(void) const
void *
Bu komut, daha önce ayarlanmışsa örneğe atanmış tüm istemciye özel platform verilerini döndürür.
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
Error
Bu işlem, bir Weave System Katman etkinliğinin gerçek dağıtımını ve işlenmesini uygular.
HandlePlatformTimer(void)
Error
Platform zamanlayıcısı süre sonu etkinliğini işleyin.
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
void
Belirli bir görüşmede G/Ç işlemini yönetme.
Init(void *aContext)
Error
NewTimer(Timer *& aTimerPtr)
Error
PostEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
Error
Bu işlemle, belirtilen türde bir etkinlik / mesaj, sağlanan bağımsız değişkenle birlikte bu örneğin platforma özel etkinlik sırasına gönderilir.
PrepareSelect(int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
void
select() için kullanılacak dosya tanımlayıcısı gruplarını hazırlayın.
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
Error
Weave iş parçacığında en kısa zamanda çalıştırılması için TimerCompleteFunct ile aynı imzaya sahip bir işlevi programlar.
SetPlatformData(void *aPlatformData)
void
Bu işlem, istemciye özel platform verilerini, istemci platformu tarafından daha sonra almak üzere örneğe ayarlar.
Shutdown(void)
Error
StartTimer(uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState)
Error
Bu yöntem tek seferlik bir zamanlayıcı başlatır.
State(void) const
LayerState
Bu, katman nesnesinin mevcut durumunu döndürür.
WakeSelect(void)
void
Uyandırma akışına tek bir bayt yazarak select() işlevini kullanarak dosya tanımlayıcılarını izleyen G/Ç iş parçacığını uyandırın.

Herkese açık statik işlevler

GetClock_Monotonic(void)
uint64_t
Tekdüze sistem zamanını mikrosaniye cinsinden döndürür.
GetClock_MonotonicHiRes(void)
uint64_t
Mikrosaniye cinsinden (potansiyel olarak) yüksek çözünürlüklü monoton sistem zamanını döndürür.
GetClock_MonotonicMS(void)
uint64_t
Monoton sistem zamanını milisaniye cinsinden döndürür.
GetClock_RealTime(uint64_t & curTime)
Error
Geçerli gerçek (siyah) zamanı mikrosaniye Unix saat biçiminde döndürür.
GetClock_RealTimeMS(uint64_t & curTimeMS)
Error
Geçerli gerçek (sivil) zamanı milisaniye cinsinden Unix saati biçiminde döndürür.
SetClock_RealTime(uint64_t newCurTime)
Error
Platformun mevcut gerçek (sivil) zaman kavramını belirler.

Herkese açık türler

EventHandler

Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)

TimerCompleteFunct

void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)

Herkese açık işlevler

AddEventHandlerDelegate

Error AddEventHandlerDelegate(
  LwIPEventHandlerDelegate & aDelegate
)

Bu komut, sistem katmanına LwIP etkinliklerini işleyebilme becerisini genişletmek için bir etkinlik işleyici temsilcisi ekler.

Ayrıntılar
Parametreler
[in] aDelegate
Başlatılmamış bir LwIP etkinlik işleyici yetki yapısı
Değerleri Döndür
WEAVE_SYSTEM_NO_ERROR
Başarıya merhaba.
WEAVE_SYSTEM_ERROR_BAD_ARGS
aDelegate içindeki işlev işaretçisi NULL ise

CancelTimer

void CancelTimer(
  TimerCompleteFunct aOnComplete,
  void *aAppState
)

Bu yöntem, StartTimer() tarihinden önce başlatılan tek seferlik zamanlayıcıyı iptal eder.

Ayrıntılar
Parametreler
[in] aOnComplete
StartTimer() çağrısında kullanılan geri çağırma işlevine yönlendiren bir işaretçi.
[in] aAppState
StartTimer() çağrısında kullanılan uygulama durumu nesnesinin işaretçisi.

DispatchEvent

Error DispatchEvent(
  Event aEvent
)

Bu işlem, belirtilen etkinliği bu örnek tarafından işlenmek üzere gönderir.

Etkinlikteki tür ve bağımsız değişkenlerin marjinalleştirmesi, platforma özgü bir kanca tarafından işlenir. Bu kanca, gerçek gönderme için layer::HandleEvent yöntemini geri çağırır.

Ayrıntılar
Parametreler
[in] aEvent
İşlenmek üzere gönderilecek, platforma özel etkinlik nesnesi.
İadeler
Başarıda WEAVE_SYSTEM_NO_ERROR; aksi takdirde, başlatma hatasının nedenini belirten belirli bir hata alırsınız.

DispatchEvents

Error DispatchEvents(
  void
)

Bu, platforma özgü bir kancayı çevreleyen sözdizimsel bir sarmalayıcıdır. Bu sarmalayıcı; bir etkinlik döngüsünü etkileyen, bu örneğe hizmet veren bir sırayı bekler, etkinlikleri bu sıradan alır ve ardından işlenmek üzere gönderir.

Ayrıntılar
İadeler
Başarıda WEAVE_SYSTEM_NO_ERROR; aksi takdirde, başlatma hatasının nedenini belirten belirli bir hata alırsınız.

GetPlatformData

void * GetPlatformData(
  void
) const 

Bu komut, daha önce ayarlanmışsa örneğe atanmış tüm istemciye özel platform verilerini döndürür.

Ayrıntılar
İadeler
Daha önce ayarlanmışsa müşteriye özel platform verileri; Aksi takdirde, NULL olacaktır.

HandleEvent

Error HandleEvent(
  Object & aTarget,
  EventType aEventType,
  uintptr_t aArgument
)

Bu işlem, bir Weave System Katman etkinliğinin gerçek dağıtımını ve işlenmesini uygular.

Ayrıntılar
Parametreler
[in,out] aTarget
Etkinliğin hedeflendiği katman nesnesine bir başvuru.
[in] aEventType
İşlenecek etkinlik / mesaj türü.
[in] aArgument
Etkinlik / mesajla ilişkili bağımsız değişken.
Değerleri Döndür
WEAVE_SYSTEM_NO_ERROR
Başarıya merhaba.
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
InetKatman nesnesinin durumu yanlışsa.
WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Etkinlik türü tanınmıyorsa.

HandlePlatformTimer

Error HandlePlatformTimer(
  void
)

Platform zamanlayıcısı süre sonu etkinliğini işleyin.

Süresi dolan zamanlayıcıları işlemek için nl::Weave::System::Timing::HandleDurationDuration Kronometre'yi çağırır. Bu API'nin yalnızca Weave System layer nesnesinin sahibi olan iş parçacığında çağrıldığı varsayılır.

Ayrıntılar
İadeler
Başarıda WEAVE_SYSTEM_NO_ERROR, aksi takdirde hata kodu.

HandleSelectResult

void HandleSelectResult(
  int aSetSize,
  fd_set *aReadSet,
  fd_set *aWriteSet,
  fd_set *aExceptionSet
)

Belirli bir görüşmede G/Ç işlemini yönetme.

Bu yöntem, her etkin uç noktadaki beklemedeki G/Ç etkinliğini kaydeder ve ardından bu uç noktalar için ilgili G/Ç işleme işlevlerini çağırır.

Ayrıntılar
Parametreler
[in] aSetSize
Seçimin döndürdüğü değer.
[in] aReadSet
Okunan dosya tanımlayıcıları grubunun işaretçisi.
[in] aWriteSet
Dosya yazma açıklayıcıları grubunun işaretçisi.
[in] aExceptionSet
Hatalı dosya tanımlayıcıları grubunu gösteren bir işaretçi.

Init

Error Init(
  void *aContext
)

Katman

 Layer(
  void
)

NewTimer

Error NewTimer(
  Timer *& aTimerPtr
)

PostEvent

Error PostEvent(
  Object & aTarget,
  EventType aEventType,
  uintptr_t aArgument
)

Bu işlemle, belirtilen türde bir etkinlik / mesaj, sağlanan bağımsız değişkenle birlikte bu örneğin platforma özel etkinlik sırasına gönderilir.

Ayrıntılar
Parametreler
[in,out] aTarget
Yayın isteğini gönderen Weave System Katman nesnesinin işaretçisi.
[in] aEventType
Yayınlanacak etkinliğin türü.
[in,out] aArgument
Yayınlanacak etkinlikle ilişkili bağımsız değişken.
Değerleri Döndür
WEAVE_SYSTEM_NO_ERROR
Başarıya merhaba.
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Katman nesnesinin durumunun yanlış olup olmadığı
WEAVE_SYSTEM_ERROR_NO_MEMORY
Etkinlik sırası doluysa.
other
Hatanın nedenini belirten platforma özgü hatalar oluşturuldu.

PrepareSelect

void PrepareSelect(
  int & aSetSize,
  fd_set *aReadSet,
  fd_set *aWriteSet,
  fd_set *aExceptionSet,
  struct timeval & aSleepTime
)

select() için kullanılacak dosya tanımlayıcısı gruplarını hazırlayın.

Ayrıntılar
Parametreler
[out] aSetSize
Dosya tanımlayıcı grubundaki dosya tanımlayıcıları aralığı.
[in] aReadSet
Okunabilir dosya açıklayıcıları grubunun işaretçisi.
[in] aWriteSet
Yazılabilir dosya açıklayıcıları grubunun işaretçisi.
[in] aExceptionSet
Hatalı dosya tanımlayıcıları grubunu gösteren bir işaretçi.
[in] aSleepTime
Maksimum uyku süresine atıfta bulunur.

ScheduleWork

Error ScheduleWork(
  TimerCompleteFunct aComplete,
  void *aAppState
)

Weave iş parçacığında en kısa zamanda çalıştırılması için TimerCompleteFunct ile aynı imzaya sahip bir işlevi programlar.

Ayrıntılar
Parametreler
[in] aComplete
Bu zamanlayıcı etkinleştiğinde çağrılacak geri çağırma işlevine işaret eden bir işaret.
[in] aAppState
Geri çağırma işlevine bağımsız değişken olarak aktarılacak bir uygulama durumu nesnesinin işaretçisi.
Değerleri Döndür
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
SystemKatman başlatılmadıysa.
WEAVE_SYSTEM_ERROR_NO_MEMORY
SystemKatman'ın yeni bir zamanlayıcı atayamaması
WEAVE_SYSTEM_NO_ERROR
Başarıya merhaba.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Bu işlem, istemciye özel platform verilerini, istemci platformu tarafından daha sonra almak üzere örneğe ayarlar.

Ayrıntılar
Parametreler
[in] aPlatformData
Ayarlanacak istemciye özel platform verileri.

Kapat

Error Shutdown(
  void
)

StartTimer

Error StartTimer(
  uint32_t aMilliseconds,
  TimerCompleteFunct aComplete,
  void *aAppState
)

Bu yöntem tek seferlik bir zamanlayıcı başlatır.

Ayrıntılar
Parametreler
[in] aMilliseconds
Milisaniye cinsinden geçerlilik süresi.
[in] aComplete
Zamanlayıcının süresi dolduğunda çağrılan işleve işaret eden bir işaret.
[in] aAppState
Zamanlayıcının süresi dolduğunda kullanılan uygulama durumu nesnesinin işaretçisi.
İadeler
WEAVE_SYSTEM_NO_ERROR Başarıyla tamamlandı.
İadeler
WEAVE_SYSTEM_ERROR_NO_MEMORY Zamanlayıcı atanamazsa.
İadeler
Zamanlayıcının başlatılamadığını gösteren diğer değer.

Eyalet

LayerState State(
  void
) const 

Bu, katman nesnesinin mevcut durumunu döndürür.

WakeSelect

void WakeSelect(
  void
)

Uyandırma akışına tek bir bayt yazarak select() işlevini kullanarak dosya tanımlayıcılarını izleyen G/Ç iş parçacığını uyandırın.

Not: WakeSelect(), HandleSelectResult() içinden çağrılıyorsa G/Ç ileti dizisi zaten uyanık olduğu için uyanık kalma kanalına yazma atlanabilir. Dahası, bu yazma işleminin başarısız olmasıyla ilgilenmiyoruz. Makul olasılıkla tek hata, kanalın dolu olmasıdır. Bu durumda, seçilen çağrı iş parçacığı yine de uyanır.

Herkese açık statik işlevler

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

Tekdüze sistem zamanını mikrosaniye cinsinden döndürür.

Bu işlev, platform tanımlı rastgele bir dönemden bu yana geçen süreyi mikrosaniye cinsinden döndürür. Döndürülen değerin, sistem yeniden başlatmaları arasında sürekli olarak artacağı (yani hiçbir zaman sarmalanmayacağı) garanti edilir. Ayrıca, uyanık kalındığında yeniden başlatma gerektirmeyen sistem uyku modları sırasında temel zaman kaynağının sürekli olarak işaretlenmesi garanti edilir.

Bazı platformlar, sistemin önyüklemesinden itibaren geçen süreyi ölçen bir değer döndürmeyi seçebilir ancak uygulamaların buna dayanmaması gerekir. Ayrıca, GetClock_Monotonic() döneminin diğer GetClock... işlevleriyle aynı olması gerekmez. Bu nedenle, göreli zaman hesaplamaları yalnızca aynı işlev tarafından döndürülen değerler üzerinde yapılabilir.

Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.

Ayrıntılar
İadeler
Platform tanımlı rastgele bir dönemden bu yana geçen süre (mikrosaniye cinsinden).

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

Mikrosaniye cinsinden (potansiyel olarak) yüksek çözünürlüklü monoton sistem zamanını döndürür.

Bu işlev, platform tanımlı rastgele bir dönemden bu yana geçen süreyi mikrosaniye cinsinden döndürür. Döndürülen değerin, sistem yeniden başlatmaları arasında sürekli olarak artacağı (yani hiçbir zaman sarmalanmayacağı) garanti edilir. Bununla birlikte, temel zamanlayıcının sistem derin uyku durumları sırasında sürekli olarak işaretlemesi gerekmez.

Bazı platformlar, GetClock_MonotonicHiRes() yöntemini kullanarak GetClock_Monotonic() işlevinden daha yüksek hassasiyetli yüksek çözünürlüklü bir zamanlayıcı kullanabilir ve bu, kademeli saat ayarlamalarına (çeviri) tabi değildir. Böyle bir zamanlayıcısı olmayan sistemler GetClock_Monotonic() ile aynı değeri döndürebilir.

GetClock_MonotonicHiRes() tarafından döndürülen zaman dönemi, GetClock_Monotonic() dahil olmak üzere diğer GetClock... işlevleriyle aynı olmalıdır.

Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.

Ayrıntılar
İadeler
Platform tanımlı rastgele bir dönemden bu yana geçen süre (mikrosaniye cinsinden).

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

Monoton sistem zamanını milisaniye cinsinden döndürür.

Bu işlev, platform tanımlı rastgele bir dönemden bu yana geçen süreyi milisaniye cinsinden döndürür. Döndürülen değerin, sistem yeniden başlatmaları arasında sürekli olarak artacağı (yani hiçbir zaman sarmalanmayacağı) garanti edilir. Ayrıca, uyanık kalındığında yeniden başlatma gerektirmeyen sistem uyku modları sırasında temel zaman kaynağının sürekli olarak işaretlenmesi garanti edilir.

Bazı platformlar, sistemin önyüklemesinden itibaren geçen süreyi ölçen bir değer döndürmeyi seçebilir ancak uygulamaların buna dayanmaması gerekir. Ayrıca, GetClock_Monotonic() döneminin diğer GetClock... işlevleriyle aynı olması gerekmez. Bu nedenle, göreli zaman hesaplamaları yalnızca aynı işlev tarafından döndürülen değerler üzerinde yapılabilir.

Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.

Ayrıntılar
İadeler
Platform tanımlı rastgele bir dönemden bu yana geçen süre (milisaniye cinsinden).

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

Geçerli gerçek (siyah) zamanı mikrosaniye Unix saat biçiminde döndürür.

Bu yöntem, yerel platformun geçerli gerçek zaman kavramını döndürür. Bu değer, mikrosaniyeye ölçeklendirilmiş Unix zaman değeri olarak ifade edilir. Temel saatin en az tam saniye hızda (1.000.000 değerinde) ilerlemesi garanti edilir, ancak bazı platformlarda daha hızlı akabilir.

Temel platform gerçek zamanlı izleme yapabiliyorsa ancak sistem o anda senkronize edilmemişse GetClock_RealTime() işlevi WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED hatasını döndürür.

Gerçek zamanlı izleme yapılamayan platformlarda GetClock_RealTime() yöntemi bulunmayabilir ve bu yönteme referans veren tüm uygulamalar için bağlantı hatası oluşabilir. Alternatif olarak, bu tür platformlar her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası döndüren bir GetClock_RealTime() uygulaması sağlayabilir.

Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.

Ayrıntılar
Parametreler
[out] curTime
Mikrosaniyeye ölçeklenmiş Unix süresi olarak ifade edilen geçerli zaman.
Değerleri Döndür
WEAVE_SYSTEM_NO_ERROR
Yöntem başarılı olursa.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Platform gerçek zamanlı izleme yapabiliyor, ancak şu anda senkronize edilmemiş.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Platformun gerçek zamanlı izleme yapamaması.

GetClock_RealTimeMS

Error GetClock_RealTimeMS(
  uint64_t & curTimeMS
)

Geçerli gerçek (sivil) zamanı milisaniye cinsinden Unix saati biçiminde döndürür.

Bu yöntem, yerel platformun milisaniyeye ölçeklendirilmiş Unix zaman değeri olarak ifade edilen geçerli gerçek zaman kavramını döndürür. Temel saatin en az tam saniye hızda (1.000.000 değerinde) ilerlemesi garanti edilir, ancak bazı platformlarda daha hızlı akabilir.

Temel platform gerçek zamanlı izleme yapabiliyorsa ancak sistem o anda senkronize edilmemişse GetClock_RealTimeMS() işlevi WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED hatasını döndürür.

Gerçek zamanlı izleme yapılamayan platformlarda GetClock_RealTimeMS() yöntemi bulunmayabilir ve bu yönteme referans veren tüm uygulamalar için bağlantı hatası oluşabilir. Alternatif olarak, bu tür platformlar her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası döndüren bir GetClock_RealTimeMS() uygulaması sağlayabilir.

Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.

Ayrıntılar
Parametreler
[out] curTime
Milisaniye olarak ölçeklendirilmiş Unix zamanı olarak ifade edilen geçerli zaman.
Değerleri Döndür
WEAVE_SYSTEM_NO_ERROR
Yöntem başarılı olursa.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Platform gerçek zamanlı izleme yapabiliyor, ancak şu anda senkronize edilmemiş.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Platformun gerçek zamanlı izleme yapamaması.

SetClock_RealTime

Error SetClock_RealTime(
  uint64_t newCurTime
)

Platformun mevcut gerçek (sivil) zaman kavramını belirler.

Uygulamalar, yerel platformun geçerli gerçek zaman kavramını ayarlamak için bu işlevi çağırabilir. Yeni geçerli zaman, mikrosaniyeye ölçeklenmiş Unix zaman değeriyle ifade edilir.

Ayarlandıktan sonra, temel platform saatinin en az tam saniye ayrıntı düzeyiyle gerçek zamanı izlemesi garanti edilir.

Bazı platformlar, gerçek zamanlı ayarlanabilecek uygulama veya işlemleri kısıtlayabilir. Arayanın gerçek zamanı değiştirmesine izin verilmiyorsa SetClock_RealTime() işlevi WEAVE_SYSTEM_ERROR_ACCESS_DENIED hatası döndürür.

Gerçek zamanlı izleme yapılamayan veya gerçek zamanlı ayarlama olanağı sunmayan platformlarda SetClock_RealTime() işlevi bulunmayabilir ve bu işleve referans veren tüm uygulamalar için bağlantı hatası oluşur. Alternatif olarak, bu tür platformlar her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası döndüren bir SetClock_RealTime() uygulaması sağlayabilir.

Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.

Ayrıntılar
Parametreler
[in] newCurTime
Mikrosaniyeye ölçeklenmiş Unix zamanı olarak ifade edilen yeni geçerli zaman.
Değerleri Döndür
WEAVE_SYSTEM_NO_ERROR
Yöntem başarılı olursa.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Platformun gerçek zamanlı izleme yapamaması.
#WEAVE_SYSTEM_ERROR_ACCESS_DENIED
Arayan uygulamanın geçerli saati ayarlama ayrıcalığı yoksa.