下面的代码适用于调试版本,但发布时createFile2会返回错误代码87,即invalid_parameters。
路径与调试和发布版本相同。
Host_IO::FileRef fileHandle;
#ifdef WIN_UNIVERSAL_ENV
CREATEFILE2_EXTENDED_PARAMETERS params;
params.dwFileAttributes = (FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS);
params.lpSecurityAttributes = 0;
params.hTemplateFile = 0;
params.dwFileFlags = 0;
params.dwSecurityQosFlags = SECURITY_ANONYMOUS;
fileHandle = CreateFile2((LPCWSTR)wideName.data(), (GENERIC_READ | GENERIC_WRITE), 0, CREATE_ALWAYS, ¶ms);
#else
fileHandle = CreateFileW ( (LPCWSTR)wideName.data(), (GENERIC_READ | GENERIC_WRITE), 0, 0, CREATE_ALWAYS,
(FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS), 0 );
#endif
if ( fileHandle == INVALID_HANDLE_VALUE ) XMP_Throw ( "Host_IO::Create, cannot create file", kXMPErr_InternalFailure );;
CloseHandle ( fileHandle );
答案 0 :(得分:1)
CREATEFILE2_EXTENDED_PARAMETERS
以dwSize
字段开头;您必须将其正确初始化为sizeof (CREATEFILE2_EXTENDED_PARAMETERS)
,就像所有其他带有dwSize
字段的Windows API结构一样。 (你也应该对结构的其余部分进行零初始化,以保证安全。)