Re: dpnet: Implement IDirectPlay8Address GetComponentByName (try 2 - resend)
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 2014-10-29 05:26, schrieb Alistair Leslie-Hughes:
+ switch (entry->type) + { + case DPNA_DATATYPE_DWORD: + memcpy(pvBuffer, &entry->data.value, sizeof(DWORD)); + break; + case DPNA_DATATYPE_GUID: + memcpy(pvBuffer, &entry->data.guid, sizeof(GUID)); + break; + case DPNA_DATATYPE_STRING: + memcpy(pvBuffer, &entry->data.string, entry->size); + break; + case DPNA_DATATYPE_STRING_ANSI: + memcpy(pvBuffer, &entry->data.ansi, entry->size); + break; + case DPNA_DATATYPE_BINARY: + memcpy(pvBuffer, &entry->data.binary, entry->size); + break; + } Using assignments like in AddComponent would be nicer.
Since you're replacing everything but the function declaration you can rename the parameter names to get rid of the lpFoo names. The string types need some tests for the terminating 0 character. AddComponent currently does not check if the string length matches the input size. (It doesn't overflow though since it allocates according to the string length.)
+ size = sizeof(GUID)-1; + hr = IDirectPlay8Address_GetComponentByName(localaddr, UNKNOWN, &compguid, &size, &type); + ok(hr == DPNERR_BUFFERTOOSMALL, "got 0x%08x\n", hr); + ok(size == sizeof(GUID), "got %d expected %d\n", size, sizeof(GUID)); Does it return DPNERR_BUFFERTOSMALL if pvBuffer is NULL? The d3d private data API returns D3D_OK in this case. This is worth a check.
Does GetComponentByName correct the size downward when *pdwBufferSize
size? Also test this with pvBuffer != NULL
Your implementation suggests pdwDataType is only set if the buffer has an appropriate size. Is this the case? -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBAgAGBQJUUPfSAAoJEN0/YqbEcdMwlBoP/jL3jPsPavfF4iQEr/fKe5y3 HLT67L/yqgriTCo4soOECoa+9fh9+8YFvBKrDvN7ISpZyni+paK38kxifAtwR0Xl QB7yrk3x+TVvIy8f3+QxwbqI7b/CX6AxEYcXG7Y30QNZchw+qN396HOs8XPU+HCG umYrNcnknizbASMQwkl0vaoZgun0JJP3L1jSEFnuLSZkl3f9CTIq5exS3q+ndqn7 0P0iqvo1CI1Pry/5qQGCYYxKqoFRfrqKbF0q1kGcImnwjpz211iuEQyVo23UICVI 0iMX1X2KueFQ4r9QrzRJmo+/8H5PpKsEQrWlhdBZyhhOX6m3BMxOrQK9/7OIzpua l8cYkrKpLCgMsvhF5hZchX1CY5ZomFdhOjFAQldYCpSVHuupnFqOPXx2qqmjGzU3 38h/liv4VgHLvpckLgvjsD8SGqtkBH/nk4WTk50fzWupegtLqnQ1gxILTNuh+e9Y kX4PWcMbbMQ6t1rjrdjBz4hDX/wAF44vx4NDLnht59aV3of9xtKfVWW8SFV9il40 2WDPhHESojF8BU/Nt/qx70YokSPIqpmwXdg1RQPXi5FNj2W5uqZoGCxCTeFfnY60 a68+EOaZaQhdSW5VSjGGWprs9jfBN4wB5SPoUU24adu5ygjcUsGj3IHj9H6ssBPN vwscAjUYyZDTzkgRQYAE =OHT3 -----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 2014-10-29 15:21, schrieb Stefan Dösinger:
Am 2014-10-29 05:26, schrieb Alistair Leslie-Hughes:
+ switch (entry->type) + { + case DPNA_DATATYPE_DWORD: + memcpy(pvBuffer, &entry->data.value, sizeof(DWORD)); + break; + My apologies for the quote mess, I forgot to turn off Thunderbird's line breaks :-(
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBAgAGBQJUUPmoAAoJEN0/YqbEcdMwVZQP/3CSLr4GfFhk3ug3pXPPcl0r wES3ThPr4MKNaFgaMirV9YCBFmgH4zXgXFqov8Ckt22u+x5vdcya7ycvEkFG0ssy ppETl88BvWnRyTbT3q/OOH7hAcMSUyngCvauV7gya4wv2NFoZUR8wsTy/53jAgrM iQRpPBIUwq0HbbZ8we9FWkfUwsSFOVVzFb88ifjCv+PQHEwG5VQmG9nZD6e8qP1W JJTWa+zUcN4ppxRKRe1Mq77mEoJLOOBtepIK3XR41ldu2p3Z6A/p2uM3nV/DZ5k8 CP5oJzDm0mHxszV75qYPu3dzOig9n5l77Eb8WOMrZ49VPViDEMkbsVDOetawyJS4 6t0ypAsncMFKHW2/Ydosaxufo1F1aXpstYRQXG3+9vBZwhbvrPGXuI5QLTRhpZYA TYjCmb3af+lV7FtAbKyusDVqrVx07KXuwx9y//VWGpYVCWqhsSvUAjNdi84uGVyP J65cwU/Hm6lHgjxKsZtBhRgzE+5r16rY7S1+Ve3bL3D0BQ+5THHXft9wzUqWTgcM k/pg2CtVfJRRc2Z9LaEXL7n9m031VUF62stibDlM0NxWuKbY/Pv+KqiebFU9fh79 ESFA1CDwth7hpe9h83oR6urDEwK+zytVZE15U5HkmmWMmmCyeJnQ7DFQ30dCB7iW 27i/raPQHGtDlA4AyjVt =X6kF -----END PGP SIGNATURE-----
participants (1)
-
Stefan Dösinger