📄 snd_next.m
字号:
msg_size_delta = (2 * dataCnt + 3) & ~3;
msg_size += msg_size_delta;
InP->Head.msg_simple = FALSE;
InP->Head.msg_size = msg_size;
InP->Head.msg_type = MSG_TYPE_NORMAL | MSG_TYPE_RPC;
InP->Head.msg_request_port = kern_serv_port;
InP->Head.msg_reply_port = mig_get_reply_port();
InP->Head.msg_id = 1016;
msg_result = msg_rpc(&InP->Head, MSG_OPTION_NONE, sizeof(Reply), 0, 0);
if (msg_result != RPC_SUCCESS) {
if (msg_result == RCV_INVALID_PORT)
mig_dealloc_reply_port();
return msg_result;
}
#if TypeCheck
msg_size = OutP->Head.msg_size;
msg_simple = OutP->Head.msg_simple;
#endif TypeCheck
if (OutP->Head.msg_id != 1116)
return MIG_REPLY_MISMATCH;
#if TypeCheck
if (((msg_size != 40) || (msg_simple != TRUE)) &&
((msg_size != sizeof(death_pill_t)) ||
(msg_simple != TRUE) ||
(OutP->RetCode == KERN_SUCCESS)))
return MIG_TYPE_ERROR;
#endif TypeCheck
#if TypeCheck
#if UseStaticMsgType
if (* (int *) &OutP->RetCodeType != * (int *) &RetCodeCheck)
#else UseStaticMsgType
if ((OutP->RetCodeType.msg_type_inline != TRUE) ||
(OutP->RetCodeType.msg_type_longform != FALSE) ||
(OutP->RetCodeType.msg_type_name != MSG_TYPE_INTEGER_32) ||
(OutP->RetCodeType.msg_type_number != 1) ||
(OutP->RetCodeType.msg_type_size != 32))
#endif UseStaticMsgType
return MIG_TYPE_ERROR;
#endif TypeCheck
if (OutP->RetCode != KERN_SUCCESS)
return OutP->RetCode;
#if TypeCheck
#if UseStaticMsgType
if (* (int *) &OutP->actual_countType != * (int *) &actual_countCheck)
#else UseStaticMsgType
if ((OutP->actual_countType.msg_type_inline != TRUE) ||
(OutP->actual_countType.msg_type_longform != FALSE) ||
(OutP->actual_countType.msg_type_name != MSG_TYPE_INTEGER_32) ||
(OutP->actual_countType.msg_type_number != 1) ||
(OutP->actual_countType.msg_type_size != 32))
#endif UseStaticMsgType
return MIG_TYPE_ERROR;
#endif TypeCheck
*actual_count /* actual_count */ = /* *actual_count */ OutP->actual_count;
return OutP->RetCode;
}
/* Routine SetVolume */
mig_external kern_return_t ntsoundSetVolume (
port_t kern_serv_port,
port_t owner_port,
int value)
{
typedef struct {
msg_header_t Head;
msg_type_t owner_portType;
port_t owner_port;
msg_type_t valueType;
int value;
} Request;
typedef struct {
msg_header_t Head;
msg_type_t RetCodeType;
kern_return_t RetCode;
} Reply;
union {
Request In;
Reply Out;
} Mess;
register Request *InP = &Mess.In;
register Reply *OutP = &Mess.Out;
msg_return_t msg_result;
#if TypeCheck
boolean_t msg_simple;
#endif TypeCheck
unsigned int msg_size = 40;
#if UseStaticMsgType
static const msg_type_t owner_portType = {
/* msg_type_name = */ MSG_TYPE_PORT,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0,
};
#endif UseStaticMsgType
#if UseStaticMsgType
static const msg_type_t valueType = {
/* msg_type_name = */ MSG_TYPE_INTEGER_32,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0,
};
#endif UseStaticMsgType
#if UseStaticMsgType
static const msg_type_t RetCodeCheck = {
/* msg_type_name = */ MSG_TYPE_INTEGER_32,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0
};
#endif UseStaticMsgType
#if UseStaticMsgType
InP->owner_portType = owner_portType;
#else UseStaticMsgType
InP->owner_portType.msg_type_name = MSG_TYPE_PORT;
InP->owner_portType.msg_type_size = 32;
InP->owner_portType.msg_type_number = 1;
InP->owner_portType.msg_type_inline = TRUE;
InP->owner_portType.msg_type_longform = FALSE;
InP->owner_portType.msg_type_deallocate = FALSE;
#endif UseStaticMsgType
InP->owner_port /* owner_port */ = /* owner_port */ owner_port;
#if UseStaticMsgType
InP->valueType = valueType;
#else UseStaticMsgType
InP->valueType.msg_type_name = MSG_TYPE_INTEGER_32;
InP->valueType.msg_type_size = 32;
InP->valueType.msg_type_number = 1;
InP->valueType.msg_type_inline = TRUE;
InP->valueType.msg_type_longform = FALSE;
InP->valueType.msg_type_deallocate = FALSE;
#endif UseStaticMsgType
InP->value /* value */ = /* value */ value;
InP->Head.msg_simple = FALSE;
InP->Head.msg_size = msg_size;
InP->Head.msg_type = MSG_TYPE_NORMAL | MSG_TYPE_RPC;
InP->Head.msg_request_port = kern_serv_port;
InP->Head.msg_reply_port = mig_get_reply_port();
InP->Head.msg_id = 1017;
msg_result = msg_rpc(&InP->Head, MSG_OPTION_NONE, sizeof(Reply), 0, 0);
if (msg_result != RPC_SUCCESS) {
if (msg_result == RCV_INVALID_PORT)
mig_dealloc_reply_port();
return msg_result;
}
#if TypeCheck
msg_size = OutP->Head.msg_size;
msg_simple = OutP->Head.msg_simple;
#endif TypeCheck
if (OutP->Head.msg_id != 1117)
return MIG_REPLY_MISMATCH;
#if TypeCheck
if (((msg_size != 32) || (msg_simple != TRUE)) &&
((msg_size != sizeof(death_pill_t)) ||
(msg_simple != TRUE) ||
(OutP->RetCode == KERN_SUCCESS)))
return MIG_TYPE_ERROR;
#endif TypeCheck
#if TypeCheck
#if UseStaticMsgType
if (* (int *) &OutP->RetCodeType != * (int *) &RetCodeCheck)
#else UseStaticMsgType
if ((OutP->RetCodeType.msg_type_inline != TRUE) ||
(OutP->RetCodeType.msg_type_longform != FALSE) ||
(OutP->RetCodeType.msg_type_name != MSG_TYPE_INTEGER_32) ||
(OutP->RetCodeType.msg_type_number != 1) ||
(OutP->RetCodeType.msg_type_size != 32))
#endif UseStaticMsgType
return MIG_TYPE_ERROR;
#endif TypeCheck
if (OutP->RetCode != KERN_SUCCESS)
return OutP->RetCode;
return OutP->RetCode;
}
/* Routine WireRange */
mig_external kern_return_t ntsoundWireRange (
port_t device_port,
port_t token,
port_t task,
vm_offset_t addr,
vm_size_t size,
boolean_t wire)
{
typedef struct {
msg_header_t Head;
msg_type_t tokenType;
port_t token;
msg_type_t taskType;
port_t task;
msg_type_t addrType;
vm_offset_t addr;
msg_type_t sizeType;
vm_size_t size;
msg_type_t wireType;
boolean_t wire;
} Request;
typedef struct {
msg_header_t Head;
msg_type_t RetCodeType;
kern_return_t RetCode;
} Reply;
union {
Request In;
Reply Out;
} Mess;
register Request *InP = &Mess.In;
register Reply *OutP = &Mess.Out;
msg_return_t msg_result;
#if TypeCheck
boolean_t msg_simple;
#endif TypeCheck
unsigned int msg_size = 64;
#if UseStaticMsgType
static const msg_type_t tokenType = {
/* msg_type_name = */ MSG_TYPE_PORT,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0,
};
#endif UseStaticMsgType
#if UseStaticMsgType
static const msg_type_t taskType = {
/* msg_type_name = */ MSG_TYPE_PORT,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0,
};
#endif UseStaticMsgType
#if UseStaticMsgType
static const msg_type_t addrType = {
/* msg_type_name = */ MSG_TYPE_INTEGER_32,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0,
};
#endif UseStaticMsgType
#if UseStaticMsgType
static const msg_type_t sizeType = {
/* msg_type_name = */ MSG_TYPE_INTEGER_32,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0,
};
#endif UseStaticMsgType
#if UseStaticMsgType
static const msg_type_t wireType = {
/* msg_type_name = */ MSG_TYPE_BOOLEAN,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0,
};
#endif UseStaticMsgType
#if UseStaticMsgType
static const msg_type_t RetCodeCheck = {
/* msg_type_name = */ MSG_TYPE_INTEGER_32,
/* msg_type_size = */ 32,
/* msg_type_number = */ 1,
/* msg_type_inline = */ TRUE,
/* msg_type_longform = */ FALSE,
/* msg_type_deallocate = */ FALSE,
/* msg_type_unused = */ 0
};
#endif UseStaticMsgType
#if UseStaticMsgType
InP->tokenType = tokenType;
#else UseStaticMsgType
InP->tokenType.msg_type_name = MSG_TYPE_PORT;
InP->tokenType.msg_type_size = 32;
InP->tokenType.msg_type_number = 1;
InP->tokenType.msg_type_inline = TRUE;
InP->tokenType.msg_type_longform = FALSE;
InP->tokenType.msg_type_deallocate = FALSE;
#endif UseStaticMsgType
InP->token /* token */ = /* token */ token;
#if UseStaticMsgType
InP->taskType = taskType;
#else UseStaticMsgType
InP->taskType.msg_type_name = MSG_TYPE_PORT;
InP->taskType.msg_type_size = 32;
InP->taskType.msg_type_number = 1;
InP->taskType.msg_type_inline = TRUE;
InP->taskType.msg_type_longform = FALSE;
InP->taskType.msg_type_deallocate = FALSE;
#endif UseStaticMsgType
InP->task /* task */ = /* task */ task;
#if UseStaticMsgType
InP->addrType = addrType;
#else UseStaticMsgType
InP->addrType.msg_type_name = MSG_TYPE_INTEGER_32;
InP->addrType.msg_type_size = 32;
InP->addrType.msg_type_number = 1;
InP->addrType.msg_type_inline = TRUE;
InP->addrType.msg_type_longform = FALSE;
InP->addrType.msg_type_deallocate = FALSE;
#endif UseStaticMsgType
InP->addr /* addr */ = /* addr */ addr;
#if UseStaticMsgType
InP->sizeType = sizeType;
#else UseStaticMsgType
InP->sizeType.msg_type_name = MSG_TYPE_INTEGER_32;
InP->sizeType.msg_type_size = 32;
InP->sizeType.msg_type_number = 1;
InP->sizeType.msg_type_inline = TRUE;
InP->sizeType.msg_type_longform = FALSE;
InP->sizeType.msg_type_deallocate = FALSE;
#endif UseStaticMsgType
InP->size /* size */ = /* size */ size;
#if UseStaticMsgType
InP->wireType = wireType;
#else UseStaticMsgType
InP->wireType.msg_type_name = MSG_TYPE_BOOLEAN;
InP->wireType.msg_type_size = 32;
InP->wireType.msg_type_number = 1;
InP->wireType.msg_type_inline = TRUE;
InP->wireType.msg_type_longform = FALSE;
InP->wireType.msg_t
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -