NOTIFICATION_INFO_W2K 구조체(1394.h)
버스 드라이버는 컴퓨터의 IEEE 1394 주소 공간에서 드라이버 할당 주소 범위에 대한 드라이버 제공 알림 루틴에 정보를 전달하기 위해 NOTIFICATION_INFO 전달합니다. 버스 드라이버는 해당 주소에 대한 비동기 I/O 요청 패킷을 받으면 알림 루틴을 호출합니다.
구문
typedef struct _NOTIFICATION_INFO_W2K {
PMDL Mdl;
ULONG ulOffset;
ULONG nLength;
ULONG fulNotificationOptions;
PVOID Context;
PADDRESS_FIFO Fifo;
PVOID RequestPacket;
PMDL ResponseMdl;
PVOID *ResponsePacket;
PULONG ResponseLength;
PKEVENT *ResponseEvent;
} NOTIFICATION_INFO_W2K, *PNOTIFICATION_INFO_W2K;
구성원
Mdl
NULL이 아닌 경우 Mdl은 할당된 주소 범위에 대한 MDL(메모리 설명자 목록)을 지정합니다.
ulOffset
요청 패킷을 받은 주소에 해당하는 MDL의 바이트 오프셋을 지정합니다. Mdl이 NULL이 아닌 경우에만 사용됩니다.
nLength
요청 패킷의 영향을 받는 바이트 수를 지정합니다. Mdl이 NULL이 아닌 경우에만 사용됩니다.
fulNotificationOptions
알림 루틴을 호출하도록 버스 드라이버를 트리거한 이벤트 유형을 지정합니다. 버스 드라이버가 반환할 수 있는 이벤트는 다음과 같습니다.
- NOTIFY_FLAGS_AFTER_READ
- NOTIFY_FLAGS_AFTER_WRITE
- NOTIFY_FLAGS_AFTER_LOCK
Context
할당된 이 주소 범위에 대한 특정 컨텍스트 데이터에 대한 포인터입니다. 드라이버는 원래 REQUEST_ALLOCATE_ADDRESS_RANGE 요청에 대해 IRB의 u.AllocateAddressRange.Context 멤버를 통해 이 데이터를 제공합니다.
Fifo
방금 완료된 FIFO 요소를 포함하는 ADDRESS_FIFO 구조체에 대한 포인터입니다. 드라이버가 원래 REQUEST_ALLOCATE_ADDRESS_RANGE 요청에 ADDRESS_FIFO 목록을 제출한 경우에만 사용됩니다.
RequestPacket
NULL이 아닌 경우 RequestPacket은 원래 요청 패킷을 가리킵니다. 버스 드라이버는 디바이스 드라이버가 원래 REQUEST_ALLOCATE_ADDRESS_RANGE 요청에 MDL 또는 ADDRESS_FIFO 목록을 제공하지 않은 경우에만 이를 제공합니다.
ResponseMdl
NULL이 아닌 경우 ResponseMdl은 초기화되지 않은 MDL을 가리킵니다. 드라이버는 페이지 처리할 수 없는 버퍼에 대해 이 MDL을 초기화하고 응답 패킷으로 버퍼를 채워야 합니다. 버스 드라이버는 디바이스 드라이버가 원래 REQUEST_ALLOCATE_ADDRESS_RANGE 요청에 MDL 또는 ADDRESS_FIFO 목록을 제공하지 않은 경우에만 이를 제공합니다.
ResponsePacket
NULL이 아닌 경우 ResponsePacket은 응답 패킷에 반환될 데이터(쿼드렛 또는 블록)에 대한 포인터로 드라이버가 채우는 메모리 위치를 가리킵니다. 버스 드라이버는 디바이스 드라이버가 원래 REQUEST_ALLOCATE_ADDRESS_RANGE 요청에 MDL 또는 ADDRESS_FIFO 목록을 제공하지 않은 경우에만 이를 제공합니다.
ResponseLength
NULL이 아닌 경우 ResponseLength는 드라이버가 응답 패킷의 길이로 채우는 메모리 위치를 가리킵니다. 버스 드라이버는 디바이스 드라이버가 원래 REQUEST_ALLOCATE_ADDRESS_RANGE 요청에 MDL 또는 ADDRESS_FIFO 목록을 제공하지 않은 경우에만 이를 제공합니다.
ResponseEvent
NULL이 아닌 경우 ResponseEvent는 버스 드라이버가 응답 패킷 전송을 완료했음을 알리는 데 사용해야 하는 커널 이벤트로 드라이버가 채우는 메모리 위치를 가리킵니다. 버스 드라이버는 디바이스 드라이버가 원래 REQUEST_ALLOCATE_ADDRESS_RANGE 요청에 MDL 또는 ADDRESS_FIFO 목록을 제공하지 않은 경우에만 이를 제공합니다.
설명
드라이버가 컴퓨터의 IEEE 1394 주소 공간에 주소 범위를 할당하는 경우 버스 드라이버가 할당된 주소로 전송된 일부 또는 모든 요청 패킷에 대해 알려야 할 수 있습니다. 원래 할당 요청의 일부로 드라이버는 버스 드라이버가 처리를 위해 각 패킷을 전달하도록 요구하거나 버스 드라이버가 패킷을 처리하고 완료되면 디바이스 드라이버에 알려야 할 수 있습니다. 자세한 내용은 REQUEST_ALLOCATE_ADDRESS_RANGE 참조하세요.
디바이스 드라이버가 백업 저장소를 제공하지 않으면 버스 드라이버는 처리를 위해 각 패킷을 디바이스 드라이버에 전달합니다. 버스 드라이버는 Mdl용 NULL을 전달하고 RequestPacket에서 패킷을 전달합니다. 또한 버스 드라이버는 디바이스 드라이버가 응답 패킷( ResponsePacket), 버퍼 길이( ResponseLength) 및 버퍼의 MDL( ResponseMdl)에 대한 버퍼로 채워야 하는 메모리 위치에 대한 포인터를 전달합니다. 또한 버스 드라이버는 드라이버가 ResponseEvent에서 커널 이벤트 개체를 전달하는 데 사용할 수 있는 메모리 위치를 제공합니다. 디바이스 드라이버가 이벤트 개체를 제공하는 경우 버스 드라이버는 응답 패킷 전송을 마쳤을 때 이를 사용하여 드라이버에 신호를 보냅니다.
드라이버가 원래 할당 주소 범위 요청에 백업 저장소를 제공하는 경우 버스 드라이버는 드라이버의 알림 루틴을 사용하여 백업 저장소에서 데이터 읽기 또는 쓰기를 완료했음을 알릴 수 있습니다. Mdl 멤버에 있는 백업 저장소의 MDL과 ulOffset 및 nLength의 연결된 버퍼 내의 시작 위치 및 크기를 전달합니다. 또한 버스 드라이버는 fulNotificationOptions에서 알림을 발생시킨 이벤트 유형을 전달합니다.
디바이스 드라이버가 ADDRESS_FIFO 연결된 목록을 백업 저장소로 사용하는 경우 버스 드라이버는 Fifo에서 튀어나온 목록 요소를 반환합니다.
요구 사항
| 헤더 | 1394.h(1394.h 포함) |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기