DMDLL_OpenDeviceForInterfaceDeviceStack

디바이스 스택 중 TargetIndex 번째의 장치를 대상으로 열기를 수행합니다. DMDLL_OpenDeviceForInterfaceDeviceStack()함수를 사용해서 USB장치핸들을 얻는 경우,다음 두가지의 경우로 사용법이 나뉜다.

  1. Master Handle을 구하는 경우, DMDLL_OpenDeviceForInterfaceDeviceStack()함수의 PipeNumber 값을 -1 을 사용해야 한다. Master Handle은 Bulk Transfer, Interrupt Transfer, Isochronous Transfer에 사용될 수 없다. Master Handle은 Default Pipe와 관련된 전송요청과 Pipe Information을 구하는 용도로만 사용될 수 있다.

  2. Bundle Pipe Handle을 구하는 경우, DMDLL_OpenDeviceForInterfaceDeviceStack()함수의 PipeNumber 값을 온전하게(0, 1, .. ) 사용해야 한다. Bundle Pipe Handle은 Bulk Transfer, Interrupt Transfer, Isochronous Transfer에만 사용될 수 있다.

개발자는 Master Handle 을 먼저 구한뒤, DMDLL_USBAcquirePipeInformations()함수를 통해서 필요한 파이프정보를 획득한다. 그 다음, 각각의 파이프정보에 대응되는 Bundle Pipe Handle을 다시 구하여 필요한 Bulk, Interrupt Isochronous Transfer 전송을 요청하게 된다.

사용이 끝난 모든 핸들은 DMDLL_CloseDevice()함수에 의해서 반납되어져야 한다.


Description

int DMDLL_OpenDeviceForInterfaceDeviceStack(
    IN int        TargetIndex, 
    IN DMBUS      BusInterface,
    IN int        PipeNumber, 
    OUT DMHANDLE* pOpenedHandle )

Parameters

TargetIndex
    검색된 디바이스스택중 사용할 인덱스값
BusInterface
    사용하려는 대상의 버스 인터페이스
PipeNumber
    사용하려는 대상의 장치가 가지고 있는 파이프 인덱스 (0, 1, ...)
    -1 은 Master 핸들을 얻을때 사용한다
pOpenedHandle
    열기 작업이 성공하면 리턴되는 핸들을 보관하는 버퍼의 포인터

Return Values

return  int
    작업이 성공할 경우  DMSTAT_SUCCESS 리턴

Changelog


Examples

int        nRet = 0;
int        TargetIndex = 0;
DMHANDLE   DmHandle = NULL;

nRet = DMDLL_OpenDeviceForInterfaceDeviceStack(TargetIndex, DMBUS_USB, -1, &DmHandle );
switch(nRet)
{
    case DMSTAT_SUCCESS:
    {
         printf(“드라이버를 성공적으로 열었습니다.”);
         break;
    }

    case DMSTAT_ERROR:
    {
         printf(“알 수 없는 에러가 발생했습니다.”);
         break;
    }

    case DMSTAT_INVALIDPARAMETER:
    {
         printf(“파라미터가 잘못 되었습니다.”);
         break;
    }

    case DMSTAT_NORESOURCE:
    {
         printf(“메모리가 부족합니다.”);
         break;
    }

    case DMSTAT_NODEVICE:
    {
         printf(“해당하는 USB 장치가 발견되지 않았습니다.”);
         break;
    }

    case DMSTAT_NOSUPPORTWOW64:
    {
         printf(“DM-II SDK 에서는 WOW64 환경을 지원하지 않습니다.”);
         break;
    }
}

results matching ""

    No results matching ""