다음을 통해 공유


드라이버 스택 시작

시스템에서 네트워킹 디바이스를 검색한 후 시스템은 디바이스에 대한 NDIS 드라이버 스택을 시작합니다. 디바이스는 가상 디바이스 또는 물리적 디바이스일 수 있습니다. 두 경우 모두 드라이버 스택 시작 작업은 다음과 같이 진행됩니다.

  1. 드라이버가 아직 로드되지 않은 경우 시스템이 드라이버를 로드하고 초기화합니다.

    특정 순서로 드라이버를 로드하지 않습니다.

  2. 시스템은 각 드라이버의 DriverEntry 함수를 호출합니다.

    DriverEntry가 반환된 후:

    • 디바이스의 미니포트 어댑터가 중지됨 상태입니다.
    • 필터 모듈은 분리된 상태입니다.
    • 프로토콜 바인딩이 언바운드 상태입니다.
  3. 시스템은 미니포트 어댑터를 시작하도록 NDIS에 요청합니다.

    미니포트 어댑터를 초기화하기 위해 NDIS는 미니포트 드라이버의 MiniportInitializeEx 함수를 호출합니다. MiniportInitializeEx가 성공하면 미니포트 어댑터가 일시 중지됨 상태로 들어갑니다.

  4. NDIS는 미니포트 드라이버에 가장 가까운 모듈부터 시작하여 드라이버 스택의 맨 위로 진행하는 필터 모듈을 연결합니다.

    드라이버에 필터 모듈을 드라이버 스택에 연결하도록 요청하기 위해 NDIS는 필터 드라이버의 FilterAttach 함수를 호출합니다. 각 연결 작업에 성공하면 필터 모듈이 일시 중지됨 상태로 들어갑니다.

  5. 모든 기본 드라이버가 일시 중지됨 상태에 있으면 NDIS는 프로토콜 드라이버의 ProtocolBindAdapterEx 함수를 호출합니다.

    그런 다음 프로토콜 드라이버 바인딩이 여는 상태로 들어갑니다. 프로토콜 드라이버는 NdisOpenAdapterEx 함수를 호출하여 미니포트 어댑터를 사용하여 바인딩을 엽니다.

  6. NDIS는 바인딩에 필요한 리소스를 할당하고 프로토콜 드라이버의 ProtocolOpenAdapterCompleteEx 함수를 호출합니다.

    바인딩이 일시 중지됨 상태로 들어갑니다.

  7. 바인딩 작업을 완료하기 위해 프로토콜 드라이버는 NdisCompleteBindAdapterEx 함수를 호출합니다.

  8. NDIS는 드라이버 스택을 다시 시작합니다. 드라이버 스택을 다시 시작하는 방법에 대한 자세한 내용은 드라이버 스택 다시 시작을 참조하세요.