示例代码:

// 提取资源文件
BOOL ExtraceResourceFile(uint16_t resource_id, const TCHAR* output_file, TCHAR* type)
{
    HANDLE hFile = NULL;
    HANDLE hFilemap = NULL;
    BOOL bRet = FALSE;
    do
    {
        HINSTANCE hInstance = ::GetModuleHandleW(nullptr);
        HRSRC hResource = FindResource(hInstance, MAKEINTRESOURCE(resource_id), type);
        if (hResource == nullptr)
        {
            break;
        }
        HGLOBAL hFileResource = LoadResource(nullptr, hResource);
        if (hFileResource == nullptr)
        {
            break;
        }
        LPVOID lpFile = LockResource(hFileResource);
        if (lpFile == nullptr)
        {
            break;
        }
        uint32_t dwSize = SizeofResource(nullptr, hResource);
        if (dwSize <= 0)
        {
            break;
        }

        hFile = CreateFile((LPCSTR)output_file, GENERIC_READ  GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
        if (hFile == INVALID_HANDLE_VALUE)
        {
            break;
        }
        HANDLE hFilemap = CreateFileMapping(hFile, nullptr, PAGE_READWRITE, 0, dwSize, nullptr);
        if (hFilemap == NULL)
        {
            break;
        }
        LPVOID lpBaseAddress = MapViewOfFile(hFilemap, FILE_MAP_WRITE, 0, 0, 0);
        if (lpBaseAddress == NULL)
        {
            break;
        }
        CopyMemory(lpBaseAddress, lpFile, dwSize);
        UnmapViewOfFile(lpBaseAddress);
        bRet = TRUE;
    } while (0);

    if (hFilemap != NULL)
    {
        CloseHandle(hFilemap);
    }
    if (hFile != INVALID_HANDLE_VALUE && hFile != NULL)
    {
        CloseHandle(hFile);
    }
    return bRet;
}

使用方式:

// 写出资源文件
ExtraceResourceFile(IDR_AIR21, strAir2DllPath.GetString(), "AIR2");

资源如图所示存放:
kv24ffk4.png