NmrClientAttachProvider 함수(netioddk.h)

NmrClientAttachProvider 함수는 클라이언트 모듈을 공급자 모듈에 연결합니다.

구문

NTSTATUS NmrClientAttachProvider(
  [in]  HANDLE                 NmrBindingHandle,
  [in]  __drv_aliasesMem PVOID ClientBindingContext,
  [in]  const VOID             *ClientDispatch,
  [out] PVOID                  *ProviderBindingContext,
  [out] const VOID             **ProviderDispatch
);

매개 변수

[in] NmrBindingHandle

NMR에서 클라이언트 모듈과 공급자 모듈 간의 바인딩을 나타내는 데 사용하는 핸들입니다. NMR은 클라이언트 모듈의 ClientAttachProvider 콜백 함수를 호출할 때 이 핸들을 클라이언트 모듈에 전달합니다.

[in] ClientBindingContext

클라이언트 모듈과 공급자 모듈 간의 바인딩에 대한 호출자 제공 컨텍스트에 대한 포인터입니다. 클라이언트 모듈은 이 컨텍스트를 사용하여 바인딩 상태를 추적합니다. 클라이언트 모듈의 바인딩 컨텍스트의 내용은 공급자 모듈에 불투명합니다. 공급자 모듈은 클라이언트 모듈의 바인딩 컨텍스트가 필요한 클라이언트 모듈의 NPI 콜백 함수를 호출할 때마다 이 포인터를 클라이언트 모듈에 전달합니다. 클라이언트 모듈은 공급자 모듈이 클라이언트 모듈에 연결되어 있는 한 이 컨텍스트가 유효하고 메모리에 상주하는지 확인해야 합니다.

[in] ClientDispatch

클라이언트 모듈에 대한 NPI 콜백 함수의 디스패치 테이블을 포함하는 상수 구조체에 대한 포인터입니다. 클라이언트 모듈은 공급자 모듈이 클라이언트 모듈에 연결되어 있는 한 이 구조가 유효하고 메모리에 상주하는지 확인해야 합니다. 구조체의 내용은 NPI에 따라 다릅니다. NPI가 클라이언트 디스패치 테이블 구조를 정의하지 않는 경우 클라이언트 모듈은 이 매개 변수를 NULL로 설정해야 합니다.

[out] ProviderBindingContext

클라이언트 모듈과 공급자 모듈 간의 바인딩에 대한 공급자 모듈의 컨텍스트에 대한 포인터를 수신하는 변수에 대한 포인터입니다. 공급자 모듈은 이 컨텍스트를 사용하여 바인딩 상태를 추적합니다. 공급자 모듈의 바인딩 컨텍스트의 내용은 클라이언트 모듈에 불투명합니다. 클라이언트 모듈은 공급자 모듈의 바인딩 컨텍스트가 필요한 공급자 모듈의 NPI 함수를 호출할 때마다 공급자 모듈에 이 포인터를 전달합니다.

[out] ProviderDispatch

디스패치 테이블이 포함된 구조체에 대한 포인터를 수신하는 변수에 대한 포인터입니다.
공급자 모듈에 대한 NPI 함수입니다. 구조체의 내용은 NPI에 따라 다릅니다.

반환 값

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

반환 코드 설명
STATUS_SUCCESS
클라이언트 모듈이 공급자 모듈에 성공적으로 연결되었습니다.
STATUS_NOINTERFACE
공급자 모듈이 클라이언트 모듈에 연결되지 않았습니다.
기타 상태 코드
오류가 발생했습니다.

설명

클라이언트 모듈은 ClientAttachProvider 콜백 함수에서 NmrClientAttachProvider 함수를 호출하여 공급자 모듈에 직접 연결합니다.

클라이언트 모듈이 NmrClientAttachProvider 함수를 호출하면 NMR은 공급자 모듈의 ProviderAttachClient 콜백 함수를 호출하여 첨부 파일 프로세스를 완료합니다. NmrClientAttachProvider 함수는 공급자 모듈의 ProviderAttachClient 콜백 함수에서 반환되는 상태 코드를 반환합니다.

NmrClientAttachProvider 함수가 STATUS_SUCCESS 반환하지 않는 경우 클라이언트 모듈은 바인딩 컨텍스트 구조에 포함된 데이터의 필요한 정리를 수행해야 합니다. 클라이언트 모듈은 구조체에 대한 메모리를 동적으로 할당한 경우 바인딩 컨텍스트 구조에 대한 메모리를 해제해야 합니다.

NmrClientAttachProvider 함수가 STATUS_SUCCESS 반환하고 클라이언트 모듈이 바인딩 컨텍스트에 대한 메모리를 동적으로 할당한 경우 클라이언트 모듈은 NMR이 클라이언트 모듈의 를 호출할 때 할당된 메모리를 해제해야 합니다.클라이언트 모듈과 공급자 모듈이 서로 분리된 후 ClientCleanupBindingContext 콜백 함수입니다.

NmrClientAttachProvider 함수가 STATUS_SUCCESS 반환하는 경우 클라이언트 모듈은 ProviderBindingContextProviderDispatch 매개 변수에 반환된 포인터를 저장해야 공급자 모듈의 NPI 함수를 호출할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 netioddk.h(Wsk.h 포함)
라이브러리 Netio.lib
IRQL PASSIVE_LEVEL

추가 정보

ClientAttachProvider

ClientCleanupBindingContext

ProviderAttachClient