다음을 통해 공유


SOCK_NOTIFY_REGISTRATION 구조체(winsock2.h)

ProcessSocketNotifications 함수에 제공된 정보를 나타냅니다.

자세한 정보 및 코드 예제는 Winsock 소켓 상태 알림을 참조하세요.

구문

typedef struct SOCK_NOTIFY_REGISTRATION {
  SOCKET socket;
  PVOID  completionKey;
  UINT16 eventFilter;
  UINT8  operation;
  UINT8  triggerFlags;
  DWORD  registrationResult;
} SOCK_NOTIFY_REGISTRATION;

멤버

socket

형식: SOCKET

WSASocket, 소켓, WSAAccept, accept 또는 WSADuplicateSocket 함수에서 연 Winsock 소켓에 대한 핸들입니다. Microsoft Winsock 공급자 소켓만 지원됩니다.

completionKey

형식: PVOID

소켓을 대신하여 알림을 보낼 때 PostQueuedCompletionStatus 함수의 dwCompletionKey 매개 변수에 사용할 값입니다. 이 매개 변수는 등록을 만들 때 사용됩니다. 완료 키를 변경하려면 등록을 제거하고 다시 등록합니다.

eventFilter

형식: UINT16

요청되는 알림을 나타내는 플래그 집합입니다. 다음 값 중 하나 이상이어야 합니다(에 WinSock2.h정의됨).

SOCK_NOTIFY_REGISTER_EVENT_NONE. 알림을 발행해서는 안 됩니다. SOCK_NOTIFY_REGISTER_EVENT_IN. 차단 없이 데이터를 읽을 수 있는 경우 알림을 발행해야 합니다. SOCK_NOTIFY_REGISTER_EVENT_OUT. 차단 없이 데이터를 쓸 수 있는 경우 알림을 발행해야 합니다. SOCK_NOTIFY_REGISTER_EVENT_HANGUP. 스트림 지향 연결의 연결이 끊어지거나 중단된 경우 알림이 실행되어야 합니다. SOCK_NOTIFY_REGISTER_EVENTS_ALL. 값 (SOCK_NOTIFY_REGISTER_EVENT_IN | SOCK_NOTIFY_REGISTER_EVENT_OUT | SOCK_NOTIFY_REGISTER_EVENT_HANGUP)이 입니다.

operation

형식: UINT8

등록에서 수행할 작업을 나타냅니다. 한 번에 하나 이상의 작업을 수행할 수 있습니다. 이러한 값은 에 정의되어 있습니다 WinSock2.h.

SOCK_NOTIFY_OP_NONE. 등록 작업이 수행되지 않아야 합니다. 애플리케이션에서 ProcessSocketNotifications 를 호출하고 알림 수신에만 관심이 있는 경우 이 기능을 사용합니다. SOCK_NOTIFY_OP_ENABLE. 등록을 사용하도록 설정합니다. SOCK_NOTIFY_EVENT_DISABLE 알림이 수신될 때까지 알림을 다시 사용하도록 설정하면 안 됩니다. SOCK_NOTIFY_OP_DISABLE. 등록을 사용하지 않도록 설정하지만 기본 데이터 구조를 삭제하지는 않습니다. 이렇게 하면 등록이 제거되는 것이 아니라 새 알림의 큐를 표시하지 않습니다. 이미 큐에 대기된 알림은 SOCK_NOTIFY_EVENT_DISABLE 이벤트가 수신될 때까지 계속 배달될 수 있습니다. SOCK_NOTIFY_OP_REMOVE. 이전에 등록된 알림을 제거합니다. 활성화된 알림과 사용하지 않도록 설정된 알림은 모두 제거될 수 있습니다. SOCK_NOTIFY_EVENT_REMOVE 알림이 발급되며, 다시 등록되지 않는 한 해당 완료 키에 대해 나중에 더 이상 알림이 발급되지 않습니다.

triggerFlags

형식: UINT8

트리거 동작을 나타내는 플래그 집합입니다(에 WinSock2.h정의됨).

SOCK_NOTIFY_TRIGGER_ONESHOT. 다음 알림이 전달되면 등록이 비활성화됩니다(제거되지 않음). SOCK_NOTIFY_TRIGGER_PERSISTENT. 등록은 명시적으로 사용하지 않도록 설정되거나 제거될 때까지 활성 상태로 유지됩니다. SOCK_NOTIFY_TRIGGER_LEVEL. 등록은 수준 트리거 알림에 대한 것입니다. 에지 트리거와 호환되지 않습니다. 에지 또는 수준 트리거 중 하나를 제공해야 합니다. SOCK_NOTIFY_TRIGGER_EDGE. 등록은 에지 트리거 알림에 대한 것입니다. 수준 트리거와 호환되지 않습니다. 에지 또는 수준 트리거 중 하나를 제공해야 합니다.

알림은 등록이 활성화된 경우에만 제공됩니다. 등록을 사용하지 않도록 설정하는 동안 알림이 큐에 대기되지 않습니다. 알림이 지정된 소켓에 대해 큐에 대기되면 단일 알림으로 병합됩니다. 따라서 소켓에 대한 단일 이벤트 마스크로 여러 이벤트를 설명할 수 있습니다.

등록을 사용하도록 설정하면 원하는 조건이 유지될 때마다 수준 트리거 알림이 제공됩니다.

등록을 사용하도록 설정하면 조건이 보유하지 않음에서 보유 중으로 변경될 때마다 에지 트리거 알림이 제공됩니다. 알림을 큐에 대기하려면 등록을 사용하도록 설정하는 동안 조건이 변경되어야 합니다. 따라서 등록한 후 알림을 받으려면 소켓의 수신 버퍼를 완전히 드레이닝해야 합니다.

registrationResult

형식: DWORD

ProcessSocketNotifications를 성공적으로 호출한 후 registrationResult에는 등록의 성공 또는 실패를 나타내는 코드가 포함됩니다. ERROR_SUCCESS 값은 등록에 성공했음을 나타냅니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 빌드 20348
지원되는 최소 서버 Windows 10 빌드 20348
머리글 winsock2.h

추가 정보