Faits :
A.
A.a. X._ SA est une société ayant pour but l'exploitation d'une clinique, qui met son infrastructure opératoire et hospitalière à disposition des différents médecins agréés qui y opèrent.
Le 31 janvier 2011, A._ a subi, dans les locaux de X._ SA, une intervention chirurgicale pratiquée par B._, en raison de lésions précancéreuses dans la région antérieure sus-glotique.
Au cours de l'intervention, de l'acide acétique puis du bleu de toluidine ont été appliqués selon le protocole habituel pour le marquage des lésions. Un traitement a ensuite été vaporisé sur les zones bleues positives. L'opération s'est déroulée sans problème particulier. Après l'extubation de A._, ce dernier a eu de la difficulté à respirer. De fortes doses de médicaments lui ont été administrées. Après une nuit aux soins continus de la clinique et une matinée d'observation et de soins rapprochés, le prénommé a été transféré aux Hôpitaux C._ pour une prise en charge ventilatoire, avec intubation.
Le 25 avril 2012, A._ a déposé plainte pénale contre X._ SA pour tentative de meurtre par dol éventuel, voire lésions corporelles graves. Il a exposé qu'ensuite de son transfert aux Hôpitaux C._, il était resté dans le coma du 2 au 22 février 2011, que son pronostic vital avait été engagé et qu'il n'avait pu rentrer chez lui que le 2 mars 2011, après un nouveau séjour en clinique. Durant cette période, il avait subi un grand nombre d'examens et d'interventions chirurgicales, afin de déterminer la cause des complications.
A.b. L'enquête ouverte par le ministère public à la suite de cette plainte a permis d'établir que la cause des lésions subies par A._ était l'utilisation d'acide acétique concentré à 98%, dont une bouteille avait, par erreur, été livrée par l'officine de la Pharmacie D._ SA en lieu et place d'une bouteille d'acide acétique dilué à 3% puis, toujours par erreur, été rangée dans la pharmacie du bloc opératoire.
A.c. Une instruction a été ouverte contre X._ SA et B._ pour violation des art. 125 et 128 CP.
Une instruction a par ailleurs été ouverte contre E._, F._, G._ et H._ pour infraction à l'<ref-law>.
Une instruction a encore été ouverte contre I._ et Pharmacie D._ SA.
A.d. Par actes d'accusation du 28 juillet 2017, le ministère public a renvoyé en jugement, d'une part, B._ et, d'autre part, G._, subsidiairement X._ SA, pour lésions corporelles graves par négligence.
Par jugement du 29 novembre 2017, le Tribunal de police genevois a acquitté B._ et X._ SA. Il a condamné G._ pour lésions corporelles graves par négligence. Ce jugement fait l'objet d'appels devant la Chambre pénale d'appel et de révision de la Cour de justice genevoise.
B.
Par ordonnances du 28 juillet 2017, le ministère public a classé la procédure portant sur l'infraction d'omission de prêter secours reprochée à X._ SA et B._.
Le 10 août 2017, A._ a recouru contre les ordonnances du 28 juillet 2017 en tant qu'elles portaient sur le classement de la procédure, s'agissant des faits relatifs à l'infraction d'omission de prêter secours reprochée à X._ SA et B._.
Le 28 août 2017, A._ a en outre recouru contre la "décision" du ministère public datée du 16 août 2017, soit un courrier de réponse à une missive qu'il avait adressée à cette autorité le 9 août 2017.
Le même jour, A._ a enfin formé un recours pour déni de justice, reprochant au ministère public de n'avoir pas rendu de décision formelle à la suite de sa demande de "mise en prévention" de J._, K._, L._ et M._.
Par arrêt du 8 décembre 2017, la Chambre pénale de recours de la Cour de justice genevoise a déclaré irrecevable le recours formé contre la lettre du ministère public du 16 août 2017, a rejeté les recours formés contre les ordonnances de classement partiel du 28 juillet 2017 et pour déni de justice.
C.
A._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt du 8 décembre 2017, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens que X._ SA et B._ sont renvoyés en jugement pour les faits décrits dans les ordonnances de classement partiel du 28 juillet 2017, respectivement pour tentative de meurtre, que la nullité de la décision du ministère public du 16 août 2017 est constatée, qu'un déni de justice pour absence de décision ensuite de la demande de prévention complémentaire est constaté, que le ministère public doit rendre une décision formelle concernant la demande de mise en prévention à l'encontre de X._ SA, B._, Pharmacie D._ SA, E._, H._, J._, K._, L._ et M._. Subsidiairement, il conclut à son annulation et au renvoi de la cause à l'autorité cantonale pour nouvelle décision. Plus subsidiairement, il conclut à être "achemin [é] [...] à prouver par toutes voies de droit utiles les faits allégués dans le présent recours". Il sollicite par ailleurs le bénéfice de l'assistance judiciaire.
Par ordonnance du 4 septembre 2018, le Tribunal fédéral a rejeté la demande d'assistance judiciaire formée par A._.
Par ordonnance du 18 octobre 2018, il a en outre rejeté la demande de reconsidération formée par le prénommé à cet égard.

