UcmTcpciPortControllerAlert 함수(ucmtcpciportcontroller.h)

포트 컨트롤러에서 수신되는 하드웨어 경고에 대한 정보를 UcmTcpciCx로 보냅니다.

구문

void UcmTcpciPortControllerAlert(
  [in] UCMTCPCIPORTCONTROLLER               PortControllerObject,
       PUCMTCPCI_PORT_CONTROLLER_ALERT_DATA AlertData,
       size_t                               NumberOfAlerts
);

매개 변수

[in] PortControllerObject

클라이언트 드라이버가 UcmTcpciPortControllerCreate에 대한 이전 호출에서 받은 포트 컨트롤러 개체에 대한 핸들입니다.

AlertData

UcmTcpciCx로 전송되지 않은 모든 현재 경고를 포함하는 UCMTCPCI_PORT_CONTROLLER_ALERT_DATA 배열에 대한 포인터입니다. 이 값은 NULL일 수 없습니다.

NumberOfAlerts

AlertData가 가리키는 배열의 항목 수입니다. 이 값은 0일 수 없습니다.

반환 값

없음

설명

UcmTcpciPortControllerAlert 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 인라인 함수가 적절한 NTSTATUS 오류 코드를 반환할 수 있습니다.

클라이언트 드라이버는 UcmTcpciPortControllerStart 를 호출하여 이전에 시작된 UcmTcpciPortControllerAlert를 호출해야 합니다.

하드웨어 경고가 발생하면 클라이언트 드라이버는 경고 유형을 결정하고, PD 메시지와 같은 해당 경고와 관련된 보조 정보를 가져오고, 배열을 채운 다음, UcmTcpciPortControllerAlert를 호출해야 합니다.

클라이언트 드라이버는 경고를 순차적으로 보고해야 합니다. 드라이버는 경합 조건으로 이어질 수 있으므로 동시에 실행되는 스레드에서 이 메서드를 호출해서는 안 됩니다. 클래스 확장은 모든 내부 데이터가 올바르게 잠금으로 보호되도록 보장하지만, 드라이버가 외부 동기화 없이 동시에 여러 스레드에서 UcmTcpciPortControllerAlert 를 호출하는 경우 수신된 경고 집합이 최신 상태임을 보장하지 않습니다. 이 시나리오를 방지하려면 드라이버는 ISR( 인터럽트 서비스 루틴 ) 또는 ISR에 대해 큐에 대기 중인 DPC 개체 내에서 이 메서드를 호출해야 합니다. 지정된 시간에 하나의 instance 실행되도록 ISR을 올바르게 동기화해야 합니다.

클라이언트 드라이버는 이 호출 내에서 UcmTcpciPortControllerAlert 가 반환되기 전에 클래스 확장이 요청을 제출할 수 있다고 가정해야 합니다.

경고를 처리할 때 UcmTcpciCx는 UcmTcpciPortControllerAlert 호출이 반환되기 전에 클라이언트 드라이버에 하드웨어 요청을 보낼 수 있습니다. 드라이버가 UcmTcpciPortControllerAlert 를 호출하는 동안 잠금을 유지하고 하드웨어 요청을 처리할 때 동일한 잠금을 획득하려고 하면 교착 상태가 발생할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
지원되는 최소 서버 Windows Server 2016
대상 플랫폼 Windows
헤더 ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

추가 정보