NDK_FN_BIND 콜백 함수(ndkpi.h)

NdkBind(NDK_FN_BIND) 함수는 메모리 창을 MR(메모리 영역)의 특정 하위 영역에 바인딩합니다.

구문

NDK_FN_BIND NdkFnBind;

NTSTATUS NdkFnBind(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
  [in]           NDK_MR *pMr,
  [in]           NDK_MW *pMw,
  [in]           PVOID VirtualAddress,
  [in]           SIZE_T Length,
  [in]           ULONG Flags
)
{...}

매개 변수

[in] pNdkQp

QP(NDK 큐 쌍) 개체(NDK_QP)에 대한 포인터입니다.

[in, optional] RequestContext

이 요청에 대한 NDK_RESULT 구조체의 RequestContext 멤버에서 반환할 컨텍스트 값입니다.

[in] pMr

MR(NDK 메모리 영역) 개체(NDK_MR)에 대한 포인터입니다.

[in] pMw

MW(NDK 메모리 창) 개체(NDK_MW)에 대한 포인터입니다.

[in] VirtualAddress

MR에 대한 MDL의 가상 주소보다 크거나 같아야 하고 MR에 대한 MDL의 가상 주소와 Length 매개 변수의 값보다 작아야 하는 가상 주소입니다.

MmGetMdlVirtualAddress 매크로를 사용하여 MR에 대한 MDL의 가상 주소를 가져옵니다.

[in] Length

MW에 바인딩할 MR의 길이입니다.

[in] Flags

허용되는 작업을 지정하는 플래그의 비트 OR입니다. 지원되는 플래그는 다음과 같습니다.

의미
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
이 요청을 성공적으로 완료해도 아웃바운드 완료 큐에서 완료 이벤트가 생성되지 않음을 나타냅니다. 그러나 실패한 요청은 완료 큐에서 완료를 생성합니다.
NDK_OP_FLAG_READ_FENCE
0x00000002
하드웨어가 이 요청 처리를 시작하기 전에 모든 이전 읽기 요청을 완료해야 했음을 나타냅니다.
NDK_OP_FLAG_ALLOW_REMOTE_READ
0x00000008
연결된 피어에 대해 메모리 창에 대한 읽기 액세스를 사용하도록 설정합니다. 메모리 창에 액세스하려면 연결된 피어에 유효한 토큰이 있어야 합니다.
NDK_OP_FLAG_ALLOW_REMOTE_WRITE
0x00000030
연결된 피어에 대해 메모리 창에 대한 쓰기 액세스를 사용하도록 설정합니다. 메모리 창에 액세스하려면 연결된 피어에 유효한 토큰이 있어야 합니다.
NDK_OP_FLAG_DEFER
0x00000200
처리를 위해 하드웨어에 대한 요청을 나타내는 것을 연기할 수 있음을 NDK 공급자에게 나타냅니다. 이 플래그에 대한 자세한 내용은 NDKPI 지연 처리 체계를 참조하세요.

참고 이 플래그는 NDKPI 1.2(Windows Server 2012 R2) 이상에서만 지원됩니다.

반환 값

NdkBind 함수는 다음 NTSTATUS 코드 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
요청이 성공적으로 게시되었습니다. 작업 요청이 완료되면 완료 항목이 CQ에 큐에 대기됩니다.
STATUS_CONNECTION_INVALID
큐 쌍(QP)이 연결되어 있지 않습니다.
STATUS_ACCESS_VIOLATION
메모리 영역에서는 메모리 창에 요청된 액세스 유형을 허용하지 않습니다. NDK_OP_FLAG_ALLOW_WRITE 플래그에는 NDK_MR_FLAG_ALLOW_LOCAL_WRITE 플래그에 등록된 메모리 영역이 필요합니다.
기타 상태 코드
오류가 발생했습니다.

설명

NdkBind 는 MW(메모리 창)를 MR(메모리 영역)의 특정 하위 영역에 바인딩합니다.

VirtualAddress 매개 변수의 주소는 메모리 등록 중에 지정된 MDL 체인에서 설명하는 거의 연속된 지역 내의 주소여야 합니다. 주소는 공급자가 메모리 영역에 대한 인덱스로 처리해야 합니다. 공급자가 버퍼 콘텐츠를 읽거나 쓰는 데 사용할 수 있는 가상 주소로 주소를 사용하면 안 됩니다.

이 호출이 반환되면 원격 토큰을 NdkGetRemotetokenFromMw 함수(NDK_FN_GET_REMOTE_TOKEN_FROM_MW)와 함께 사용할 수 있습니다.

이 함수는 0부터 시작하는 가상 주소를 지원하지 않습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.30 이상에서는 지원되지 않습니다.
지원되는 최소 서버 Windows Server 2012
대상 플랫폼 Windows
헤더 ndkpi.h(Ndkpi.h 포함)
IRQL <=DISPATCH_LEVEL

추가 정보

MmGetMdlVirtualAddress

NDKPI 지연 처리 체계

NDKPI 작업 요청 게시 요구 사항

NDK_FN_GET_REMOTE_TOKEN_FROM_MW

NDK_MR

NDK_MW

NDK_QP

NDK_RESULT