NdisSetCoalescableTimerObject 함수(ndis.h)

NdisSetCoalescableTimerObject 함수는 드라이버 작업에 타이머의 정확한 만료가 중요하지 않은 경우 일반적으로 전원 소비를 줄이기 위해 운영 체제가 다른 타이머와 조정하는 타이머 개체를 설정합니다.

구문

BOOLEAN NdisSetCoalescableTimerObject(
  [in]           NDIS_HANDLE   TimerObject,
  [in]           LARGE_INTEGER DueTime,
  [in, optional] LONG          MillisecondsPeriod,
  [in, optional] PVOID         FunctionContext,
  [in, optional] ULONG         Tolerance
);

매개 변수

[in] TimerObject

드라이버가 를 호출할 때 NDIS에서 제공하는 타이머 개체에 대한 핸들입니다. NdisAllocateTimerObject 함수입니다.

[in] DueTime

타이머가 만료되는 절대 또는 상대 시간입니다. DueTime 매개 변수의 값이 음수이면 만료 시간은 현재 시스템 시간을 기준으로 합니다. 그렇지 않으면 만료 시간이 절대입니다. 만료 시간은 시스템 시간 단위(100나노초 간격)로 표시됩니다. 절대 만료 시간은 시스템 시간의 변경 내용을 추적합니다. 상대 만료 시간은 시스템 시간 변경의 영향을 받지 않습니다.

[in, optional] MillisecondsPeriod

타이머가 취소되지 않는 한 타이머가 실행될 때 모든 instance 및 NetTimerCallback 함수에 대한 다음 호출 사이에 경과하는 선택적 주기 시간 간격(밀리초)입니다. 이 매개 변수의 값은 MAXLONG보다 작거나 같아야 합니다. 이 매개 변수는 타이머가 비정기적임을 나타내기 위해 0으로 설정할 수 있습니다.

[in, optional] FunctionContext

타이머가 실행될 때 NDIS가 연결된 NetTimerCallback 함수에 전달하는 호출자 제공 컨텍스트 영역에 대한 포인터입니다. 이 매개 변수가 NULL이면 NDIS는 에 지정된 기본값을 사용합니다. NDIS_TIMER_CHARACTERISTICS 구조체입니다.

[in, optional] Tolerance

MillisecondsPeriod로 지정된 타이머 기간과 DueTime 에서 지정한 초기 시간 간격 사이의 허용 오차(밀리초)입니다. 주기적 타이머는 (DueTime허용 오차 ) 및 ( DueTime + - 허용 오차) 사이의 시간 간격으로 먼저 만료됩니다. 주기적 타이머의 두 이후 만료 사이의 시간 간격은 ( MillisecondsPeriod - 허용 오차 ) 및 ( 밀리초Period + 허용 오차 ) 범위에 있습니다.

반환 값

타이머 개체가 시스템 타이머 큐에 이미 있는 경우 NdisSetCoalescableTimerObjectTRUE를 반환합니다. 그렇지 않으면 FALSE를 반환합니다.

설명

이 함수에서 설정한 타이머 개체는 NdisSetTimerObject에서 설정한 타이머와 동일하게 작동하며 만료 매개 변수 DueTime 에 추가 허용 오차 값이 추가됩니다. 운영 체제는 이 추가 허용 오차 값을 사용하여 다른 소프트웨어 타이머의 만료와 일치하도록 타이머의 만료 시간을 조정합니다. 이를 통해 운영 체제는 전력 소비를 줄이고 에너지 효율을 향상시킬 수 있습니다.

NdisSetTimerObject허용 오차가 0으로 설정된 경우 NdisSetCoalescableTimerObject와 유사하게 작동합니다.

드라이버가 NdisSetCoalescableTimerObject를 호출하면 타이머 개체는 ( DueTime허용 오차 ) 및 ( DueTime + - 허용 오차 ) 범위에 있는 간격이 만료될 때까지 큐에 대기합니다. 간격이 만료되면 운영 체제는 큐에서 타이머 개체를 제거하고 호출자가 제공한 NetTimerCallback 함수는 프로세서를 사용할 수 있게 되는 즉시 IRQL = DISPATCH_LEVEL 한 번 실행됩니다.

MillisecondsPeriod 매개 변수에 0이 아닌 값이 지정된 경우 타이머 개체는 범위(밀리초Period - 허용 오차) 및 ( 밀리초Period + 허용 오차)의 간격이 만료될 때까지 다시 큐에 대기합니다. 이 간격이 만료되면 타이머 개체가 큐에 다시 제출되고 호출자가 제공한 NetTimerCallback 함수는 프로세서를 사용할 수 있게 되는 즉시 IRQL = DISPATCH_LEVEL 한 번 실행됩니다.

타이머 병합을 효과적으로 사용하려면 호출자가 허용 오차 값을 32밀리초 이상 지정해야 합니다. 이 값은 약 두 개의 기본 시스템 클록 간격인 15.6밀리초와 같습니다. 이 작업을 수행할 수 있는 경우 100밀리초와 같이 더 큰 허용 오차 값을 사용합니다.

MillisecondsPeriodTolerance를 50밀리초의 배수로 설정하는 것이 좋습니다. 일반적인 MillisecondsPeriod 값은 50, 100, 250, 500 및 1000밀리초입니다. 일반적인 허용 오차 값은 50, 100, 150 및 250밀리초입니다.

일반적으로 MillisecondsPeriod 값이 큰 타이머는 비례적으로 큰 허용 오차 값을 사용할 수 있습니다. 예를 들어 MillisecondsPeriod = 500밀리초의 타이머는 허용 오차 = 50밀리초를 사용할 수 있습니다. 그러나 MillisecondsPeriod = 10초인 타이머는 허용 오차 = 1초를 사용할 수 있습니다.

타이머 동작에 대한 자세한 내용은 KeSetTimerEx를 참조하세요.

타이머를 취소하려면 NdisCancelTimerObject 함수를 호출합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.20 이상에서 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL <= DISPATCH_LEVEL

추가 정보

KeSetTimerEx

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetTimerObject

NetTimerCallback