HvCallPostMessage 하이퍼콜은 연결된 대상 포트가 있는 지정된 연결에 메시지를 게시(즉, 비동기적으로 전송)하려고 합니다. 메시지가 성공적으로 게시되면 포트와 연결된 파티션 내의 가상 프로세서에 배달하기 위해 큐에 대기합니다.
인터페이스
HV_STATUS
HvCallPostMessage(
_In_ HV_CONNECTION_ID ConnectionId,
_In_ HV_MESSAGE_TYPE MessageType,
_In_ UINT32 PayloadSize,
_In_reads_bytes_(PayloadSize) PCVOID Message
);
호출 코드
0x005C (단순)
입력 매개 변수
| 이름 | Offset | 크기 | 제공된 정보 |
|---|---|---|---|
ConnectionId |
0 | 4 | 연결의 ID를 지정합니다. |
| RsvdZ | 4 | 4 | |
MessageType |
8 | 4 | 메시지 헤더 내에 나타날 메시지 유형을 지정합니다. 호출자는 0을 제외하고 가장 중요한 비트가 지워지는 32비트 메시지 유형을 지정할 수 있습니다. |
PayloadSize |
12 | 4 | 메시지에 포함된 바이트 수를 지정합니다. |
Message |
16 | 240 | 메시지의 페이로드를 총 240바이트까지 해독합니다. 첫 번째 n바이트만 실제로 대상 파티션으로 전송됩니다. 여기서 n은 PayloadSize 매개 변수에 제공됩니다. |
반환 값
| 상태 코드 | 오류 조건 |
|---|---|
HV_STATUS_ACCESS_DENIED |
호출자의 파티션에는 PostMessages 권한이 없습니다. |
HV_STATUS_INVALID_CONNECTION_ID |
지정한 연결 ID가 잘못되었습니다. |
HV_STATUS_INVALID_PORT_ID |
지정된 연결과 연결된 포트가 삭제되었습니다. |
| 지정된 연결과 연결된 포트는 "활성" 상태가 아닌 파티션에 속합니다. | |
| 지정된 연결과 연결된 포트가 "메시지" 형식 포트가 아닙니다. | |
HV_STATUS_INVALID_PARAMETER |
지정된 메시지 유형의 가장 중요한 비트가 설정됩니다. |
| MessageType 매개 변수는 0 값을 지정합니다. | |
| 지정된 페이로드 크기가 240바이트를 초과합니다. | |
HV_STATUS_INSUFFICIENT_BUFFERS |
포트에 사용 가능한 게스트 메시지 버퍼가 없습니다. |
HV_STATUS_INVALID_VP_INDEX |
대상 VP가 더 이상 존재하지 않거나 메시지를 게시할 수 있는 사용 가능한 VP가 없습니다. |
HV_STATUS_INVALID_SYNIC_STATE |
대상 VP의 SynIC가 비활성화되어 게시된 메시지를 수락할 수 없습니다. |
| 대상 VP의 SIM 페이지를 사용할 수 없습니다. |