USBFN_GET_ATTACH_ACTION 콜백 함수(usbfnattach.h)
충전기가 포트에 연결될 때 호출되는 필터 드라이버의 구현입니다.
구문
USBFN_GET_ATTACH_ACTION UsbfnGetAttachAction;
NTSTATUS UsbfnGetAttachAction(
[in] PVOID Context,
[out] PUSBFN_ON_ATTACH OnAttach
)
{...}
매개 변수
[in] Context
드라이버 정의 컨텍스트에 대한 포인터입니다.
[out] OnAttach
드라이버가 연결 및 포트 유형으로 채우는 호출자가 할당한 USBFN_ON_ATTACH 구조체에 대한 포인터입니다.
반환 값
작업이 성공하면 콜백 함수는 STATUS_SUCCESS 반환하거나 NT_SUCCESS(상태)이 TRUE인 다른 상태 값을 반환해야 합니다. 그렇지 않으면 NT_SUCCESS(상태)이 FALSE와 같은 상태 값을 반환해야 합니다.
설명
연결 및 분리 감지를 지원하려면 USB 하위 필터 드라이버가 지원을 게시해야 합니다. 게시 프로세스 중에 드라이버는 이 콜백 함수의 구현도 등록합니다. 자세한 내용은 독점 충전기를 지원하기 위한 USB 필터 드라이버를 참조하세요.
예제
NTSTATUS
UsbLowerFilter_GetAttachAction(
__in PVOID Context,
__out PUSBFN_ON_ATTACH OnAttach
)
{
NTSTATUS Status;
PPDCP_CONTEXT PdcpContext = NULL;
LARGE_INTEGER Timeout;
PAGED_CODE();
// Get driver context
PdcpContext = DeviceGetUsbLowerFilterContext((WDFDEVICE)Context);
// Clear the event
KeClearEvent(&PdcpContext->AbortAttachOperation);
// Wait for a while
Timeout.QuadPart = WDF_REL_TIMEOUT_IN_MS(PdcpContext->DetectionDelayInms);
Status = KeWaitForSingleObject(
&PdcpContext->AbortAttachOperation,
Executive,
KernelMode,
FALSE,
&Timeout);
switch (Status)
{
case STATUS_SUCCESS:
// The abort event was set.
Status = STATUS_REQUEST_ABORTED;
break;
case STATUS_TIMEOUT:
Status = STATUS_SUCCESS;
break;
default:
break;
}
if (NT_SUCCESS(Status))
{
OnAttach->AttachAction = PdcpContext->CurrentAttachAction;
OnAttach->PortType = PdcpContext->CurrentPortType;
}
return Status;
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | usbfnattach.h |
IRQL | PASSIVE_LEVEL |