簡體   English   中英

C/C++ CreateFileA 失敗

[英]C/C++ CreateFileA fails

我正在嘗試制作一個圖像查看器,當我對文件的路徑進行硬編碼時一切正常,但是當我嘗試獲取路徑以便我可以用它打開文件時,它不起作用,沒有任何反應。

調試時,我發現CreateFileA返回INVALID_HANDLE_VALUE

這讓我相信錯誤應該在這兩行代碼中。

LPSTR FileA = GetCommandLine();
HANDLE FileHandle = CreateFileA(FileA, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

CreateFileA()在失敗時返回INVALID_HANDLE_VALUE時,使用GetLastError()找出失敗的原因。 但在這種情況下, GetCommandLine()可能不會返回您期望的路徑。

假設實際上是在調用 Win32 GetCommandLineA() function,而不是程序中的其他一些 function,那么 function 返回用於啟動調用進程的命令行,即"C:\<path>\myapp.exe <parameters>" 如果不存在<parameters> ,那么您將嘗試打開您自己程序的 EXE,而不是圖像文件。 如果存在<parameters> ,那么您將向CreateFileA()傳遞無效的文件路徑。

您需要解析命令行以提取您真正想要的文件路徑,然后您可以嘗試在該路徑打開文件。 查看解析 C 命令行 Arguments解析 C++ 命令行 Arguments 考慮使用CommandLineToArgvW()來簡化操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM