diff --git a/dlls/ntdll/cdrom.c b/dlls/ntdll/cdrom.c index 94faf13cd3c..43676d06631 100644 --- a/dlls/ntdll/cdrom.c +++ b/dlls/ntdll/cdrom.c @@ -81,6 +81,7 @@ # include # include # include +# include # include # define SENSEBUFLEN kSenseDefaultSize #endif @@ -1939,6 +1940,20 @@ static NTSTATUS DVD_StartSession(int fd, const DVD_SESSION_ID *sid_in, PDVD_SESS return ret; #elif defined(__FreeBSD__) || defined(__NetBSD__) return STATUS_NOT_SUPPORTED; +#elif defined(__APPLE__) + NTSTATUS ret = STATUS_NOT_SUPPORTED; + dk_dvd_report_key_t dvdrk; + DVDAuthenticationGrantIDInfo agid_info; + + dvdrk.format = kDVDKeyFormatAGID_CSS; + dvdrk.keyClass = kDVDKeyClassCSS_CPPM_CPRM; + if(sid_in) dvdrk.grantID = *(uint8_t*)sid_in; /* ? */ + dvdrk.bufferLength = sizeof(DVDAuthenticationGrantIDInfo); + dvdrk.buffer = &agid_info; + + ret = CDROM_GetStatusCode(ioctl(fd, DKIOCDVDREPORTKEY, &dvdrk)); + *sid_out = agid_info.grantID; + return ret; #else return STATUS_NOT_SUPPORTED; #endif