sdk程序里面使用printf的问题

W1nds W1nds 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <tchar.h>
#include <stdio.h>
#include <Windows.h>

BOOL EnableShutDownPriv()
{
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tkp = {0};
if ( !OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ) {
return FALSE;
}
if ( !LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid ) ) CloseHandle( hToken );
return FALSE;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

if ( !AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL ) ) {
CloseHandle( hToken );
return FALSE;
}
return TRUE;
}
BOOL ReSetWindows(DWORD dwFlags, BOOL bForce){
//Check the param;
if ( dwFlags != EWX_LOGOFF && dwFlags != EWX_REBOOT && dwFlags != EWX_SHUTDOWN ) {
return FALSE;
}

//Get the os version;
OSVERSIONINFO osvi = {0};
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if ( !GetVersionEx(&osvi) ) {
return FALSE;
}
if ( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT ) {//在NT或是NT之上的系统需要权限的提升
EnableShutDownPriv();
}
dwFlags |= (bForce != FALSE) ? EWX_FORCE : EWX_FORCEIFHUNG;
return ExitWindowsEx(dwFlags, 0);
}

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
if ( _tcscmp(lpCmdLine, _T("/r")) == 0 ) {
ReSetWindows(EWX_REBOOT, FALSE);
}else if ( _tcscmp(lpCmdLine, _T("/s")) == 0 ) {
ReSetWindows(EWX_SHUTDOWN, FALSE);
}else if ( _tcscmp(lpCmdLine, _T("/l")) == 0 ) {
ReSetWindows(EWX_LOGOFF, FALSE);
}else if ( _tcscmp(lpCmdLine, _T("/p")) == 0)
{
printf("test");
}
else printf("参数错误!\n/r:重新启动 \n/s:关机\n/l:注销");
return 0;
}
/p无反应
是否是SDK程序不能直接使用printf?
...全文

相关推荐

ZYNQ PS Hello World实战:从Vivado配置到串口输出

在嵌入式开发中,SoC(片上系统)的概念越来越常见,它将处理器核心与可编程逻辑集成在同一颗芯片上。ZYNQ-7000就是这样一款典型芯片,其PS部分集成了一颗双核ARM Cortex-A9处理器,而PL部分则是传统FPGA逻辑。很多初学者误以为ZYNQ只是FPGA,实际上,要想真正用好ZYNQ,首先得让ARM核跑起来。而“Hello World”正是验证ARM核能否正常工作的最小程序——它虽然只是一行串口输出,但背后涉及DDR初始化、UART配置、FSBL启动流程、JTAG下载和串口调试等完整链路。理解这条

白条说再来一碗

ZYNQ开发系列——SDK输出串口选择以及打印函数print、printf、xil_printf的差别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列——SDK输出串口选择以及打印函数print、printf、xil_printf的差别前言两个串口到底是谁在打印?print 和 printf 和 xil_printf 前言 在最初的helloworld工程中,我们实现了通过串口每个1秒钟打印一次Hello World。 #include "platform.h" #include "xil_printf.h" int main() { init_platf.

FPGA十年老鸟

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

Helloworld188888

嵌入式系统SDK移植:Printf调试实践指南

在深入了解自定义printf函数的实现之前,首先需要对标准C库中的printf函数有一个基本的理解。printf函数是用于格式化输出的一个标准C库函数,其核心机制涉及到格式字符串的解析和参数的输出。当调用printf时,函数会遍历格式字符串,识别并处理其中的格式说明符,如%d%s%f等。对于每一个说明符,printf会从参数列表中取出相应的参数,并根据格式说明符指定的方式进行格式化输出。例如,%d表示输出一个整数,%s表示输出一个字符串。在内部,printf。

车英赫

【JokerのKintex7325】SDK程序从QSPI启动过慢分析。

软件环境:vivado 2018.1 硬件平台:XC7K325 接上篇文章最后的问题,microblaze的lwip工程从qspi启动需要7、8分钟,时间过长的问题排查感觉可以从以下几个方面入手 1.首先,工程是可以正常使用,正常网络通讯的,这样的话,工程通常可以认为是没有问题的,那么,提高或者降低系统的时钟频率,是否对启动时间有影响,如果时间过长的问题是因为时钟频率不够,那么...

Joker_是小王。
评论 3
收藏 已收藏
分享
返回顶部
W1nds
其它技术问题 3,881 成员 9,044 内容