Considérant en droit :
1.
1.1. Conformément à l'art. 81 al. 1 let. a et b ch. 5 LTF, la partie plaignante qui a participé à la procédure de dernière instance cantonale est habilitée à recourir au Tribunal fédéral, si la décision attaquée peut avoir des effets sur le jugement de ses prétentions civiles. Constituent de telles prétentions celles qui sont fondées sur le droit civil et doivent en conséquence être déduites ordinairement devant les tribunaux civils. Il s'agit principalement des prétentions en réparation du dommage et du tort moral au sens des <ref-law> (<ref-ruling> consid. 1.1 p. 4). En vertu de l'<ref-law>, il incombe à la partie recourante d'alléguer les faits qu'elle considère comme propres à fonder sa qualité pour recourir. Lorsque le recours est dirigé contre une décision de non-entrée en matière ou de classement de l'action pénale, la partie plaignante n'a pas nécessairement déjà pris des conclusions civiles. Quand bien même elle aurait déjà déclaré des conclusions civiles (cf. <ref-law>), il n'en reste pas moins que le ministère public qui refuse d'entrer en matière ou prononce un classement n'a pas à statuer sur l'aspect civil (cf. <ref-law>). Dans tous les cas, il incombe par conséquent à la partie plaignante d'expliquer dans son mémoire au Tribunal fédéral quelles prétentions civiles elle entend faire valoir contre l'intimé. Comme il n'appartient pas à la partie plaignante de se substituer au ministère public ou d'assouvir une soif de vengeance, la jurisprudence entend se montrer restrictive et stricte, de sorte que le Tribunal fédéral n'entre en matière que s'il ressort de façon suffisamment précise de la motivation du recours que les conditions précitées sont réalisées, à moins que l'on puisse le déduire directement et sans ambiguïté compte tenu notamment de la nature de l'infraction alléguée (<ref-ruling> consid. 1.1 p. 4 s.). Si la partie plaignante se plaint d'infractions distinctes, elle doit mentionner, par rapport à chacune d'elles, en quoi consiste son dommage (arrêts 6B_875/2018 du 15 novembre 2018 consid. 1; 6B_635/2018 du 24 octobre 2018 consid. 1.1.1).
1.2. Le recourant conteste notamment le classement partiel de la procédure concernant X._ SA et B._. A propos de sa qualité pour recourir au Tribunal fédéral, il se contente d'affirmer avoir un intérêt juridique à contester l'arrêt attaqué et à ce que X._ SA et B._ soient renvoyés en jugement "pour les faits présentés dans l'arrêt du 8 décembre 2017", sans fournir la moindre explication relative à l'influence de la décision sur le jugement de ses prétentions civiles.
Or, il ressort de l'arrêt attaqué que B._ et G._ - responsable de la réception des produits à la pharmacie du bloc opératoire -, subsidiairement X._ SA selon l'<ref-law>, ont été - le 28 juillet 2017 - renvoyés en jugement pour lésions corporelles graves par négligence. Le recourant n'expose aucunement quelles prétentions civiles il pourrait faire valoir contre B._ et X._ SA, ni surtout en quoi celles-ci pourraient être spécifiquement fondées sur l'infraction d'omission de prêter secours - ayant fait l'objet du classement litigieux - et distinctes de celles découlant d'une infraction de lésions corporelles graves par négligence.
Par ailleurs, le recourant a conclu avec X._ SA une convention datée du 6 mai 2011, par laquelle cette société a, ensuite de l'opération du 31 janvier 2011, reconnu lui devoir un montant unique de 1'500'000 fr. pour solde de tout compte, moyennant quoi l'intéressé renonçait "à toute prétention contre [X._ SA], quelle que soit l'évolution de son état médical ou de sa situation professionnelle, y compris à raison d'éléments nouveaux ou imprévus", les effets de cette convention valant "pour toutes les personnes qui pourraient être tenues responsables du dommage subi par [le recourant] qui, en conséquence, s'engage à ne pas faire valoir de prétentions contre elles". Dans son recours au Tribunal fédéral, le recourant n'explique nullement dans quelle mesure il pourrait encore, nonobstant la convention précitée et la somme de 1'500'000 fr. qu'il admet avoir reçue, faire valoir d'éventuelles prétentions civiles supplémentaires à l'encontre de B._ et X._ SA.
Compte tenu de ce qui précède, à défaut d'une motivation suffisante en la matière, le recourant n'a pas la qualité pour recourir sur le fond de la cause s'agissant du classement partiel ordonné en faveur de B._ et X._ SA.
Au demeurant, dès lors que B._, X._ SA et G._ ont déjà été jugés en première instance en raison des événements du 31 janvier 2011 et qu'une procédure d'appel est actuellement pendante, il n'appartient plus au ministère public d'engager l'accusation pour de nouvelles infractions, seul le tribunal saisi de la cause pouvant, le cas échéant, demander une modification de l'accusation (cf. <ref-law>) ou s'écarter de l'appréciation juridique que porte le ministère public sur l'état de fait dans l'acte d'accusation (cf. <ref-law>).
1.3. Indépendamment des conditions posées par l'art. 81 al. 1 let. b ch. 5 LTF, le recourant est aussi habilité à se plaindre d'une violation de ses droits de partie équivalant à un déni de justice formel, sans toutefois pouvoir faire valoir par ce biais, même indirectement, des moyens qui ne peuvent pas être séparés du fond (<ref-ruling> consid. 1.1 p. 5).
En l'espèce, le recourant se plaint d'une violation de son droit d'être entendu s'agissant des considérations développées par la cour cantonale à propos de l'éventuelle commission d'une infraction à l'<ref-law> par B._ et X._ SA. Ce grief peut être entièrement séparé du fond, de sorte qu'il convient d'entrer en matière sur ce point (cf. consid. 2 infra).
2.
Le recourant se plaint d'une violation de son droit d'être entendu (art. 29 al. 2 Cst.) ainsi que du droit à un procès équitable (art. 29 al. 1 Cst. et 6 par. 1 CEDH), dès lors que l'arrêt attaqué aborde la question de la réalisation d'une infraction à l'<ref-law> sans qu'il n'eût été invité à s'exprimer sur ce point.
Dans les recours adressés à l'autorité précédente, le recourant a notamment conclu à la mise en accusation de B._ et de X._ SA pour tentative de meurtre par omission et par dol éventuel "concernant les faits décrits dans l'ordonnance de classement partiel du 28 juillet 2017". La cour cantonale a exposé, dans l'arrêt attaqué, les motifs pour lesquels une telle infraction ne pouvait être reprochée à B._ et X._ SA. Cette argumentation était cependant superflue. En effet, B._ et X._ SA ont été renvoyés en jugement pour lésions corporelles graves par négligence. Si le recourant estime que ceux-ci ont, sur la base des faits qui leur sont reprochés, également commis une infraction à l'<ref-law>, il peut tout au plus le plaider devant l'autorité de jugement, laquelle n'est pas liée par l'appréciation juridique du ministère public (cf. <ref-law>). L'autorité précédente, saisie d'un recours dirigé contre des ordonnances de classement partiel concernant une omission de prêter secours, ne pouvait quant à elle se prononcer sur la qualification juridique des faits pour lesquels les intéressés ont été renvoyés en jugement. Partant, une éventuelle violation du droit d'être entendu du recourant serait, à cet égard, sans conséquence.
3.
Le recourant reproche à la cour cantonale d'avoir violé l'<ref-law> en déclarant irrecevable son recours dirigé contre la "décision" du ministère public du 16 août 2017.
La cour cantonale a considéré que le courrier en question ne constituait pas une décision formelle, susceptible d'un recours, dès lors que le ministère public se bornait à y relever avoir déjà répondu aux requêtes du recourant et ne pas avoir l'intention de revenir sur sa position. Il ne s'agissait pas d'un prononcé incident - susceptible de faire avancer la procédure - ni d'un prononcé de clôture mettant un terme à celle-ci.
Le recourant estime quant à lui que le courrier du 16 août 2017 constituerait une ordonnance de non-entrée en matière concernant J._, L._, M._ et K._. Or, cette correspondance renvoie le recourant à divers actes antérieurs de la procédure. Elle ne mentionne aucun des prénommés ni n'aborde les faits qui auraient pu leur être reprochés. Le ministère public y signale seulement avoir, lors de l'audience du 29 mars 2017, indiqué dans le procès-verbal "quelles charges il retenait et contre quelles personnes et entités, répondant ainsi [aux demandes du recourant] de mises en prévention supplémentaires pour tentative de meurtre par dol éventuel". Le courrier concerné ne répond aucunement aux exigences formelles d'une décision de classement ou de non-entrée en matière (cf. <ref-ruling> consid. 2.5 p. 245). Le recourant prétend d'ailleurs également, dans son recours au Tribunal fédéral, que le ministère public n'aurait jamais, à ce jour, rendu de décision concernant l'ouverture d'une instruction pénale à l'encontre des prénommés.
On voit ainsi mal dans quelle mesure le courrier du 16 août 2017 aurait pu constituer une ordonnance au sens de l'<ref-law>, un refus d'entrer en matière concernant des infractions reprochées aux différents individus susmentionnés n'en ressortant pas. C'est donc sans violer l'<ref-law> que la cour cantonale a déclaré irrecevable le recours formé contre cette correspondance.
4.
Le recourant se plaint encore d'un déni de justice (art. 29 al. 1 Cst.). Il reproche en réalité à la cour cantonale d'avoir considéré que, par courrier du 31 janvier 2017, le ministère public avait déjà refusé la "mise en prévention" de J._, L._, M._ et K._.
Le courrier du ministère public en question ne comprend pas davantage les caractéristiques d'une décision de classement ou de non-entrée en matière que celui du 16 août 2017 (cf. consid. 3 supra). Il ne mentionne aucun des prénommés et annonce seulement au recourant que le ministère public n'entend pas procéder à de nouvelles "mises en prévention", sans préciser quels faits et infractions seraient concernés. On ne saurait, partant, considérer que celui-ci aurait constitué une ordonnance de non-entrée en matière concernant J._, L._, M._ et K._. Le ministère public lui-même ne paraît pas avoir estimé qu'il avait, par le courrier du 31 janvier 2017, refusé d'entrer en matière sur les agissements de J._, L._, M._ et K._ dénoncés par le recourant, puisque, dans son envoi du 16 août 2017, il ne s'est nullement référé à cette missive - à propos des "demandes de mises en prévention supplémentaires" - mais au procès-verbal d'une audience tenue le 29 mars 2017.
En définitive, ni le courrier du ministère public du 16 août 2017 ni celui du 31 janvier 2017 ne peut être considéré comme une ordonnance relative au refus d'entrer en matière, respectivement au classement de la procédure s'agissant de J._, L._, M._ et K._. Dès lors que les prénommés ont été auditionnés par le ministère public en cours d'enquête, on ignore si et dans quelle mesure une non-entrée en matière concernant les agissements dénoncés par le recourant est encore envisageable à leur endroit (cf. arrêt 6B_940/2016 du 6 juillet 2017 consid. 3.3.2). Le recours doit ainsi être admis sur ce point, l'arrêt attaqué annulé et la cause renvoyée à l'autorité cantonale afin que celle-ci rende, s'agissant des faits reprochés par le recourant aux quatre intéressés, une ordonnance de non-entrée en matière, respectivement une ordonnance de classement, de manière à ce que celui-ci puisse, le cas échéant, exercer le droit de recours prévu par l'<ref-law>.
5.
Il résulte de ce qui précède que le recours doit être partiellement admis (cf. consid. 4 supra), l'arrêt attaqué annulé et la cause renvoyée à l'autorité cantonale pour nouvelle décision. Pour le reste, le recours doit être rejeté dans la mesure où il est recevable.
Le recourant, qui n'obtient que partiellement gain de cause, supporte une partie des frais judiciaires (<ref-law>). Il peut prétendre à des dépens réduits, à la charge du canton de Genève (<ref-law>).
Dès lors que l'admission partielle du recours porte sur un point purement procédural, sans que le Tribunal fédéral ne traite la cause au fond, il peut être procédé au renvoi sans ordonner préalablement un échange d'écritures (cf. <ref-ruling> consid. 3.4.2 p. 296).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est partiellement admis. L'arrêt attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision. Pour le surplus, le recours est rejeté dans la mesure où il est recevable.
2.
Une partie des frais judiciaires, arrêtée à 2'000 fr., est mise à la charge du recourant.
3.
Le canton de Genève versera au recourant une indemnité de 1'000 fr. à titre de dépens réduits pour la procédure devant le Tribunal fédéral.
4.
Le présent arrêt est communiqué aux parties et à la Cour de justice de la République et canton de Genève, Chambre pénale de recours.
Lausanne, le 19 décembre 2018
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa