【发布时间】:2017-06-16 08:31:28
【问题描述】:
好的,我的程序有问题。我之前提出过一个问题,但没有人真正理解我的问题,所以这次我尝试了一种新的方法。
如果你好奇这是我的问题:
我的程序接受
char* argv[]形式的参数,我无法使用LPWSTR指向argv[1]上的任何内容,因为它只指向const wchar_t*对象。
这是我试图解决我的问题的新事物(我尝试了多种方法,但我需要知道如何做我的想法,或者如果可能的话)
基本上,我的想法是 #define 某种函数,它采用 argv[1] 上的任何内容,并使用该值定义一个 const wchar_t*。
类似这样的:
#define path ((const wchar_t*)argv[1])
我不确定这是做我想做的事情的正确方法(或者即使这是可能的)......
如果您有更好的方法来解决我的问题,请(请)告诉我如何解决并帮助我,我已经考虑这个问题很久了!
我的程序说明:
我正在制作一个接收参数的程序。参数是驱动器的名称,例如“F:”。然后它使用带有驱动器号的函数
CreateFile。如果你去here,看到函数的第一个参数,我想你会明白我的意思......问题是我要制作一个LPWSTR,我需要一个const wchat_t *对象...... . 我希望这次我的问题很清楚,上次人们并没有真正理解我在做什么。
无论如何,谢谢! 编辑 1:这里是我的程序的求解行(这是我必须做的工作,没有参数)(我在这里使用了一个固定值)
int main()
{
HANDLE device;
device = CreateFile(L"\\\\.\\F:", // Drive to open
GENERIC_READ | GENERIC_WRITE, // Access mode
FILE_SHARE_READ | FILE_SHARE_WRITE, // Share Mode
NULL, // Security Descriptor
OPEN_EXISTING, // How to create
0, // File attributes
NULL);
}
这是带参数的(不起作用)
int main(int argc, char* argv[])
{
HANDLE device;
device = CreateFile(argv[1], // Drive to open
GENERIC_READ | GENERIC_WRITE, // Access mode
FILE_SHARE_READ | FILE_SHARE_WRITE, // Share Mode
NULL, // Security Descriptor
OPEN_EXISTING, // How to create
0, // File attributes
NULL); // Handle to template
}
^ 这显示了我想要做什么
编辑 2:我将 CreateFile 更改为 CreateFileA,这是它给我的 eroor 代码(驱动器 D 是 USB,它不是硬盘驱动器)
因此,除非我输入错误的路径来输入路径,否则它总是会给我错误。我想我会尝试另一种方法来解决问题,或者如果有人知道为什么会发生错误,请告诉!
【问题讨论】:
-
你能发布一些你的程序的代码吗?我认为这只是您的主要功能的前几行。
-
@kennyzx 当然,编辑不好
-
也许宏不是最好的方法stackoverflow.com/questions/14041453/…
标签: c++ constants createfile lpwstr