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 |