I finally got SGX enabled according to the Cyberlink Ultra HD Blu-Ray Advisor, which a royal pain the butt, so I thought I'd document how I did it here.
I have an ASUS ROG STRIX Z270E motherboard with an Intel Core i7 7700k processor, which both support SGX, but in the BIOS settings, your only options are Disabled, and Software Controlled (defaulting to the latter). The Intel tool listed in this thread and the Cyberlink tool were both saying SGX disabled. According to
https://software.intel.com/en-us/ar...oftware-guard-extensions-in-your-applications Software Controlled means that a Windows app using the Intel SGX SDK needs to call some special function to enable it. Okay, but what software? Googling doesn't find any, so I decide I'll have to download the (free) SDK and find some sample code or something. I register for the SDK, and try to install the PNW piece of it, which seems to be the distributable that software the uses SGX should install on end user machines, and contains the DLL my first reference said has the function for enabling it. What the heck!? A bit more digging, and I find an sgx_capable.dll and header file that you're supposed to package with your installer, and not even install the PNW if SGX isn't available. Ok, so, I can link against this, and use the following code:
Code:
sgx_status_t status;
sgx_device_status_t device_status;
int capable;
status = sgx_is_capable(&capable);
status = sgx_cap_enable_device(&device_status);
status keeps returning success, with capable saying false, and device status giving me error SGX_DISABLED_LEGACY_OS, /* SGX is disabled and a Software Control Interface is not available to enable it */. Seriously? I have Windows 10 x64, on a brand new CPU and mobo! A bit more googling - I install the latest Intel Management Engine (which may or may not be required to enable or use SGX), and that didn't help. Finally a find a hint that the API to enable SGX requires EFI. Bingo!! I haven't done a fresh install of Windows in over a decade (seriously! this computer started as Windows Vista). Search for a tutorial to convert from MBR to GPT and enable EFI booting, which went off without a hitch. The Cyberlink tool still says no SGX, so I run my code. At first I got a different error (can't remember which, but it was obvious I needed to run it as admin). Try again... this time capable returns true! And the device_status is SGX_DISABLED_REBOOT_REQUIRED. Reboot, and no the Cyberlink tool is happy with my SGX!! Success!
So, tl;dr: if your BIOS doesn't let you force enable SGX (and maybe even if it does?) you need to boot via EFI, and enable SGX via special software. How a mere mortal consumer is supposed to figure that out is beyond me.
Oh, and for those suggesting AnyDVD just trick Cyberlink by setting a flag that SGX exists... that's not going to work. It's kind of a whole runtime environment that PDVD is using to decrypt stuff under. AnyDVD would have to implement an entire SGX simulator (one actually comes with the SGX SDK, but I don't know how complete it is), and convince PDVD to use it rather than the real SDK.
Anyhow, for me, I just need an HDCP 2.2 connection (my mobo only does HDMI 1.4 on the HDMI output, so I ordered a proper DisplayPort 1.2 to HDMI 2.0a active converter, since I'm pretty sure the DisplayPort output supports HDCP 2.2), and hope for a firmware update to my LG SVC50 drive, or order the panny, or wait for a US release of one that will work. I also really hope the HDCP 2.2 is just a soft requirement, and that it will let me watch UHD discs on a 1080p display with current gen HDCP by downconverting, like a hardware UHD player would do.