다음을 통해 공유


OLE DB를 사용하여 검색

ADO(ActiveX Data Objects)를 사용하는 Automation 클라이언트와 모든 비 자동화 클라이언트의 경우 ADSI는 OLE DB 쿼리 인터페이스의 하위 집합을 지원하는 OLE DB 공급자를 제공합니다. 이미 쿼리에 OLE DB 인터페이스를 사용하는 클라이언트 코드는 동일한 인터페이스를 사용하여 디렉터리 서비스를 쿼리할 수 있습니다.

OLE DB 구현에서 디렉터리 서비스는 데이터 원본 개체로 노출됩니다. 데이터 원본 개체는 세션 개체의 팩터리이며 디렉터리에 연결하기 위해 IDBInitialize 지원합니다. IDBCreateSession 세션 개체를 만들려면 IDBProperties를 기본 네임스페이스에 인증 데이터를 제공하고 쿼리 명령 및 IPersist 제공하여 데이터 원본 개체를 만드는 데 필요한 데이터를 기본 디렉터리 서비스에 저장할 수 있도록.

OLE DB 사용하여 Active Directory 쿼리를 수행하려면

  1. OLE DB 공급자에서 IDBInitialize 인터페이스를 검색합니다. Active Directory의 경우 클래스 식별자 CLSID_ADsDSOObject사용합니다.
  2. 사용자 이름 및 암호를 지정하는 연결 데이터의 DBPROP 배열을 빌드합니다.
  3. IDBProperties 인터페이스에 대해 1단계에서 검색된 IDBInitialize 인터페이스를 쿼리합니다.
  4. 2단계에서 만든 DBPROP 배열을 전달하는 IDBProperties::SetProperties 메서드를 호출합니다.
  5. IDBInitialize::Initialize 메서드를 호출하여 OLE DB 공급자에 대한 연결을 설정합니다. 이 경우 Active Directory 공급자입니다.
  6. IDBCreateSession 인터페이스에 대한 IDBInitialize 인터페이스를 쿼리합니다.
  7. IDBCreateSession::CreateSession 메서드를 호출하여 IDBCreateCommand형식의 새 인터페이스를 요청합니다.
  8. IDBCreateCommand::CreateCommand 메서드를 호출하여 ICommandText 인터페이스를 만듭니다.
  9. ICommandText::SetCommandText 메서드를 호출합니다. 기본 언어와 해당 방언의 실제 쿼리 명령 텍스트를 전달합니다. DBGUID_LDAPDialect 또는 DBGUID_DBSQL 방언으로 사용할 수 있습니다.
  10. 호출 ICommand::Execute; 결과 집합의 인터페이스인 IRowset 인터페이스가 반환됩니다.
  11. IColumnsInfo 인터페이스에 대한 IRowset 인터페이스를 쿼리합니다.
  12. IColumnsInfo::GetColumnInfo 메서드를 호출하여 결과 집합에 대한 열 데이터를 검색합니다.
  13. DBBINDING 구조의 배열을 채우고 OLE DB 공급자에게 열별로 데이터 형식을 애플리케이션 코드에 노출하는 방법을 설명합니다. 이 단계를 통해 특정 열에 포함된 TYPE을 지정할 수 있습니다. 또한 반환된 행을 기준으로 열의 오프셋이 열 단위로 설정됩니다.
  14. IAccessor 인터페이스에 대한 IRowset 인터페이스를 쿼리합니다.
  15. 접근자 핸들 배열을 반환하는 IAccessor::CreateAccessor 메서드를 호출합니다. 그런 다음 이 배열을 사용하여 결과 집합의 행에 액세스합니다.
  16. IRowset::GetNextRows를 호출하여 행 핸들을 전달하고 가져올 행 수를.
  17. 16단계에서 반환된 집합 내의 행 핸들을 전달하여 IRowset::GetData를 호출합니다. 행에 대한 원시 포인터가 반환됩니다.

검색 필터 구문에 대한 자세한 내용은 검색 필터 구문참조하세요.

반환된 처리되지 않은 행 데이터를 읽으려면 13단계에서 만든 DBBINDING 구조를 사용하여 17단계에서 반환된 처리되지 않은 데이터 포인터의 열 오프셋을 계산합니다. 열의 검색 결과를 확인하려면 해당 열의 상태 부분을 읽으십시오.

자세한 내용 및 ADSI OLE DB 공급자를 사용하여 Active Directory를 검색하는 방법을 보여 주는 코드 예제는 OLE DB를 사용하여 Active Directory검색하기 위한 예제 코드를 참조하세요.