다음을 통해 공유


PPARALLEL_TRY_SELECT_ROUTINE 콜백 함수(parallel.h)

PPARALLEL_TRY_SELECT_ROUTINE 형식의 콜백 루틴은 IEEE 1284.3 데이지 체인 디바이스 또는 병렬 포트에 연결된 IEEE 1284 체인 끝 디바이스를 선택합니다. 병렬 포트에 대한 시스템 제공 함수 드라이버는 이 루틴을 제공합니다.

구문

PPARALLEL_TRY_SELECT_ROUTINE PparallelTrySelectRoutine;

NTSTATUS PparallelTrySelectRoutine(
  [in] PVOID TrySelectContext,
  [in] PVOID TrySelectCommand
)
{...}

매개 변수

[in] TrySelectContext

병렬 포트의 FDO(기능 디바이스 개체)의 디바이스 확장에 대한 포인터입니다.

[in] TrySelectCommand

PARALLEL_1284_COMMAND 구조체에 대한 포인터입니다. 호출자는 다음 멤버를 지정합니다.

ID

1284.3 디바이스 ID를 지정합니다.

CommandFlags

다음 플래그 중 0개 이상의 비트 OR을 지정합니다.

Description
PAR_END_OF_CHAIN_DEVICE 체인 끝 디바이스를 지정합니다.
PAR_HAVE_PORT_KEEP_PORT 호출자에게 할당된 포트가 있고 포트를 할당된 상태로 유지하도록 지정합니다.

반환 값

반환 코드 설명
STATUS_SUCCESS
디바이스가 선택되었습니다.
STATUS_INVALID_PARAMETER
디바이스 ID가 잘못되었습니다.
STATUS_PENDING
호출자가 PAR_HAVE_PORT_KEEP_PORT 지정하지 않았으며 병렬 포트가 이미 할당되었습니다.
STATUS_UNSUCCESSFUL
호출자가 병렬 포트를 할당했지만 병렬 포트에 대해 시스템에서 제공하는 함수 드라이버가 지정된 병렬 디바이스를 선택할 수 없습니다.

설명

시스템에서 제공하는 PPARALLEL_TRY_SELECT_ROUTINE 콜백에 대한 포인터를 가져오기 위해 커널 모드 드라이버는 PARALLEL_PNP_INFORMATION 구조를 반환하는 IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO 요청을 사용합니다. PARALLEL_PNP_INFORMATION 구조체의 TrySelectDevice 멤버는 이 콜백에 대한 포인터입니다.

커널 모드 드라이버는 IOCTL_INTERNAL_SELECT_DEVICE 요청 또는 PPARALLEL_TRY_SELECT_ROUTINE 콜백을 사용하여 병렬 포트에서 병렬 디바이스를 선택할 수 있습니다. 병렬 포트 함수 드라이버는 병렬 포트가 이미 할당된 경우 선택 요청을 큐에 대기합니다. 그러나 PPARALLEL_TRY_SELECT_ROUTINE 콜백은 선택 요청을 큐에 대기시키지 않으며 포트를 할당할 수 없는 경우 루틴이 즉시 반환됩니다.

참고 클라이언트가 PPARALLEL_TRY_SELECT_ROUTINE 콜백만 사용하여 병렬 디바이스를 선택하려고 시도하고 다른 클라이언트가 병렬 포트에 대해 경합하는 경우 병렬 포트에 대한 시스템 제공 함수 드라이버는 클라이언트에 포트를 할당하지 않을 수 있습니다. 성공을 보장하기 위해 클라이언트는 IOCTL_INTERNAL_SELECT_DEVICE 요청을 사용해야 합니다. (병렬 포트 함수 드라이버 큐 및 이후에는 포트 할당 요청 및 디바이스 선택 요청이 수신되는 순서대로 요청을 처리합니다.)
 
자세한 내용은 ParallelPort에 연결된 IEEE 1284 디바이스 선택 및 선택 취소를 참조하세요.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 parallel.h(Parallel.h 포함)
IRQL <=DISPATCH_LEVEL

추가 정보

PARALLEL_1284_COMMAND

IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO

IOCTL_INTERNAL_SELECT_DEVICE

IOCTL_INTERNAL_DESELECT_DEVICE

PARALLEL_PNP_INFORMATION

PPARALLEL_DESELECT_ROUTINE