1

を使用してファイルをクラウドサービスにアップロードしようとしていますがwinhttp、以下のコードを実行した後、同じファイルにアクセスできなくなりました。プログラムがファイルハンドルを適切に閉じていないようです。

HANDLE hFile = CreateFileW(MultiByteToWideChar(filePath), GENERIC_READ, FILE_SHARE_READ+FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwFileSize = GetFileSize(hFile, NULL);
HANDLE hFileMappingObject = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, dwFileSize, NULL);
HANDLE file = MapViewOfFile(hFileMappingObject, FILE_MAP_READ, 0, 0, 0);

bool result = WinHttpSendRequest( hRequest, 
                                    WINHTTP_NO_ADDITIONAL_HEADERS,
                                    0, WINHTTP_NO_REQUEST_DATA, 0, 
                                    dwFileSize, 0);

result = WinHttpWriteData( hRequest, file, dwFileSize, &dwBytesWritten);

FlushViewOfFile(file, dwFileSize);
FlushFileBuffers(hFile);
UnmapViewOfFile(file);
CloseHandle(hFileMappingObject);
CloseHandle(hFile);
4

0 に答える 0