SerCx2CustomTransmitCreate 함수(sercx.h)

SerCx2CustomTransmitCreate 메서드는 사용자 지정 전송 개체를 만듭니다. 이 개체는 SerCx2(직렬 프레임워크 확장 버전 2)에서 사용자 지정 데이터 전송 메커니즘을 통해 직렬 컨트롤러에 전송 데이터를 쓰는 데 사용합니다.

구문

NTSTATUS SerCx2CustomTransmitCreate(
  [in]  WDFDEVICE                      Device,
  [in]  PSERCX2_CUSTOM_TRANSMIT_CONFIG CustomTransmitConfig,
  [in]  PWDF_OBJECT_ATTRIBUTES         Attributes,
  [out] SERCX2CUSTOMTRANSMIT           *CustomTransmit
);

매개 변수

[in] Device

직렬 컨트롤러를 나타내는 프레임워크 디바이스 개체에 대한 WDFDEVICE 핸들입니다. 직렬 컨트롤러 드라이버는 EvtDriverDeviceAdd 콜백 함수에서 이 개체를 만들었습니다. 자세한 내용은 SerCx2InitializeDevice를 참조하세요.

[in] CustomTransmitConfig

SERCX2_CUSTOM_TRANSMIT_CONFIG 구조체에 대한 포인터입니다. 이 메서드를 호출하기 전에 호출자는 SERCX2_CUSTOM_TRANSMIT_CONFIG_INIT 함수를 호출하여 구조를 초기화해야 합니다. 이 구조에는 직렬 컨트롤러 드라이버에서 구현하는 이벤트 콜백 루틴 집합에 대한 포인터가 포함되어 있습니다. SerCx2는 이러한 함수를 호출하여 사용자 지정 전송 트랜잭션을 수행합니다.

[in] Attributes

새 사용자 지정 전송 개체에 할당할 특성을 설명하는 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 메서드를 호출하기 전에 호출자는 WDF_OBJECT_ATTRIBUTES_INIT 함수를 호출하여 구조를 초기화해야 합니다. 이 매개 변수는 선택 사항이며 직렬 컨트롤러 드라이버가 개체에 특성을 할당할 필요가 없는 경우 WDF_NO_OBJECT_ATTRIBUTES 지정할 수 있습니다. 자세한 내용은 설명 부분을 참조하세요.

[out] CustomTransmit

이 메서드가 새로 만든 사용자 지정 전송 개체에 SERCX2CUSTOMTRANSMIT 핸들을 쓰는 위치에 대한 포인터입니다. SerCx2 및 직렬 컨트롤러 드라이버는 이 개체를 참조하기 위해 후속 호출에서 이 핸들을 사용합니다.

반환 값

이 메서드는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 가능한 오류 반환 값에는 다음 상태 코드가 포함됩니다.

반환 코드 설명
STATUS_INVALID_DEVICE_REQUEST
사용자 지정 전송 개체는 이전 SerCx2CustomTransmitCreate 호출에서 이미 존재합니다. 또는 system-DMA-transmit 개체가 이전 SerCx2SystemDmaTransmit 에서 존재함만들기 호출; 또는 system-DMA-transmit 개체가 이전 SerCx2SystemDmaTransmit 에서 존재함만들기 호출; 또는 SerCx2PioTransmitCreate 가 PIO 전송 개체를 만들기 위해 아직 호출되지 않았습니다.
STATUS_INVALID_PARAMETER
매개 변수 값이 잘못되었습니다.
STATUS_INFO_LENGTH_MISMATCH
구성->크기 값이 sizeof(SERCX2_CUSTOM_TRANSMIT_CONFIG)와 같지 않습니다.
STATUS_INSUFFICIENT_RESOURCES
사용자 지정 전송 개체를 만드는 데 사용할 수 있는 리소스가 부족합니다.

설명

이 메서드는 사용자 지정 전송 개체를 만들기 위해 직렬 컨트롤러 드라이버에 의해 호출됩니다. SerCx2는 이 개체를 사용하여 사용자 지정 전송 트랜잭션을 수행합니다. 이 트랜잭션은 사용자 지정 데이터 전송 메커니즘을 사용하여 직렬 컨트롤러에 전송 데이터를 쓰는 트랜잭션입니다.

직렬 컨트롤러 드라이버는 SerCx2CustomTransmitCreate를 호출하기 전에 SerCx2InitializeDeviceSerCx2PioTransmitCreate 메서드 성공적으로 호출해야 합니다.

SerCx2CustomTransmitCreate를 호출하기 전에 직렬 컨트롤러 드라이버는 SERCX2_CUSTOM_TRANSMIT_CONFIG_INIT 함수를 호출하여 CustomTransmitConfig가 가리키는 SERCX2_CUSTOM_TRANSMIT_CONFIG 구조를 초기화해야 합니다. 이 함수는 구조체의 다음 멤버를 0으로 설정합니다.

  • 맞춤
  • MinimumTransactionLength
  • MaximumTransactionLength
  • MinimumTransferUnit
  • 전용
필요한 경우 직렬 컨트롤러 드라이버는 초기화 함수가 반환된 후 이러한 멤버를 0이 아닌 값으로 설정할 수 있습니다. 그러나 편의를 위해 SerCx2CustomTransmitCreate 는 이러한 멤버가 0인 경우 다음 기본값을 사용합니다.
  • 맞춤이 0이면 SerCx2는 데이터 맞춤 값을 1로 설정합니다. 즉, 쓰기 버퍼는 메모리의 임의 바이트 경계에서 시작할 수 있습니다.
  • MinimumTransactionLength가 0이면 SerCx2는 최소 트랜잭션 길이를 1바이트로 설정합니다.
  • MaximumTransactionLength가 0이면 SerCx2는 최대 트랜잭션 길이를 ((ULONG)-1)로 설정합니다.
  • MinimumTransferUnit이 0이면 SerCx2는 최소 전송 단위를 1 바이트로 설정합니다.
  • Exclusive이 0(FALSE)이면 전용 모드가 비활성화됩니다.
호출 드라이버가 ExclusiveTRUE로 설정하면 MinimumTransferUnit, AlignmentMinimumTransactionLength 멤버는 0이어야 합니다. 자세한 내용은 SERCX2_CUSTOM_TRANSMIT_CONFIG 참조하세요.

옵션으로 직렬 컨트롤러 드라이버는 Attributes 매개 변수를 사용하여 사용자 지정 전송 개체에 대한 컨텍스트를 만들고 삭제할 개체를 준비하기 위해 호출되는 EvtCleanupCallbackEvtDestroyCallback 함수에 대한 포인터를 제공할 수 있습니다. 자세한 내용은 WDF_OBJECT_ATTRIBUTES 참조하세요.

Attributes 매개 변수가 WDF_OBJECT_ATTRIBUTES 구조를 가리키는 경우 호출자는 WDF_OBJECT_ATTRIBUTES_INIT 초기화 함수가 이 구조체의 ParentObject, ExecutionLevelSynchronizationScope 멤버에 쓰는 값을 덮어쓰지 않아야 합니다.

사용자 지정 전송 개체를 만드는 방법에 대한 자세한 내용은 SERCX2CUSTOMTRANSMIT. 사용자 지정 전송 트랜잭션에 대한 자세한 내용은 SerCx2 Custom-Transmit Transactions를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8.1 사용하여 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 sercx.h
IRQL PASSIVE_LEVEL

추가 정보

EvtCleanupCallback

EvtDestroyCallback

EvtDriverDeviceAdd

SERCX2CUSTOMTRANSMIT

SERCX2_CUSTOM_TRANSMIT_CONFIG

SERCX2_CUSTOM_TRANSMIT_CONFIG_INIT

SerCx2InitializeDevice

SerCx2PioTransmitCreate

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT