我正在设计一个Linux角色设备驱动程序.我想在ioctl()系统调用中发生错误时设置errno.
long my_own_ioctl(struct file *file, unsigned int req, unsigned long arg)
{
long ret = 0;
BOOL isErr = FALSE;
// some operation
// ...
if (isErr) {
// set errno
// ... <--- What should I do?
ret = -1;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能实现这一目标?提前谢谢你!
请允许我更详细地解释我的申请.
我的设备位于/ dev/myCharDev中.我的用户空间应用程序是这样的:
#define _COMMAND (1)
#define _ERROR_COMMAND_PARAMETER (-1)
int main()
{
int fd = open("/dev/myCharDec", O_RDONLY);
int errnoCopy;
if (fd) {
if (ioctl(fd, _COMMAND, _ERROR_COMMAND_PARAMETER) < 0) { // should cause error in …Run Code Online (Sandbox Code Playgroud) 我的项目中有一个应用程序(名为App_Main)。我想在App_Main包中打包另一个小应用程序(我们称之为App_Tiny)。
然后,由于我知道 App_tiny 的路径,我可以在需要时在 App_Main 的运行时以编程方式执行 App_Tiny。
我怎样才能做到这一点?如何指定和构建另一个可执行目标,最重要的是,自动将 App_Tiny 放在 App_Main 的包目录中?
我找不到有关此功能的详细说明。我现在想知道的是:
这个函数会阻塞当前线程吗?或者它只是告诉设备开始异步播放音频并立即返回?
我正在使用Samba 3.6.25工作.当我按照"smbclient"的源代码试图构建我自己的SMB服务器列表实用程序时,我遇到了一个奇怪的事情:
当我调用一个函数时,它会跳过我的第一个参数,然后用第二个参数填充它,然后第二个填充第三个参数,如下所示.
我调用该函数是:cli_rpc_pipe_open_noauth_transport()在cli_pipe.c.我在其中添加了一些调试代码:
NTSTATUS cli_rpc_pipe_open_noauth_transport(struct cli_state *cli,
enum dcerpc_transport_t transport,
const struct ndr_syntax_id *interface,
struct rpc_pipe_client **presult)
{
struct rpc_pipe_client *result;
struct pipe_auth_data *auth;
NTSTATUS status;
status = cli_rpc_pipe_open(cli, transport, interface, &result);
_DEBUG("cli = %p", cli);
_DEBUG("transport = %p", transport);
_DEBUG("interface = %p", interface);
_DEBUG("presult = %p", presult);
_DEBUG("cli->desthost = %p", cli->desthost);
_DEBUG("cli->desthost = \"%s\"", cli->desthost);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
……
Run Code Online (Sandbox Code Playgroud)
这就是我调用这个函数的方式:
NTSTATUS _pipe_open_noauth(struct cli_state *cli, const struct ndr_syntax_id *intf, struct rpc_pipe_client **presult) …Run Code Online (Sandbox Code Playgroud) 我想设计一个类似于弹出窗口的面板:当鼠标向下移动时,它可能会自行消除或隐藏.
但我不知道如何实现这一目标.我所知道的是,一个视图可以处理-mouseDown,-mouseUp等等.但是当按下鼠标在其他地方?我不知道如何抓住这个事件.
进一步讨论Bavarious:
我实际上正在研究状态栏.我跟着有一个问题.我研究的示例代码.
正如示例代码所做的那样,我覆盖了前面描述的视图并使用状态栏项的-setView:方法进行设置.我工作中的大多数代码都与示例代码完全相同.以下是我认为与我的混淆相关的代码的一些部分(使用BTW,ARC):
...
@property (nonatomic) SEL disclickAction; // Called when "dismissed"
@property (nonatomic) SEL action; // Called when selected
@property (nonatomic, assign) id target;
...
- (void)dealloc
{
NSLog(@"%@ dealloc", self);
[self invalidate];
//[super dealloc];
}
- (void)mouseDown:(NSEvent *)theEvent
{
[self setHighlighted:![self isHighlighted]];
if (_target && _action &&
[_target respondsToSelector:_action])
{
[NSApp sendAction:_action to:_target from:self];
}
}
// Here is the code that …Run Code Online (Sandbox Code Playgroud) 当我创建一个新的OS X应用程序项目时,我注意到很多目标选项让我感到非常困惑:
(1)Xcode窗口的左上角设置:

(2)"基础SDK":

(3)"部署目标":

(4)架构:

这是我的问题:
对于(2)和(3),我认为理解起来更清楚.这些是我理解的:
(2)这标识了我的发展.
(3)这标识了我的应用程序将使用的操作系统版本.
请告诉我,我是否正确......
但我无法理解(1).我只知道如果我在这里选择32位,我就无法使用ARC.
(4),它们是什么?它们代表CPU的位宽吗?(1)和(4)之间有什么区别?
我想在我的应用程序中按时运行.我首先考虑的是系统uptime.由于这看起来很难实现,我很好奇是否有一种简单有效的方法来获取应用程序的运行时间?
以毫秒或时间间隔更好的时间.
我有一个名为"Multi-Camera Supervisor"的项目.我将"MainMenu.xib"文件本地化.以下是Xcode的本地化nib文件中的菜单栏:
英文的Xib文件:

日语的Xib文件:

但是当我在Xcode中运行我的应用程序时,第一项不起作用.以下是我的应用程序运行时的菜单栏:
运行英语菜单栏:

运行日语的菜单栏

您可以看到应用程序名称仍然是"Multi-Camera Supervisor"而非LOCALIZED.
同时,Dock图标中出现的应用程序名称也未本地化.
我该怎么解决这个问题?如何不仅在主菜单中而且在Dock中本地化应用程序名称?
我可以通过其内容自动调整多行NSTextField对象吗?
例如,我想使对象的宽度固定,但其高度适合其内容.那我该如何生成布局约束呢?
当我学习Cocoa Audio Queue文档时,我在音频编解码器中遇到了几个术语.在名为AudioStreamBasicDescription的结构中定义.
以下是术语:
1.采样率
2.数据包
3.帧
4.通道
我知道sample rate和channel.我是如何被其他两个混淆的.其他两个术语是什么意思?
您也可以通过示例回答这个问题.例如,我有一个双通道PCM-16信号源,采样率为44.1kHz,这意味着每秒有2*44100 = 88200字节的PCM数据.但如何packet和frame?
提前谢谢你!
macos ×6
cocoa ×4
xcode ×4
objective-c ×3
audio ×2
assembly ×1
autolayout ×1
build ×1
c ×1
codec ×1
driver ×1
errno ×1
function ×1
ide ×1
ioctl ×1
linux ×1
localization ×1
mips ×1
nstextfield ×1
openal ×1
pcm ×1
systemtime ×1