Getting closer. + HRESULT GetPriorityRecords( + [out] WM_STREAM_PRIORITY_RECORD *arrray, + [in, out] WORD *records); + + HRESULT SetPriorityRecords( + [in] WM_STREAM_PRIORITY_RECORD *arrray, + [in] WORD records); "array" is spelled with two R's. + HRESULT ResetLoggingUrlList( ); None of the other zero-argument functions in this file have a space between the parentheses. + HRESULT SetMaxPacketSize([in] DWORD size); + HRESULT SetMinPacketSize([in] DWORD size); None of the other functions in this file have two spaces between [in] and the variable type. + HRESULT GetPlayOutputLevels( + [out, size_is( *length )] DRM_PLAY_OPL *play, + [in, out] DWORD *length, + [out] DWORD *level); + + HRESULT GetCopyOutputLevels( + [out, size_is( *length )] DRM_COPY_OPL *copy, + [in, out] DWORD *length, + [out] DWORD *compliance); Why did you name the variable "level" in the first function and "compliance" in the second? It seems like they should be the same. -Alex